Imagine you are using a resource intensive application like Photoshop and you have 4 mainstream PC’s in your department. If you have ever been in the design or media industry, you are familiar with the fact that each department or office, usually the newest and most powerful PC is used for the high-end Photoshop work and the other machines are older, slower ones for typesetting, vector illustrations and other less resource-hungry applications. Sometimes that “blessed” machine is a high-end Wintel machine, or maybe a high-end Mac or SGI machine.
However, no matter how fast and capable your machine might be, there will be times when you are waiting for your application to finish a certain task like saving a large file, rendering or other bandwidth intensive task.
The inaccessibility of the classic solution
Technically the only way to reduce this delay is adding extra resources to the machine, or using grid/clustering technologies for using other machine resources. Both of the mentioned solutions are either expensive, hard to deploy, or both.
My solution is rather different and relies on a human being as the conduit. The fact is while you are waiting for the application to finish a certain task, you can switch to other tasks. However, despite the multitasking capabilities of all of modern operating systems, most of them lose normal levels of responsiveness and even become unusable during image rendering and processing, saving and opening large files etc. On the other hand working simultaneously on two heavy disk-related tasks, especially on IDE drives, increases disk access delays more than two times the original performance. In a nutshell, heavy computing tasks turn your modern multi tasking operating system into a single task MS-DOS like operating system no matter you are using MIPS, Sparc, PowerPC or X86.
Now here’s my recipe: using one master PC using Windows XP and a Real VNC client, and several Fedora Core 2 Low cost Linux machines, each equipped with built in VNC server, CrossOver Office and Adobe Photoshop running on top of CrossOver office. You can run several copies of Photoshop and monitor all of them from your Wintel PC without making each application compete for resources. From the user point of view, it’s like the user is running several instances of Photoshop on his or her windows machine and using other machines' HDD and RAM for computing without a real grid or clustering method. Now the designer can apply a complex Photoshop filter on a large image, and switch to other copy of Photoshop working on an illustration while the other instance of Photoshop is doing the calculations on a remote machine.
Real world experiments
I tested this configuration over a 100 MB Ethernet LAN and experienced a usable working environment with no performance penalty. The fact is, VNC uses very little bandwidth and is very easy to install and configure. In fact all you need is the Linux machine name and a sign on user name and password, you even don’t need to tweak Windows XP SP2 firewall settings to make it work.
Assuming the fact that this article is intended for the power user, I omit the configuration details.
Here are the links for downloading, installing and configuring the required software.
Editor's Note: Of course, this hack could be done in several different ways, in all Linux, all Windows, and all Mac environments, but wouldn't it be relatively easy to make an integrated, more elegant method of farming out resource-intensive calculations to other machines on the network on a case-by-case basis (without the permanence of a dedicated grid)? Does anyone know of any software that already exists for this purpose? Some companies, like Apple, are striving to make grid computing more accessible. This strikes me as a feature that would be a good idea for Apple to implement in a future OS X release. -- David Adams---
About the author: Kasra Yousefi is the creative director at Persiadesign Inc