free、available、buff/cache の指示と「free -mh」コマンドを使用して、サーバーで buff/cache によって保存されたプロセスを見つける方法

free、available、buff/cache の指示と「free -mh」コマンドを使用して、サーバーで buff/cache によって保存されたプロセスを見つける方法

free -mhの説明を次のように見ました。

free は、カーネルで使用されるバッファとキャッシュだけでなく、システムで使用可能な物理メモリとスワップメモリ​​の合計量も表示します。 /proc/meminfo を解析して情報を収集します。表示される列は次のとおりです。

   total  Total installed memory (MemTotal and SwapTotal in
          /proc/meminfo)

   used   Used memory (calculated as total - free - buffers - cache)

   free   Unused memory (MemFree and SwapFree in /proc/meminfo)

   shared Memory used (mostly) by tmpfs (Shmem in /proc/meminfo)

   buffers
          Memory used by kernel buffers (Buffers in /proc/meminfo)

   cache  Memory used by the page cache and slabs (Cached and
          SReclaimable in /proc/meminfo)

   buff/cache
          Sum of buffers and cache

   available
          Estimation of how much memory is available for starting
          new applications, without swapping. Unlike the data
          provided by the cache or free fields, this field takes
          into account page cache and also that not all reclaimable
          memory slabs will be reclaimed due to items being in use
          (MemAvailable in /proc/meminfo, available on kernels 3.14,
          emulated on kernels 2.6.27+, otherwise the same as free)

場合によっては、バッファ/キャッシュメモリに空きメモリが割り当てられることがあります。メモリ使用率が高い場合や、使用可能なメモリが非常に低い場合、「top」を使用すると、プロセスが大量のメモリを占有していることがわかります。

しかし、「空きメモリ」が十分なときに、「空きメモリ」のどれが「バッファ/キャッシュ」に割り当てられているかをどうやって知ることができますか?どのプロセスに保存されたかを確認する方法はありますか?

root@server_test:~# free -mh
              total        used        free      shared  buff/cache   available
Mem:            29G         24G        359M        398M        4.2G        3.5G
Swap:            0B          0B          0B

ありがとう、台東

ベストアンサー1

私が理解しているように、「アイドル」とマークされているバッファ/キャッシュはメモリを必要とせず、非常に大きな数になる可能性があります。所定の位置にあるどのプロセスにも。したがって、この場合、topまたはpsに見られるように、プロセスに割り当てられたメモリはあまりありません。

つまり、バフ/キャッシュをファイルシステムキャッシュとして使用できます。ファイル(またはファイルの一部)をディスクから読み取ると(ゆっくり)、データはメモリキャッシュに保存されます(高速)。私はOSカーネルがデータをキャッシュに保存させたプロセスを追跡しないと思います。

たとえば、この理論をテストするためにバフ/キャッシュ(またはほとんど)を空にしてから、プロセス(catなど)に非常に大きなファイルを読み取ることができます。プロセス(cat)がファイルの読み取りを終了すると終了し、プロセスはもう存在しません。ただし、おおよその読み込んでいるファイルのサイズと同じくらいバフ/キャッシュ値が増加したことを確認できます。したがって、この場合、catプロセスはそのデータをキャッシュに追加しますが、catプロセスは現在のデータが(一時的に)存在するメモリのキャッシュページを「所有」しません。

おすすめ記事