アカウント名:
パスワード:
swap sizeの話は、走らせたいプロセスが使うvirtual memoryの大きさに比べて物理メモリの大きさが小さかったころ、そしてvirtual memoryのアーキテクチャが今ほど洗練されていなかったころの名残です。
その頃は、プロセスが用いるvirtual memoryの大きさ(すべてのプロセスに対する合計)が物理メモリの約2倍という経験則がありました。また、ユーザプロセス用のメモリアロケータ(system callとしてはsbrk(2))が新しいpageをアドレス空間にmapする時、それは必ずswapを伴わなければなりませんでした(pageを作ると同時にswapを確保、初期化)。以上から、swapを物理メモリの2倍確保する習慣が生まれました。
より現代的なvirtual memory(SVR4 VM、Mach VM、UVM、etc)は、free pageを使い果たすまでswapは一切触りません(pagedaemonが動かないため)。したがって、全くpageをmapしないのであれば、物理メモリ+swap以上の大きさのvirtual memoryを割り当てることができます。
ただし、本当にそのpageを使ってしまえばもちろんswapを食い尽くします。それに対し、必要となるswapサイズの最大値が実際のswapの大きさを超えないように監視するのがSolarisのswapfsです。もっとも、これが便利なのかどうかは意見が分かれるところですが。
それから、プロセスが用いるvirtual memoryの大きさはHDDほどには増えていません。原因はいくつかありますが、現代的なvirtual memoryでは複数のpage mapの間でのpage共有(copy-on-writeを含む)が効いています。また、mmap(2)を用いればexplicitにpageを再利用に回すこともできます。このように、今ではpageを節約するいろいろな仕掛けが使えるようになっています。
というわけで、今なら2倍にこだわることはないでしょう。むしろ、swapを管理するためのメモリをkernel内部に確保しなければならないので、むやみにswapをでかくするとkernelが壊れる恐れがあります(これだけで1GBぐらい使ってしまうケースもあった、なんとかしたいけどなぁ...)。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ見習い
Re:スワップサイズいくつにする? (スコア:3, 参考になる)
swap sizeの話は、走らせたいプロセスが使うvirtual memoryの大きさに比べて物理メモリの大きさが小さかったころ、そしてvirtual memoryのアーキテクチャが今ほど洗練されていなかったころの名残です。
その頃は、プロセスが用いるvirtual memoryの大きさ(すべてのプロセスに対する合計)が物理メモリの約2倍という経験則がありました。また、ユーザプロセス用のメモリアロケータ(system callとしてはsbrk(2))が新しいpageをアドレス空間にmapする時、それは必ずswapを伴わなければなりませんでした(pageを作ると同時にswapを確保、初期化)。以上から、swapを物理メモリの2倍確保する習慣が生まれました。
より現代的なvirtual memory(SVR4 VM、Mach VM、UVM、etc)は、free pageを使い果たすまでswapは一切触りません(pagedaemonが動かないため)。したがって、全くpageをmapしないのであれば、物理メモリ+swap以上の大きさのvirtual memoryを割り当てることができます。
ただし、本当にそのpageを使ってしまえばもちろんswapを食い尽くします。それに対し、必要となるswapサイズの最大値が実際のswapの大きさを超えないように監視するのがSolarisのswapfsです。もっとも、これが便利なのかどうかは意見が分かれるところですが。
それから、プロセスが用いるvirtual memoryの大きさはHDDほどには増えていません。原因はいくつかありますが、現代的なvirtual memoryでは複数のpage mapの間でのpage共有(copy-on-writeを含む)が効いています。また、mmap(2)を用いればexplicitにpageを再利用に回すこともできます。このように、今ではpageを節約するいろいろな仕掛けが使えるようになっています。
というわけで、今なら2倍にこだわることはないでしょう。むしろ、swapを管理するためのメモリをkernel内部に確保しなければならないので、むやみにswapをでかくするとkernelが壊れる恐れがあります(これだけで1GBぐらい使ってしまうケースもあった、なんとかしたいけどなぁ...)。