Real World Photoshop CS5 for Photographers: Virtual Memory
Virtual memory is a programming trick that fools the computer into thinking it has more RAM than it really does. It works by reserving a specially marked amount of space on your hard drive that gets treated as RAM. The real, physical RAM is then used as a cache for the virtual memory stored on the disk. If the data that the computer is looking for is cached in RAM, your computer won't slow down, but if the computer has to go searching on the hard disk instead, things can slow down a lot.
Operating systems create one or more virtual memory swap files on your hard disk that serve as virtual memory to let multiple applications grab RAM as needed. On top of this, Photoshop has its own virtual memory scheme that it uses to let you do things that wouldn't fit in physical RAM, such as storing 1000 history states for a 300 MB image (don't actually try this). To get optimum performance, you need to configure both the operating system's virtual memory scheme and the Photoshop scratch disk space so they play nicely together.
The Photoshop Scratch File and the Operating System Swap File. Both Windows and Mac OS X use the startup disk for the swap file unless you specified otherwise. In Windows XP, you can change the swap file setting by bringing up Properties for My Computer, selecting the Performance tab, clicking the Virtual Memory button, and selecting the Change option. This lets you specify maximum and minimum swap-file sizes and which drive gets used. In Windows 7, it's under the Advanced tab.
In Mac OS X, the procedure for pointing the swap file at a drive other than the startup disk is way more complex, so much so that it's crazy to try to move it when it's so much easier to move the Photoshop scratch disk setting instead (see "Scratch Disk Space" later in this chapter).
Photoshop performs much better if you assign the Photoshop scratch disk to a different physical mechanism than the operating system swap file, so a second hard drive is always desirable. This way, the same set of read-write heads doesn't scurry around like gerbils on espresso while trying to serve the dual demands of the operating system swap file and the Photoshop scratch space. If all you have is one single hard disk, you'll have to let Photoshop and the operating system fight it out. You can minimize conflicts by installing as much RAM as you can and being careful with your Memory Usage preference setting.
A few Photoshop filters (Lens Flare, for instance) require that you have enough physical RAM available to load the entire image. If you've allocated as much as you can out of the RAM you've got installed and it isn't enough for a particular filter to process the image, you'll still get "out of memory" errors no matter how much virtual memory you have.
Setting Up Photoshop Scratch Disks. To tell Photoshop where to store its scratch data, open the Preferences dialog and in the Scratch Disks options, check the Active? check box for any volumes that you want to use for that purpose (see Figure 1-4). Photoshop starts with the volume at the top of the list. If the scratch data uses up the first scratch disk, Photoshop extends it into the checked scratch disks from top to bottom. To move a disk up or down in the list, click a disk to highlight it, and then click the arrows to the right of the list's scroll bar.
Figure 1-4 Scratch Disk preferences
If you store the Photoshop scratch file on a disk where you want to store other files, it's best for the Photoshop scratch file to be in its own partition that contains no other files and does not contain the operating system swap file. If the Photoshop scratch file is mixed with other files, that volume may become fragmented and slow down Photoshop. A dedicated partition is much easier to maintain. If you need to defragment it, you can do so very easily simply by reinitializing the partition (erasing everything inside the partition)—you don't need to run a fancy disk optimizer.
Scratch Disk Space. The space you set aside for a scratch disk should at least equal the amount of RAM you've allocated to Photoshop, as it uses RAM as a cache for the scratch disk space. That means if you've given Photoshop 120 MB of RAM, you must also have at least 120 MB of free disk space. If you have less, Photoshop will use only an amount of RAM equivalent to the free space on the scratch disk. In practice, you'll likely need more and, if you work with layered, high-bit files or many history states, much more. A good scratch disk is large (many gigabytes) and fast.
Photoshop constantly optimizes the scratch space. If you consider constant disk access (often called disk thrashing) to be a warning that things are about to get very slow, you should learn to accept it as normal Photoshop behavior. People are often especially concerned when they see disk access immediately after opening a file. This, too, is normal: Photoshop is simply setting itself up to be more efficient down the line. Photoshop has a couple of ways to tell you how much of the scratch disk is involved.
In the lower-left corner of the document window, there's a pop-up menu that shows, among other things, document size, scratch size, and efficiency (see Figure 1-5). If you set this to Scratch Sizes, the first number shows the amount of RAM being used by all open documents, and the second number shows the amount of RAM currently allocated to Photoshop. If the first number is bigger than the second, Photoshop is using virtual memory. When the indicator is set to Efficiency, a reading of less than 100 percent indicates that virtual memory is coming into play.
Figure 1-5 The Scratch Sizes indicator
RAID. Using a striped Redundant Array of Independent Disks (RAID) can be a very worthwhile way to set up a scratch disk, particularly if you often edit images that are too large for your available RAM. Photoshop can write to a RAID much faster than to a single disk, so your performance will improve. Opening and saving large files is also faster with a RAID. But if you have a choice between buying RAM and buying a fast hard drive, get more RAM first, unless opening and saving large files already constitutes a significant bottleneck in your workflow.
Virtual Memory Buffering Plug-Ins in Mac OS X. While Mac OS X lets Photoshop use your extra RAM as a fast cache if you have more than 4 GB of RAM installed, there is a catch: While caching, Photoshop may pause for a few seconds, which can mess you up if you're painting, for example. For this reason, Adobe provides two plug-ins—ForceVMBuffering.plugin and DisableVMBuffering.plugin—that let you control whether OS X uses high RAM for direct caching. How do you decide which one to use? It comes down to whether you're more interested in responsive painting or quickly handling very large files. Use the following guidelines:
- If you have more than 4 GB of RAM and you use the ForceVMBuffering plug-in, Photoshop will be as fast as it can be with very large files, but you may experience pauses when painting.
- If you have more than 4 GB of RAM and you use the DisableVMBuffering plug-in, you shouldn't experience pauses when painting, but you won't see optimal Photoshop performance with very large files.
- If you have 4 GB of RAM or less installed, don't bother installing either plug-in, because you won't have the amount of RAM that brings the extra Mac OS X caching into play.
If you need these plug-ins, download them from the Adobe Web site. Go to www.adobe.com/downloads/updates, choose Photoshop-Macintosh from the Product menu and click Go, and click Photoshop CS5 Optional Plugins. Installation instructions are in the included ReadMe document.