アプリ版:「スタンプのみでお礼する」機能のリリースについて

*長文となっております、予めご留意下さい。

Linux RHEL7のメモリ管理
/proc/memoinfo の見方についてご質問します。

中身を見ると、Active/Inactiveがあります。
私の解釈として
 Active → カーネルが最近使った領域
       再度使う可能性がありディスク同期も
       されていなく開放できない
 Inactive → カーネルが最近使っていない領域
       ある程度時間も経ちディスクとの同期も終了
       しておりいつでも開放可能
また、Active/Inactiveにもfileとanonがありこちらの解釈としては
 file → ディスクに同期すれば開放可能
 anon → Swapアウトすれば開放可能

このことから
(1)Active(file) → カーネルが最近使った領域でディスク同期
         がされていないので開放は不可
(2)Inactive(file) → カーネルが最近使っていない。
         ディスク同期は完了しているのでいつでも
         開放可能
(3)Active(anon) → ??
(4)Inactive(anon) → ??
          

【質問】
①ディスク同期とSwapアウトは違うのでしょうか?
 ディスク同期はRAMの内容をHDD/SSDに書き写す。
 SwapアウトRAMの内容を一時的にHDD/SSDに退避
 させる(HDD/SSDに書込みしない。再度使う可能性あり)
②Inactive(file)についてですが、全然使ってない&ディスク
 同期が完了しているならすぐに開放すればいいのではない
 でしょうか?何かしらの契機があるのでしょうか?
③②の質問と被っているようですが、Active/Inactive(anon)
 が良く理解できていません。fileとの違いを分かりやすく
 説明していただきたいです。
④Active/Inactive(anon)以外にもAnonymousという項目が
 ありますが、これはまた別のものなのでしょうか?

長文でのご回答でも構いません。参考となるサイトやご丁寧な回答お待ちしております。

A 回答 (1件)

『カーネルが』の部分がちょっと気になりますね。

meminfoに出ているのはユーザが利用するメモリも含む全メモリのはずです。
file/anonの区別はfileがファイルをmapした領域で、anonはファイルとの対応がされていない領域ですね。file領域にはプログラムコード(読込専用)を含むと思われます。
activeが最近使われた領域でinactiveが最近使われていない領域なのは間違いないですが、inactive領域のディスク同期が完了しているかどうかは分かりません。実際にスワップアウトが必要になってからディスクに書き込んでも良いわけです。実際の実装は知りませんが、スワップファイルが小さい場合はInactive(anon)の内容はスワップアウトするまでスワップファイルに書き出していない可能性が高いです。


ディスク同期はあらかじめメモリとファイルが関連付けられているものでメモリの内容をファイルに反映します。
スワップアウトはファイルと関連付けされていないメモリをスワップファイル内に書き出します。

先に書いたようにInactiveは必ずしもディスク同期済みを意味しません。またディスク同期済みでもメモリを解放してしまえばまた必要になった時にロードし直す必要がありますので、メモリ不足にならない限りは解放を避けます。

Active/Inactiveは先に書いたように最後に利用してからの時間だけでしょう。file/anonの違いもスワップアウト時にanonではスワップファイルに領域を確保する必要があるくらいしか違いはないと思います。

よく分かりませんが視点の違いのようです。また下記を見ると先読みなどの関係で合計があわない部分もあるようですね。
https://enakai00.hatenablog.com/entry/20110906/1 …
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!