New To Mac-Forums?

Welcome to our community! Join the discussion today by registering your FREE account. If you have any problems with the registration process, please contact us!

Get your questions answered by community gurus Advice and insight from world-class Apple enthusiasts Exclusive access to members-only contests, giveaways and deals

Join today!

 
Start a Discussion
 

Mac-Forums Brief

Subscribe to Mac-Forums Brief to receive special offers from Mac-Forums partners and sponsors

Join the conversation RSS
OS X - Development and Darwin Discussion and questions about development for Mac OS X.

Moving the swapdir in OS X 10.2.x


Post Reply New Thread Subscribe

 
Thread Tools
gatorparrots
Guest
 
Posts: n/a

Many techniques were developed for moving the swap directory in OS X 10.1.x and several applications were even written for that expressed purposes. None of those techniques or applications work very cleanly in OS X 10.2.x (resulting in .vm 1 or duplicate mounts and other oddities); but that's okay, because moving the swap file in Jaguar is easier than it has ever been. [No fstabs, no StartupItems, etc.]. This technique merely requires the editing of a single system file to make the configuration change.

The first step is to back up your /etc/rc, as we will be editing it and want to preserve a backup copy to fallback on in case things go awry:
sudo cp -p /etc/rc /etc/rc.default

Here is the relevant latter half of /etc/rc, which is all that needs to be edited to move the swap location in Jaguar:
Quote:
##
# update flushes the cached blocks from the filesystem using
# the sync system call every 30 seconds. *This ensures the
# disk is reasonably up-to-date in the event of a system crash.
##

update

##
# Start the virtual memory system.
##

ConsoleMessage "Starting virtual memory"

swapdir=/private/var/vm
if [ "${netboot}" = "1" ]; then
* *sh /etc/rc.netboot setup_vm ${swapdir}
fi

# Make sure the swapfile exists
if [ ! -d ${swapdir} ]; then
* *ConsoleMessage "Creating default swap directory"
* *mount -uw /
* *mkdir -p -m 755 ${swapdir}
* *chown root:wheel ${swapdir}
else
* *rm -rf ${swapdir}/swap*
fi
* * * * * * * * * *
dynamic_pager -H 40000000 -L 160000000 -S 80000000 -F ${swapdir}/swapfile



##
# Start daemon to fix incorrectly-prebound binaries
##
* *if [ -x /usr/libexec/fix_prebinding ]; then
* * * */usr/libexec/fix_prebinding
* *fi


##
# Clean up and reset files and devices.
##
. /etc/rc.cleanup


##
# Early start for any startup items for performance reasons
##
configd


##
# pre-heat support for working set profiles
##
appprofiledir=/private/var/vm/app_profile

if [ ! -d ${appprofiledir} ]; then
* * * *if [ -f *${appprofiledir} ]; then
* * * * * * * *mv -f ${appprofiledir} "${appprofiledir}_"
* * * *fi
* * * *mkdir -p -m 711 ${appprofiledir}
* * * *chown root:wheel ${appprofiledir}
fi


##
# Insert BootCache prefetch tag
##
if [ *"${SafeBoot}" != "-x" -a -x "${BootCacheControl}" ]; then
* *${BootCacheControl} tag
fi



##
# Start System Services
##

# Set language from CDIS.custom - assumes this is parse-able by sh
. /var/log/CDIS.custom
export LANGUAGE

SystemStarter -g ${VerboseFlag} ${SafeBoot}

exit 0
You might think that changing swapdir=/private/var/vm is all you need to do, but of course Apple didn't make it that easy on us! Not only do you have to change the location of the swapdir by changing the argument, but you also have to move the relevant VM section to the end, just before the exit 0, in order to allow for the pre-heat and other essential sections to run first; also we'll add a mount -a command for an extra margin of safety, just before establishing the swap location (in the example below, the swap directory is moved to a separate partition, /Volumes/.vm:
Quote:
##
# pre-heat support for working set profiles
##
appprofiledir=/private/var/vm/app_profile

if [ ! -d ${appprofiledir} ]; then
* * * *if [ -f *${appprofiledir} ]; then
* * * * * * * *mv -f ${appprofiledir} "${appprofiledir}_"
* * * *fi
* * * *mkdir -p -m 711 ${appprofiledir}
* * * *chown root:wheel ${appprofiledir}
fi

##
# Insert BootCache prefetch tag
##
if [ *"${SafeBoot}" != "-x" -a -x "${BootCacheControl}" ]; then
* *${BootCacheControl} tag
fi

##
# Start System Services
##

# Set language from CDIS.custom - assumes this is parse-able by sh
. /var/log/CDIS.custom
export LANGUAGE

SystemStarter -g ${VerboseFlag} ${SafeBoot}

##
# Start the virtual memory system.
## *
* *
ConsoleMessage "Starting virtual memory"
*
swapdir=/Volumes/.vm
if [ "${netboot}" = "1" ]; then
* *sh /etc/rc.netboot setup_vm ${swapdir}
fi

# Make sure the swapfile exists
if [ ! -d ${swapdir} ]; then
* *ConsoleMessage "Creating default swap directory"
* *mount -uw /
* *mkdir -p -m 755 ${swapdir}
* *chown root:wheel ${swapdir}
else
* *rm -rf ${swapdir}/swap*
fi
*
dynamic_pager -H 40000000 -L 160000000 -S 80000000 -F ${swapdir}/swapfile


exit 0
(If you're very daring, you can try out different pager settings, but I don't necessarily recommend it, unless you are trying to squeeze every drop of performance out of a server machine or something. Apple has given us good general defaults in this regard. Change them at your own risk.)

Upon the next reboot, first confirm that the volume has mounted successfully with df:
Quote:

gatorparrots% df
Filesystem * * * * * 1k-blocks * * *Used Available Use% Mounted on
/dev/disk0s2 * * * * *40018068 *31444868 * 8317200 *79% /
devfs * * * * * * * * * * * *1 * * * * 1 * * * * 0 100% /dev
fdesc * * * * * * * * * * * *1 * * * * 1 * * * * 0 100% /dev
<volfs> * * * * * * * * * *512 * * * 512 * * * * 0 100% /.vol
/dev/disk2s9 * * * * * 9424512 * *172944 * 9251568 * 2% /Volumes/.vm
And then run an ls /Volumes/.vm for good measure to confirm the swapfiles are being written to that partition:
Quote:

gatorparrots% ls /Volumes/.vm
total 78136
* *0 drwxrwxrwx * 9 gator * *staff * * * * 306 Jan 19 13:07 ./
* *0 drwxrwxrwt * 7 root * * wheel * * * * 238 Jan 19 16:58 ../
* *0 d-wx-wx-wx * 3 root * * staff * * * * 102 Dec 26 13:01 .Trashes/
* *4 -rw-r--r-- * 1 root * * staff * * * *1024 Dec 26 13:00 Desktop DB
* *4 -rw-r--r-- * 1 root * * staff * * * * * 2 Dec 26 12:59 Desktop DF
* *0 drwxrwxrwt * 4 gator * *staff * * * * 136 Jan *9 14:54 Temporary Items/
78128 -rw------T * 1 root * * staff * *80000000 Jan 19 13:07 swapfile0
If everything looks good, you should be able to sudo rm -f /private/var/vm/swap* to clear the old swap files.
QUOTE Thanks
Emrys

 
Emrys's Avatar
 
Member Since: Oct 27, 2002
Location: Vermont
Posts: 1,345
Emrys is on a distinguished road
Mac Specs: 17" iMac G4 800MHz 1GB RAM

Emrys is offline
What does this do actually...

Should I be able to see a speed increase from this if I only have one drive installed but partitioned into 2 drives in my iMac?

Emrys
Community Administrator / Moderator
MAC-FORUMS.COM - The Ultimate Source For Your Mac!
QUOTE Thanks
rman

 
rman's Avatar
 
Member Since: Dec 24, 2002
Location: Los Angeles, California
Posts: 12,591
rman has much to be proud ofrman has much to be proud ofrman has much to be proud ofrman has much to be proud ofrman has much to be proud ofrman has much to be proud ofrman has much to be proud ofrman has much to be proud ofrman has much to be proud ofrman has much to be proud of
Mac Specs: 2 x 3.0GHz Quad-Core, 6GB OS X 10.6.8 | 15in MacBook Pro 2.2GHz OS X 10.6.8 | 64GB iPad 2 WiFi

rman is offline
I am not sure the affect this has on OS X, but in other unix environment it is better to have the swap partition on other disk drive. This would give you better performance. The reason why you would increase the swap space, it due to limited amount memory.

Life isn't about waiting for the storm to pass, It's about learning to dance in the rain!
QUOTE Thanks
gatorparrots
Guest
 
Posts: n/a

Swapfiles are created 80MB at a time by the system, and only when needed. If these are written to the same disk as everything else, your main disk will become fragmented after significant use (even though the swap files are cleared with a reboot, they leave behind an 80MB 'hole' that often is not filled on your disk). Further, if the free space on your drive does not occur in 80MB chunks (i.e. different block allocation size), your swapfiles will have to be fragmented. This will increase the amount of seek time when your system starts to page data between RAM and disk -- when you run out of 'real' RAM, you will notice a significant decrease in performance.

It is most advantageous if you can dedicate an entire hard drive as a swap disk. Failing that, a second partition (preferably the first partition on the disk for fastest access) is acceptable. This way you can access data faster if you're getting it from two disks -- while the system is paging data between RAM and hard disk, you downloads to another disk or application launch or large file read isn't taking a big performance hit. This dedicated disk/partition doesn't have to be very large, 500MB to 1GB should be plenty. An old SCSI drive would be ideal because they're fast (assuming you can get it to work with OS X). Failing that, a 2 or 4GB IDE drive would do the trick.
QUOTE Thanks
paulgroovy

 
Member Since: May 22, 2006
Posts: 20
paulgroovy is on a distinguished road

paulgroovy is offline
How would I go about changing the swap file to a different directory on an Intel iMac. I'm currently running osx version 10.4.8 with the latest updates.

thanks
QUOTE Thanks

Post Reply New Thread Subscribe


« Eclipse: "qmake not found" | Html »
Thread Tools

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off
Forum Jump

Similar Threads
Thread
Thread Starter
Forum
Replies
Last Post
moving avatar CaptainMack Schweb's Lounge 0 02-14-2004 12:57 PM
New E-Paper Could Show Moving Images Too Murlyn Schweb's Lounge 0 09-25-2003 03:40 AM
Moving to France. Is a Mac easy to use? tiki13 Switcher Hangout 2 08-14-2003 12:28 PM
Pixar Moving to Mac OS X schweb Apple Rumors and Reports 1 07-31-2003 11:35 PM

All times are GMT -4. The time now is 12:15 AM.

Powered by vBulletin
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
X

Welcome to Mac-Forums.com

Create your username to jump into the discussion!

New members like you have made this community the ultimate source for your Mac since 2003!


(4 digit year)

Already a member?