GNU/Linux >> Linux の 問題 >  >> Linux

Linuxのバッファメモリとキャッシュメモリの違いは何ですか?

<ブロック引用>

バッファーは特定のブロック デバイスに関連付けられており、ファイル システム メタデータのキャッシュと、実行中のページの追跡をカバーします。キャッシュには、パークされたファイル データのみが含まれます。つまり、バッファーは、ディレクトリ内の内容、ファイルのアクセス許可を記憶し、特定のブロック デバイスに対して書き込みまたは読み取りが行われているメモリを追跡します。キャッシュには、ファイル自体の内容のみが含まれます。

引用リンク


引用された回答 (参照用):

<ブロック引用>

簡単な答え:Cached はページ キャッシュのサイズです。 Buffers は、メモリー内ブロック I/O バッファーのサイズです。キャッシュされた事項。バッファはほとんど無関係です。

長い答え:Cached は Linux ページ キャッシュのサイズからスワップ キャッシュ内のメモリを差し引いたもので、SwapCached で表されます (したがって、ページ キャッシュの合計サイズは Cached + SwapCached になります)。 Linux は、ページ キャッシュを介してすべてのファイル I/O を実行します。書き込みは、ページ キャッシュ内の対応するページをダーティとしてマークするだけで実装されます。その後、フラッシャ スレッドは定期的にダーティ ページをディスクに書き戻します。読み取りは、ページ キャッシュからデータを返すことによって実装されます。データがまだキャッシュにない場合は、最初にデータが取り込まれます。最新の Linux システムでは、Cached は簡単に数ギガバイトになる可能性があります。メモリの圧迫に応じてのみ縮小します。システムは、必要に応じてより多くのメモリを利用できるように、データをディスクにスワップ アウトするとともにページ キャッシュをパージします。

バッファーは、メモリー内のブロック I/O バッファーです。それらは比較的短命です。 Linux カーネル バージョン 2.4 より前は、Linux には個別のページ キャッシュとバッファー キャッシュがありました。 2.4 以降、ページ キャッシュとバッファ キャッシュは統合され、バッファはページ キャッシュで表されない未加工のディスク ブロックです。つまり、ファイル データではありません。したがって、Buffers メトリクスはほとんど重要ではありません。ほとんどのシステムでは、バッファはしばしば数十メガバイトしかありません。


Linux
  1. InnoDBとMyISAMの違いは何ですか?

  2. env と set (Mac OS X または Linux) の違いは何ですか?

  3. Linux での「検索」と「検索」の違いは何ですか?

  1. ファイルへの書き込みとマップされたメモリへの書き込みの違いは何ですか?

  2. Cのstrtok_rとstrtok_sの違いは何ですか?

  3. ls と l はどう違いますか?

  1. Linux プラットフォーム ドライバーと通常のデバイス ドライバーの違いは何ですか?

  2. Linux でのライブラリ呼び出しとシステム呼び出しの違いは何ですか?

  3. Unix、Linux、BSD、GNU の違いは何ですか?