2017年1月10日火曜日

Linux メモリのコマンド、cached、buffers、書き込みについて

現在のメモリ(memory)の使用量は、free、top 、vmstat コマンドや/proc/meminfo を参照することで確認できます。
また、sar コマンドでは現在の値や過去(デフォルト10分毎)の情報を確認できます。

メモリは、高速に読み書きできるようにキャッシュとして使われます。
そのため、メモリ使用量を表示した際に、常に高い使用量(使用率)のように見えますが、実際にはキャッシュ(cached、buffers)で多く使われていることが多いです。
※サーバ起動後、メモリ使用率は徐々に増加して90%程度に推移します。

メモリ上のデータは、一時的にduty(メモリには書き込まれ、ディスクには書き込まれていない状態)となりますが、あるタイミングでclean(ディスクに書き込まれて、いつでもメモリから消えても問題ない状態)となります。
duty から clean になるタイミングは、メモリからディスクへの書き込みタイミングの設定によって異なります。
※pdflush が実行されるタイミング。

メモリのサイジング(見積り)には、cached/buffers を考慮する必要があります。
大きなサイズのファイルを読み書きする場合、メモリを chached/buffer として使うことで、パフォーマンスが上がる可能性が高いです。サイズの大きな同じファイルに連続でアクセスする場合は、さらにメモリによるパフォーマンス向上が期待できます。

cached/buffers のみに多くメモリが使われているからといって、メモリが過剰なサイズになっているとは一概には言えません。

ご指摘、ご質問などはコメントへお願いします。

0 件のコメント:

コメントを投稿