親メモリの要約とプロセスRESの合計は合計されません。

親メモリの要約とプロセスRESの合計は合計されません。

報告されたメモリ使用量を理解するのが困難ですtop。 「メモリーの要約」セクションには、以下がリストされます。のすべての数字MiB

MiB Mem :  31884.1 total,  13562.7 free,   7881.9 used,  10439.4 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  22665.9 avail Mem

ただし、列の値を合計すると、要約に報告された値RESと合計されません。のused合計はRESです15225.7。を追加すると取得します。したがって、現在の合計は合計よりも大きくなります。used7881.9usedbuff/cache18321.3usedbuff/cacheRES

より多くの発見:

  • topメモリの概要はほぼ同じです。free以下はfree -m出力です。
               total        used        free      shared  buff/cache   available
Mem:           31884        7881       13555         886       10446       22658
Swap:           2047           0        2047

ご覧のとおり、、、、、、およびすべてusedほぼ同じ値を持ちます。freebuff/cacheavailable

  • freeフィールドを追加すると、出力からused。これはただの合計ではありません!ただし、これは要約の観点からの出力と一致することに同意するため、これは予想されます。sharedbuff/cache19213RESfreetop

  • ドキュメントには、プライベート部分と共有部分の各プロセスのメモリ要素がリストされているので、RESsum(from)が、および(from)の合計topと等しいか近いと予想します。usedsharedbuff/cachefreetop

象限図のメモリタイプ

      RES  - anything occupying physical memory which, beginning with
            Linux-4.5, is the sum of the following three fields:
            RSan - quadrant 1 pages, which include any
                   former quadrant 3 pages if modified
            RSfd - quadrant 3 and quadrant 4 pages
            RSsh - quadrant 2 pages
  • システムキャッシュをクリアするたびに、RES合計は常に予想合計よりも大きくなります。システムキャッシュを消去する方法は次のとおりですsudo sync && sudo sysctl -w vm.drop_caches=1。興味深いことにRES、その合計は18175.2!以下は、topキャッシュを消去した後のメモリの概要です。予想どおり大幅な減少を確認できますbuff/cache。しかし、used分野が大きく増えるとは予想できませんでした!出力ではused、、、およびの合計sharedはです。これは全体より約5GiB少ない!buff/cachefree13533RES
MiB Mem :  31884.1 total,  19358.2 free,   8795.6 used,   3730.2 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  21626.5 avail Mem
  • 試しましたが、smemこれらの値のどれも、または!の合計と一致しません。topfreeRES

私はこの数字を理解できません!そして、私はソフトウェアアプリケーションとして、私が書いているアプリケーションに実際にどれだけのメモリが必要かわからず、メモリの問題が発生した場合は調べることもできません!私はここで完全に迷子になりました。誰かが何が起こっているのか教えてくれたら、大変感謝します!

他の質問も見ましたが、実際に問題が解決されたことはありません。良い:「top」のメモリ使用量が加算されないのはなぜですか?これ幸いなことに、彼らの数字はよく確認されています。 ..しばらく待っても、まだ明確な答えが見つかりません!

また、次の内容をお読みください。topコマンドの合計RESが使用されているメモリと一致しないのはなぜですか? [繰り返し]これも同じです(Linuxでメモリ使用量を正しく決定する)質問に答えてください。

関連情報