2014年3月22日土曜日

PCのメモリの話

理由あってPCのメモリの使用量を調べてみた。
その時にタスクマネージャの見方をあらためて調べた。
わかったことをまとめる。
http://www.atmarkit.co.jp/ait/articles/0910/02/news098.html


この理解のために図を一枚

まずタスクマネージャの表示のうちメモリ関連は画面写真の四角で囲った部分

でまずは
メモリ空間全体①   =物理メモリ②+ページファイル③
物理メモリ②         =使用済み④+キャッシュ済み⑤+空き⑥
ページファイル③  =使用済み⑦+空き⑧

と分類されることに注意(キャッシュ済みは使用済みに含まれないらしい)
で、この物理メモリがRAMのことで
ページファイル(スワップファイル) がpagefile.sysのファイルのこと
私の場合 物理メモリ=4G
     pagefile.sys=4236M だった。
つまり②≒4096
    ③=4236

でまず赤枠の数値は式の④である。       2.44G= 2498M
         青枠の"合計"が式の②       4039M
                 (ちょっと4096と違うがこっちの方が正確な数値)
   青枠の"キャッシュ済み"が式の⑤ 1193M
   青枠の"空きメモリ"が式の⑥    357M
ここまでで確認してみる。④+⑤+⑥=2498+1193+357=4048≒②4039
となる。微妙に狂うのはBYTE単位でないためと考えることにしたい。
    なおここの"利用可能"とは
        利用可能=⑥+(⑤の一部)
    の意味 要するにキャッシュ済みのメモリの一部は
               他のアプリに使いまわせるということ
        だから⑥より大きく⑥+⑤よりは小さい。
これらのことを無理やり図にした
この青枠の表示がどう考えても"合計"= "キャッシュ済み"+"利用可能"+"空きメモリ"
なようにしか直感的に読めないがそうでないことに注意。


あとオレンジ枠についてカーネルのデータはページングできるものとできないものとに分けられる
カーネルのデータのうちどうでもいいものがページとなる。
        だから
        ページ=⑦の一部
        非ページ=④の一部

最後に緑の枠のコミットは(④+⑦)/①の意味
      確かめてみる。スワップエリアサイズ③=メモリ全体①ー物理メモリ②
                      =8077-4039=4038
                                        で、これはpegefile.sys=4236より若干小さい。
          これは多分フルのファイルサイズまでスワップエリアに確保してないから?
      さらに実際にスワップされているページファイルのサイズは=4270-2498=1772
      となる。結構大量にスワップされていた。


ここで最後の疑問が出る。
 ページファイルすなわちスワップとは物理メモリが足りないときにとられるはずなのになぜ
 メモリに空きがあってもスワップがかかっているのか?

これについては
http://nyaruru.hatenablog.com/entry/20071010/p1
 ここに詳しい。
要するに視聴頻度の低いメモリデータをOSが判断してスワップしてメモリを開けているってこと
あとメモリが断片化して連続して取れなくなっている可能性もあるし。
この判断は結構ザクザクやられているようです。

なおこれはLinuxでも同じ。ということはたぶんMACも同じ。
この場合スワップがファイルでなくエリアとなる。
http://www.math.kobe-u.ac.jp/~kodama/tips-free-memory.html

ってことで昔からある問題
「メモリが充分あるマシンではスワップはいらないのか?」
の答えがでた。
「メモリが充分あるマシンでもスワップは必要」
なぜなら
①スワップがないとメモリが断片化して大量のメモリを一気に取れないときできなくなるおそれがある。
②そもそもメモリデータが退避できないとやはり 大量のメモリを一気に取れない。

大量にメモリを使ったりすることは絶対にないと言えるならそもそもメモリを大量に積む必要がない。

結論としてメモリが余っててもスワップは使うから用意しとけってことなのだった。

参加してみた
インターネット・コンピュータ ブログランキングへ