File_cache
事始め タイトルの通りです。 OSはね、頻繁にアクセスされるファイルをメモリ上に載せておくんですね。ディスクアクセスは基本的に遅くなってしまうからね。その辺をいい感じにまとめておきたいのよね。 参考文献 [この方の記事] (https://qiita.com/ryuichi1208/items/bbf221ab66562e1426ca) [Linuxとメモリの基礎&vmstatの詳しい使い方] (https://qiita.com/kunihirotanaka/items/70d43d48757aea79de2d) カーネルは、ディスク上のデータへのアクセスを高速に行うため、 read/writeの際にメモリ上にデータをキャッシュします。 キャッシュするメモリ上の領域を「ディスクキャッシュ」と 呼びます。 ディスクキャッシュには種類が2種類があります。それが「バッファキャッシュ」と「ページキャッシュ」です。 それぞれの概要は下記へ記します。 ちなみに、空きメモリがある限り、基本的にキャッシュはどんどん増加します。 ページというのは Linux の仮想メモリの最小単位。 ページキャッシュは、ディスク上のデータをページ単位で一時的に 保存するために使用されるメモリでファイルの読み書きの高速化に 使用されます。 バッファキャッシュは、プロセスがディスク上のデータに アクセスする際、アクセスすべきデータのブロックを高速に見つけるために使用されるメモリ メモリの状態を確認する方法 メモリの使用状況はfrreeコマンド、もしくはvmstatコマンドで確認することができる。 それを使う前に まず、基礎として覚えておきたいのが、osのメモリ構造だよね。 実メモリがあって、メモリには3つの領域がある。 1つ目が、使用中のメモリ。 2つめが、キャッシュ。 3つ目が、空きメモリ。」 さらに、HDD等に、スワップ領域があるんだよね。 使用中のメモリは、カーネルとアプリケーションなどのプロセスによって使用されているメモリのこと。 キャッシュとは、HDDやSSDアクセスなど、I/Oの高速化を行うためのキャッシュとして利用されるメモリのこと。空きメモリは、使用中のメモリとキャッシュに使われなかったメモリ。 使用中のメモリが増えると、空きメモリが減る。 空きメモリがある限り、基本的にキャッシュはどんどん増加する。 空きメモリがなくなれば、使用中のメモリの増加に応じて、キャッシュが減る。 キャッシュに割り当てられるメモリがなくなると、I/Oのパフォーマンスは低下する 使用中のメモリが実メモリより多くくなりそうになると、あふれる部分をスワップへ書き出す。 vmstatの結果 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 1560 157622480 336252 333521088 0 0 0 3 0 0 9 0 91 0 0 freeの結果 total used free shared buff/cache available Mem: 494649720 3144036 157647192 53880 333858492 488291996 Swap: 4194300 1560 4192740 freeの方がわかりやすいよね。だから、freeを使うことにしよう。 total:合計メモリ量 used:メモリ使用量 free:全く使われていない未割当のメモリ量 shared:共有メモリで使用しているメモリ量 buff/cacheファイルバッファ+キャッシュメモリに使われているメモリ量 available:プロセスが利用できるメモリ量 ...