[Solaris] A Solaris tmpfs uses real memory

原文はこちら。
https://blogs.oracle.com/tpenta/entry/a_solaris_tmpfs_uses_real

タイトルで一目瞭然で明らかに思えますが、ここ2週間で2件のお客様から /tmp がSwapを使っていることを明確にしてほしいという依頼があったので、どこでメモリを使っているのか継続して調査していました。
これは /etc/vfstab に /tmp を定義する際にSwapとして利用しているデバイスを表示するからだと思います。
tmpfsとの関連で、Swapとは物理メモリ+物理スワップを意味します。tmpfsはページング可能なカーネルメモリを使用しています。つまり、カーネルメモリを使用しつつ、必要に応じてこれらのページをスワップデバイスにページングすることができます。確かに物理メモリよりも大きなサイズのデータをtmpfs上に置けば、この動作はほぼ確実に起こります。
いまいちしっくりこないなら、次の方法を試してください。
  1. あるターミナル/コンソールから以下のコマンドを起動します
    $ vmstat 2
  2. 別のターミナル/コンソールで /tmp に1GBのファイルを作ります
    $ mkfile 1g /tmp/testfile
  3. vmstatコマンドで空きメモリがどうなっているか確認して下さい。
tmpfsはSwapに割り当てたディスクを横取りしてファイルシステムとして使う方法であって、メモリにインパクトを与えないと勘違いされている方がいらっしゃるようですが、そんなことはないのです。

0 件のコメント:

コメントを投稿