SHMAX/SHMALLによって制御されない共有メモリは何ですか?

SHMAX/SHMALLによって制御されない共有メモリは何ですか?

システムが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=そのマウント操作のパラメータによって可能な最大サイズを制限できます。

もちろん、アプリケーションがこの種のファイルシステムを使用し、使用可能なスワップスペースがない場合、アプリケーションはデバイスに残っているスペースが見つからないため、処理をブロックまたは停止する可能性が高くなります。

おすすめ記事