現在、システムのRAMが非常に簡単に不足しているため、OOM Killerを実行しているように見えるLinuxボックスに問題があります。一方、通常は同様の負荷をかなりうまく処理します。確認してみるとRAMが多く消費されているfree -tm
ことがわかりました。buff/cache
通常、ディスクIOをキャッシュしたいので大丈夫ですが、今はシステムにメモリが足りなくてもカーネルはそのメモリを解放できないようです。
現在のシステムは次のとおりです。
total used free shared buff/cache available
Mem: 31807 15550 1053 14361 15203 1707
Swap: 993 993 0
Total: 32801 16543 1053
ただし、キャッシュを強制的に解放しようとすると、次の結果が表示されます。
$ grep -E "^MemTotal|^Cached|^Committed_AS" /proc/meminfo
MemTotal: 32570668 kB
Cached: 15257208 kB
Committed_AS: 47130080 kB
$ time sync
real 0m0.770s
user 0m0.000s
sys 0m0.002s
$ time echo 3 | sudo tee /proc/sys/vm/drop_caches
3
real 0m3.587s
user 0m0.008s
sys 0m0.680s
$ grep -E "^MemTotal|^Cached|^Committed_AS" /proc/meminfo
MemTotal: 32570668 kB
Cached: 15086932 kB
Committed_AS: 47130052 kB
これにより、すべてのダーティページがディスクに書き込まれ、すべてのキャッシュが削除されると、15 GBのキャッシュのうち約130 MBしか確保されません。ご覧のとおり、私はすでにかなり多くのオーバーコミットを実行しているため、機能していないキャッシュに15 GBのRAMを無駄にすることはできません。
カーネルはslabtop
また、600MB未満のスペースを使用すると主張しています。
$ sudo slabtop -sc -o | head
Active / Total Objects (% used) : 1825203 / 2131873 (85.6%)
Active / Total Slabs (% used) : 57745 / 57745 (100.0%)
Active / Total Caches (% used) : 112 / 172 (65.1%)
Active / Total Size (% used) : 421975.55K / 575762.55K (73.3%)
Minimum / Average / Maximum Object : 0.01K / 0.27K / 16.69K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
247219 94755 0% 0.57K 8836 28 141376K radix_tree_node
118864 118494 0% 0.69K 5168 23 82688K xfrm_state
133112 125733 0% 0.56K 4754 28 76064K ecryptfs_key_record_cache
$ cat /proc/version_signature
Ubuntu 5.4.0-80.90~18.04.1-lowlatency 5.4.124
$ cat /proc/meminfo
MemTotal: 32570668 kB
MemFree: 1009224 kB
MemAvailable: 0 kB
Buffers: 36816 kB
Cached: 15151936 kB
SwapCached: 760 kB
Active: 13647104 kB
Inactive: 15189688 kB
Active(anon): 13472248 kB
Inactive(anon): 14889144 kB
Active(file): 174856 kB
Inactive(file): 300544 kB
Unevictable: 117868 kB
Mlocked: 26420 kB
SwapTotal: 1017824 kB
SwapFree: 696 kB
Dirty: 200 kB
Writeback: 0 kB
AnonPages: 13765260 kB
Mapped: 879960 kB
Shmem: 14707664 kB
KReclaimable: 263184 kB
Slab: 601400 kB
SReclaimable: 263184 kB
SUnreclaim: 338216 kB
KernelStack: 34200 kB
PageTables: 198116 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 17303156 kB
Committed_AS: 47106156 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 67036 kB
VmallocChunk: 0 kB
Percpu: 1840 kB
HardwareCorrupted: 0 kB
AnonHugePages: 122880 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 9838288 kB
DirectMap2M: 23394304 kB
Cached
システムRAMの約50%を占め、/proc/meminfo
それを解放できない原因を説明できますか?shared_buffers
巨大なページがアクティブなPostgreSQLが表示されることを知っていますが、このコンピュータCached
ではPostgreSQLを実行していません。疑わしいほど大きいようですが、Shmem
どのmeminfo
プロセスがそれを使用しているのかどうかを知ることができますか?
私はこれが誤動作するプログラムかもしれないと推測します。しかし、どのプロセスがそのRAMを占有しているかを調べるためにシステムに問い合わせるにはどうすればよいですか?現在452個のプロセス/2144個のスレッドがあるため、これをすべて手動で調べるのは難しい作業です。
また、このRAM使用の理由がSystem V共有メモリのためではないことも確認しました。
$ ipcs -m | awk 'BEGIN{ sum=0 } { sum += $5 } END{print sum}'
1137593612
報告される合計バイト数ipcs
は大きいが、依然として「ただ」1.1GBである。
同様の問題も発見しましたhttps://askubuntu.com/questions/762717/high-shmem-memory-usageShmemの高い使用量は、tmpfs
マウントされたディレクトリのゴミによって引き起こされます。しかし、これは私のシステムでも問題にならないようです。 221MBのみが使用されます。
$ df -h -B1M | grep tmpfs
tmpfs 3181 3 3179 1% /run
tmpfs 15904 215 15689 2% /dev/shm
tmpfs 5 1 5 1% /run/lock
tmpfs 15904 0 15904 0% /sys/fs/cgroup
tmpfs 3181 1 3181 1% /run/user/1000
tmpfs 3181 1 3181 1% /run/user/1001
tmpfs
削除されたがファイルハンドルがまだ存在するシステムに存在していたファイルが出力df
に表示されないが、まだRAMを占有していることを説明する別の答えが見つかりました。 Google Chromeが閉じることを忘れた(?)ファイルを削除するのに約1.6GBが無駄になることがわかりました。
$ sudo lsof -n | grep "/dev/shm" | grep deleted | grep -o 'REG.*' | awk 'BEGIN{sum=0}{sum+=$3}END{print sum}'
1667847810
(はい、上記のフィルタリングはありませんが、フィルタリングもテストしましたが、chrome
Google Chromeが開いたファイルハンドルを持つファイルを削除してRAMを無駄にするのとほぼ同じです。)
修正する:Shmem: 14707664 kB
実際の犯人は削除されたファイルで記述される1.6GB tmpfs
、System V共有メモリで説明される1.1GB、tmpfs
既存のファイルが約220MBのように見える。だから、まだどこかに約11.8GBのスペースがありません。
少なくともLinuxカーネル5.4.124では、Cached
これはすべて含まれているようですが、キャッシュが解放されてもそのフィールドをゼロにすることはできませんShmem
。echo 3 > drop_caches
Cached
もしそうなら、実際の質問はShmem
予想しませんが、なぜRAMが10GB以上を占めるのかということです。
修正する:確認の結果、(「RES Anonymous」)および(「RES Shared」)top
フィールドがEclipseを指していることがわかりました。 Thunderbirdを閉じてもキャッシュメモリは解放されませんが、Eclipseを閉じると3.9GBが解放されます。 JVMフラグを使用してEclipseを実行しているので、JVMのメモリ使用量はまだ!と表示されることがあります。プロセスをランダムに終了し、メモリが解放されたことを確認する代わりに、メモリ使用量をプロセスメソッドにマッピングします。RSan
RSsh
thunderbird
Cached
-Xmx4000m
Cached
修正する:tmpfs
背後で使用されるファイルシステムもShmem
増加に寄与することができる。これが私がテストした方法です:
$ df --output=used,source,fstype -B1M | grep -v '/dev/sd' | grep -v ecryptfs | tail -n +2 | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}'
4664
したがって、実際のブロックデバイスがサポートするファイルシステムのみを除外しても(私もecryptfs
このブロックデバイスにマウントされています)、約4.7 GBのメモリ損失しか説明できません。そのうち4.3GBは、私が知っている限り、作成されたが未使用のsnapd
インストールsquashfs
に対応していますShmem
。
修正する:場合によっては、GPUドライバが保持するGEMオブジェクトとして記述されます。これを照会する標準インターフェイスはないようですが、Intel統合グラフィックスでは次のような結果が得られます。
$ sudo sh -c 'cat /sys/kernel/debug/dri/*/i915_gem_objects' | perl -npe 's#([0-9]+) bytes#sprintf("%.1f", $1/1024/1024)." MB"#e'
1166 shrinkable [0 free] objects, 776.8 MB
Xorg: 114144 objects, 815.9 MB (38268928 active, 166658048 inactive, 537980928 unbound, 0 closed)
calibre-paralle: 1 objects, 0.0 MB (0 active, 0 inactive, 32768 unbound, 0 closed)
Xorg: 595 objects, 1329.9 MB (0 active, 19566592 inactive, 1360146432 unbound, 0 closed)
chrome: 174 objects, 63.2 MB (0 active, 0 inactive, 66322432 unbound, 0 closed)
chrome: 174 objects, 63.2 MB (0 active, 0 inactive, 66322432 unbound, 0 closed)
chrome: 20 objects, 1.2 MB (0 active, 0 inactive, 1241088 unbound, 0 closed)
firefox: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
GLXVsyncThread: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
chrome: 1100 objects, 635.1 MB (0 active, 0 inactive, 180224 unbound, 0 closed)
chrome: 1100 objects, 635.1 MB (0 active, 665772032 inactive, 180224 unbound, 0 closed)
chrome: 20 objects, 1.2 MB (0 active, 0 inactive, 1241088 unbound, 0 closed)
[k]contexts: 3 objects, 0.0 MB (0 active, 40960 inactive, 0 unbound, 0 closed)
この結果は私には理解できません。各行が物理メモリ割り当てであれば、合計は数百ギガバイトになります!
GPUドライバが特定の行を複数回報告していると仮定しても、次のような結果が得られます。
$ sudo sh -c 'cat /sys/kernel/debug/dri/*/i915_gem_objects' | sort | uniq | perl -npe 's#([0-9]+) bytes#sprintf("%.1f", $1/1024/1024)." MB"#e'
1218 shrinkable [0 free] objects, 797.6 MB
calibre-paralle: 1 objects, 0.0 MB (0 active, 0 inactive, 32768 unbound, 0 closed)
chrome: 1134 objects, 645.0 MB (0 active, 0 inactive, 163840 unbound, 0 closed)
chrome: 1134 objects, 645.0 MB (0 active, 676122624 inactive, 163840 unbound, 0 closed)
chrome: 174 objects, 63.2 MB (0 active, 0 inactive, 66322432 unbound, 0 closed)
chrome: 20 objects, 1.2 MB (0 active, 0 inactive, 1241088 unbound, 0 closed)
firefox: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
GLXVsyncThread: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
[k]contexts: 2 objects, 0.0 MB (0 active, 24576 inactive, 0 unbound, 0 closed)
Renderer: 4844 objects, 7994.5 MB (0 active, 0 inactive, 8382816256 unbound, 0 closed)
Xorg: 114162 objects, 826.8 MB (0 active, 216350720 inactive, 537980928 unbound, 0 closed)
Xorg: 594 objects, 1329.8 MB (14794752 active, 4739072 inactive, 1360146432 unbound, 0 closed)
これは、4〜8 GBの範囲で予想される合計よりもはるかに多くの数値です。 (現在のシステムにはログインシートが2つあるので、Xorgプロセスを2つ見たいと思います。)
修正する:GPUデバッグ出力をさらに詳しく見ると、このunbound
数字はRAMの仮想ブロックが実際には使用されていないことを意味すると信じています。これにより、より合理的なGPUメモリ使用量の数値を得ることができます。
$ sudo sh -c 'cat /sys/kernel/debug/dri/*/i915_gem_objects' | perl -npe 's#^(.*?): .*?([0-9]+) bytes.*?([0-9]+) unbound.*#sprintf("%s: %.1f", $1, ($2-$3)/1024/1024)." MB"#eg' | grep -v '0.0 MB'
1292 shrinkable [0 free] objects, 848957440 bytes
Xorg: 303.1 MB
Xorg: 32.7 MB
chrome: 667.5 MB
chrome: 667.5 MB
これは約1.5 GBのRAMを説明していますが、これは私が作業しているデータに対して正常であるようです。まだどこかにいくつかのギガバイトが足りません!
修正する:現在の問題は、実際にRAMがサポートしている削除されたファイルが原因であると思います。これは、ファイルを削除/破棄した後に開かれたファイルハンドルが漏洩する破損したソフトウェアによって引き起こされる可能性があります。私が走るとき
$ sudo lsof -n | grep -Ev ' /home/| /tmp/| /lib/| /usr/' | grep deleted | grep -o " REG .*" | awk 'BEGIN{sum=0}{sum+=$3}END{print sum / 1024 / 1024 " MB"}'
4560.65 MB
(手動で収集されたパスプレフィックスのリストは実際には実際のブロックデバイスによってサポートされています。私のルートは実際のブロックデバイスでサポートされているため、ここにすべてのブロックマウントポイントを一覧表示することはできません。非マウントポイントディレクトリを一覧表示し、ここより長いブロックインストールをすべて一覧表示します/
.)
これは、ほぼ4.6GBのRAM損失を説明します。出力ipcs
、GPU RAM(バインドされていないメモリ仮定)、tmpfs
使用量を組み合わせると、現在どこかで約4GBがありませんShmem
!
答え1
私は上記の質問の著者です。まだ完全な答えはありませんが、これが最も有名な説明です。
最新のLinuxカーネルでは、
Cached
この値は/proc/meminfo
ディスクキャッシュの量を説明しません。しかし、カーネル開発者は現在、この設定を変更するには遅すぎると思います。。実際に使用されるディスクキャッシュの量を実際に測定するには、
Cached - Shmem
それを推定する計算を実行する必要があります。元の質問から数字を取ると15151936−14707664
(kiB)(from/proc/meminfo
)または(kiB)の出力が得られるため、444272
システムに実際に約433MiBのディスクキャッシュがあるようです。この場合、すべてのディスクキャッシュを削除しても大量のメモリが確保されるわけではありません。すべてのディスクキャッシュを削除しても、フィールドはCached
3%だけ減少します。
したがって、最良の推測は、一部のユーザーモードソフトウェアは、多くの共有メモリ(通常tmpfs
または共有メモリマッピング)を使用して、Cached
システムに実際にディスクキャッシュがほとんどないにもかかわらず高い値を示すことです。メモリ不足の状態が近づいています。Committed_AS
私はこれがこの理論を支えるのに大きな助けになると思いますMemTotal
。
linux-mm
以下は、上記のリンクが後で機能しない場合に備えて、上記のリンクされたスレッドの結論の(短縮された)コピーです。
タイトル:Re:Shmemが/ proc / meminfoのキャッシュに含まれているのはなぜですか?
送信者: Vlastimil Babka @ 2021-08-30 16:05 UTC21年8月30日午前12時44分に、Mikko Rantalainenは次のように書きました。
これは fs/proc/meminfo.c 関数 meminfo_proc_show() からすぐにはわかりませんが、 Cached: フィールドの出力には常にすべての Shmem: フィールドが含まれているようです。
だが今変えればより大きな混乱を引き起こすことができる。人々はもはや新しいカーネルの出力を最初に見ると誤解しません(IIRCの「free」コマンドもそれを使用します)。しかし、古いカーネルと新しいカーネルを使用している人は、それがある時点で変更されたことを考慮する必要があります...悪いです。
送信者: ハリド・アジズ @ 2021-08-30 19:38 UTC
2021年8月30日月曜日20:26 +0300に、Mikko Rantalainenは次のように書きました。
もちろん、1つの可能な解決策は、「キャッシュ済み」を変更せずに実際のキャッシュセマンティクスに「キャッシュ」を導入することです(つまり、(キャッシュ済み - Shmem)とメモリ対応RAMの合計を含む)。これにより、システム管理者は一意の値を持つ2つ以上の異なるフィールドを表示して文書を見つけることができます。
新しいフィールドを追加することをお勧めします。 / proc / meminfoのデータを解釈し、そのデータに対して操作を実行するためのツール/スクリプトがたくさんあるかもしれません。既存のデータの意味を変更すると、これらのツールは機能しません。新しい分野の欠点は、出力がさらに拡張されるが、既存のツールを損傷しないことです。
答え2
今書いています。メモリ問題の診断に役立つツール、の情報に基づいていくつかの式を含むRedHatのドキュメント。
ディスクキャッシュ/tmpfsに関して私が理解したことは次のとおりです。
キャッシュ = ディスクキャッシュ - スワップキャッシュ - tmpfs メモリ使用量
tmpfsはスワップに常駐する可能性があるため、最初にtmpfsの実際のメモリ使用量を計算する必要があります。
簡単な解決策:
shmem = 共有メモリセグメント + tmpfs ram
ただし、共有メモリセグメントもスワップに存在する可能性があり、shmemにはhugepage共有メモリセグメントが含まれていないようです(カーネル5.4および5.15でテスト済み)。
より正確なソリューション
shmem="4k ページ sysvipc shm rss" + tmpfs ラム使用量
「4k sysvipc shm rss」は、標準ページサイズ(4k)の共有メモリセグメントで使用されるメモリの合計なので、大きなページはありません。
以下では、メモリセグメントのRSS使用量を確認できます/proc/sysvipc/shm
。
shmが4kまたは2Mページを使用しているという事実は/ procに公開されていないようですが、共有メモリセグメントに接続して物理ページ(/proc/kpageflags
)をスキャンするとその情報が得られます。これを使用して、共有メモリページ数を出力に追加します。
sudo ./memstats groups
[...]
Scanning shm...
Shared memory segments (MiB):
key id Size RSS 4k/2M SWAP USED% SID
============================================================================================
0 3 9 9 2442/0 0 100.02
0 2 9 10 0/5 0 104.86
[...]