システムがOOM-killerに達するまでキャッシュ/共有メモリが増え続ける状況をデバッグしています。
顕著な効果なしにsysctl.confにshmaxとshmallを設定しました。 shmax/shmallが正常に動作するためには、より多くの機能を有効にする必要がありますか?それとも、システムの一部がこの制限を超える可能性があり、どのように強力に実施できますか?バグがあるユーザースペースアプリケーションまたはカーネル/ドライバのバグによって発生する可能性がありますか?私たちがデバッグしたアプリケーションは、グラフィックとビデオのデコードを使用します。ドライバーは最大限度を超えることができますか?
kernel.shmmax = 2147483648
kernel.shmall = 524288
Linuxカーネルは5.15.71(Yocto Meta-Intel)です。私たちのシステムには4GBのRAMがあり、スワップはありません(スワップを有効にしようとしましたが、システムの安定性には役立ちませんでした)。私たちはWayland / westonを使用しますが、systemdは使用しません。 sysctl.confに値を設定して再起動して適用します。私たちはipcsを通してこの値を確認しました。共有メモリを最大2GBに設定してみました。
ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 2097152
max total shared memory (kbytes) = 2097152
min seg size (bytes) = 1
以下は、OOMに到達する数分前のfree、meminfo、smemなどのいくつかのサンプル出力です。
free -w
total used free shared buffers cache available
Mem: 3844036 479428 263444 2711864 11324 3089840 585716
Swap: 0 0 0
#### cat /proc/meminfo
MemTotal: 3844036 kB
MemFree: 262680 kB
MemAvailable: 584940 kB
Buffers: 11324 kB
Cached: 3055620 kB
SwapCached: 0 kB
Active: 98764 kB
Inactive: 645792 kB
Active(anon): 732 kB
Inactive(anon): 394288 kB
Active(file): 98032 kB
Inactive(file): 251504 kB
Unevictable: 2708620 kB
Mlocked: 100 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 12 kB
Writeback: 0 kB
AnonPages: 386388 kB
Mapped: 162732 kB
Shmem: 2711864 kB
KReclaimable: 34208 kB
Slab: 68656 kB
SReclaimable: 34208 kB
SUnreclaim: 34448 kB
KernelStack: 4640 kB
PageTables: 5904 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1922016 kB
Committed_AS: 4068728 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 15104 kB
VmallocChunk: 0 kB
Percpu: 1040 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 72236 kB
DirectMap2M: 3938304 kB
DirectMap1G: 2097152 kB
#### smem
PID User Command Swap USS PSS RSS
…..
1306 weston /usr/libexec/wpe-webkit-1.1 0 27192 51419 98928
1379 weston /usr/libexec/wpe-webkit-1.1 0 190268 214958 266040
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 3030848 2938432 92416
userspace memory 555656 162732 392924
free memory 257532 257532 0
Map PIDs AVGPSS PSS
……
/usr/lib/libcrypto.so.3 20 527 10544
/usr/lib/dri/iris_dri.so 5 2196 10982
/usr/lib/dri/iHD_drv_video.so 1 20356 20356
/usr/lib/libWPEWebKit-1.1.so.0.2.6 5 14539 72697
[heap] 45 2060 92700
<anonymous> 45 5970 268688
編集:tmpfsに関するdf情報を追加しました。 df を使用して表示される tmpfs マウントでは、異常なサイズ増加は表示されません。
/# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 9.8G 1.9G 7.4G 21% /
devtmpfs 1.9G 2.1M 1.9G 1% /dev
tmpfs 1.9G 636K 1.9G 1% /run
tmpfs 751M 5.8M 745M 1% /var/volatile
tmpfs 40K 0 40K 0% /mnt/.psplash
ベストアンサー1
SHMAXとSHMALLは他のアイテムのサイズを制限しません。一時ファイルシステム。
tmpfsは完全にページキャッシュとスワップに存在するため、すべてのtmpfsページは/proc/meminfoでは「Shmem」、free(1)では「Shared」と表示されます。
df
このユーティリティを使用すると、システムに実際にマウントされているファイルシステムの数を確認し、最終的にsize=
そのマウント操作のパラメータによって可能な最大サイズを制限できます。
もちろん、アプリケーションがこの種のファイルシステムを使用し、使用可能なスワップスペースがない場合、アプリケーションはデバイスに残っているスペースが見つからないため、処理をブロックまたは停止する可能性が高くなります。