at_yasu's blog

ロード的なことを

swapとファイル

本日友人から、「Windowsだとパティーションを分けてファイル保存とかするけど、Macでもした方がいいのかな?」という質問。

してもいいけど起動時間が長くなるのは変わらないよんと答えておきまして、以下はその理由。


ソフトを使えば使うほどメモリー領域が多く使われる事は必須です。これはどうしようもない。

そしてメモリーというのは、マシンごとに違うかと思いますが、使える量が決まっています。じゃあ、その使える量より多く使おうとしたらどうなるかというと、一時的に使ってないっぽいソフトのメモリー領域をごっそりと一時的に、HDDに移します。これが Swap(スワップ)です。


んでもって現在Macは、他のUNIX系に比べて変な?swapの管理をしてまして、ファイル形式でSwapを管理してます。他のUnix系OSは、専用のパティーション領域を持たせるのにねぇ*1

これにはちょっと弊害がありまして、ファイルとして保存しているので、どうしてもディスクの断片化が起きてしまう。ユーザディレクトリーだけを移動させて、できるだけ断片化を防ぐという方法もありますが、ルートディレクトリー以下は(メモリーが巨大すぎない限り)起きてしまいます。


で、誰がどこにswapのファイルを移動させているかというと、「/sbin/dynamic_pager」が「/private/var/vm/swapfile*2」に移動させています。この場所の変更はできません。dynamic_pagerにベタに書かれているため、再コンパイルしない限り無理です。多分。


とまぁ、そんだけ。結論的には、「パティーションわけてもいいけど、起動時間は使うほど長くなっちゃうよん」と言う事で。

*1:ZFSで変わってきてるみたい。ただまぁ、UNIX遣いでない人にswap専用ウンタラ〜と言っても「?」が出るだろうし、使いづらくなるわな。

*2:後ろに0,1..と続きます