🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

キャッシュ

キャッシュはドキュメントやデータを一時的に保管するもので、アクセス処理時間を短くするために使用されます。

Q&A

1回答

1817閲覧

Linuxのプロセスの仮想メモリとページキャッシュの関係性を教えて下さい

lirlia

総合スコア49

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

キャッシュ

キャッシュはドキュメントやデータを一時的に保管するもので、アクセス処理時間を短くするために使用されます。

0グッド

2クリップ

投稿2019/10/04 07:38

編集2019/10/04 07:39

redhat7.2でとあるベンダのDBを使用しています。

DBの動きとしては、新規SQL(insert)が発行されコミットされると、分毎に分割されたファイルに結果が格納されます。(ディスクにwriteされます)

※例:20190101_000100.txt,20190101_000200.txt,20190103_000100.txtという感じで保存されます

このときDBの仕様では直近更新されたファイルをプロセスのメモリ上に保有します。そのため、チューニングで保有するファイルの数を変更するとプロセスが確保するメモリの量が変動します。
※例:100MBのファイルを60分間メモリに確保すると、100MBx60分=6GBのメモリを消費する


この時、以下の実験を行いました。

実験1

DBサーバに500GBのメモリを割り当て400GBのデータを書き込みました。この時、プロセスが保有するファイル数の上限を∞にし、プロセスが保有するメモリ(VSZ/RSS)とcache(ページングキャッシュ)を確認しました。

結果1

すると結果として、以下のようにDBに書き込んだ量分のRSSとcached(freeコマンドで見れるページキャッシュ)が同じぐらいの値で推移をしました。

イメージ説明

実験2

続いて、プロセスが保有するファイル数の上限を2000程度にしテストを行いました。
※メモリを減らしていますがそこは無視してください(128GB)
※データの書き込み自体は128GB程度おこなっている

結果2

イメージ説明

はじめのほうは変なデータが入っているので無視して頂きたいのですが、

結論としては以下のとおりです。

  • プロセスが保有するファイル量を制限したのでRSS/VSSは軒並み下がった
  • ページキャッシュは書き込んだデータ分保有している

質問

  1. Linuxでfreeコマンドを叩くと物理メモリの内訳が見れます。

私の理解では、ここのうちのusedがプロセスが使用しているメモリサイズ、cacheがディスク書き込み時/読み込みを高速化するためのページキャッシュのメモリサイズです。

total used free shared buff/cache available Mem: 31211 3456 24394 217 3360 27051 Swap: 0 0 0

結果1をみると使用しているメモリ量がRSS=VSZ=ページキャッシュとなっております。RSSとVSZは同じプロセスのものを指しているのでいいのですが、RSSとページキャッシュが同じなのが理解できません。
※物理メモリ上、プロセスが見れるデータ領域とVFSのページキャッシュ領域は違うのでは???

イメージ説明

これは、物理メモリ上にロードされるファイルは実は一箇所にしか載っておらず、プロセスの仮想メモリもページキャッシュも同じ物理メモリのアドレスを参照しているという動きなのでしょうか? 教えてください。

(エビデンスがあれば合わせて教えていただけますと幸いです)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

RSSとページキャッシュが同じなのが理解できません。

たまたまじゃないでしょうか?
メモリに余裕があれば、ページキャッシュは使い続けますので。
echo 3 > /proc/sys/vm/drop_caches でページキャッシュを解放すると、RSS は減らず、Cached だけ減ると思います。

投稿2019/10/04 15:06

TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lirlia

2019/10/05 11:00

ご回答ありがとうございます。 RSSとページキャッシュは異なるものなので、別々にメモリ上は管理されていると理解しました。 ただ、一点疑問が残ってまして、実験1のときはRSSとキャッシュがそれぞれ400GBメモリを使っています。 実メモリは500GB程度ですので、RSSとキャッシュが異なると考えると合計して500を超えてしまうため、挙動としておかしくないでしょうか?
TaichiYanagiya

2019/10/05 15:24

500 を越えるのは確かにおかしいですね。わかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問