報告されたメモリ使用量を理解するのが困難です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
。を追加すると取得します。したがって、現在の合計は合計よりも大きくなります。used
7881.9
used
buff/cache
18321.3
used
buff/cache
RES
より多くの発見:
top
メモリの概要はほぼ同じです。free
以下はfree -m
出力です。
total used free shared buff/cache available
Mem: 31884 7881 13555 886 10446 22658
Swap: 2047 0 2047
ご覧のとおり、、、、、、およびすべてused
ほぼ同じ値を持ちます。free
buff/cache
available
free
フィールドを追加すると、出力からused
。これはただの合計ではありません!ただし、これは要約の観点からの出力と一致することに同意するため、これは予想されます。shared
buff/cache
19213
RES
free
top
ドキュメントには、プライベート部分と共有部分の各プロセスのメモリ要素がリストされているので、
RES
sum(from)が、および(from)の合計top
と等しいか近いと予想します。used
shared
buff/cache
free
top
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/cache
free
13533
RES
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
これらの値のどれも、または!の合計と一致しません。top
free
RES
私はこの数字を理解できません!そして、私はソフトウェアアプリケーションとして、私が書いているアプリケーションに実際にどれだけのメモリが必要かわからず、メモリの問題が発生した場合は調べることもできません!私はここで完全に迷子になりました。誰かが何が起こっているのか教えてくれたら、大変感謝します!
他の質問も見ましたが、実際に問題が解決されたことはありません。良い:「top」のメモリ使用量が加算されないのはなぜですか?。これ幸いなことに、彼らの数字はよく確認されています。 ..しばらく待っても、まだ明確な答えが見つかりません!
また、次の内容をお読みください。topコマンドの合計RESが使用されているメモリと一致しないのはなぜですか? [繰り返し]これも同じです(Linuxでメモリ使用量を正しく決定する)質問に答えてください。