Hub*_*rio 5 linux process memory-leaks memory virtual-memory
我运行相当定期从内存不足遭受桌面系统,这促使我去研究什么导致该问题摆在首位。
问题是,没有一个进程会占用内存,但系统并未将其显示为可用。更重要的是,系统确实进行了交换,因此看起来内存压力是真实的。令人费解的是,在我注销并再次退出后,使用情况恢复正常(使用了约 1GB),因此它看起来像是用户空间和内核之间的一些奇怪的交互,而不是内存泄漏。
简而言之:
free,不包括缓存/缓冲区:3173960 kB这给出了3173960-2413952-158968-75992 = 525048 kB未计入的内存使用量。
我缺少什么或不计算什么?
应用程序内存使用总和:
# smem -t | sed -n '1p;$p'
PID User Command Swap USS PSS RSS
108 6 244524 2413952 2461340 2648488
Run Code Online (Sandbox Code Playgroud)
报告的内存使用情况free:
# free -k
total used free shared buffers cached
Mem: 4051956 3449748 602208 0 26548 249240
-/+ buffers/cache: 3173960 877996
Swap: 4051952 242592 3809360
Run Code Online (Sandbox Code Playgroud)
一般内存统计:
# cat /proc/meminfo
MemTotal: 4051956 kB
MemFree: 612260 kB
Buffers: 26636 kB
Cached: 249304 kB
SwapCached: 107892 kB
Active: 1774004 kB
Inactive: 885268 kB
Active(anon): 1712484 kB
Inactive(anon): 710788 kB
Active(file): 61520 kB
Inactive(file): 174480 kB
Unevictable: 9332 kB
Mlocked: 9332 kB
SwapTotal: 4051952 kB
SwapFree: 3809368 kB
Dirty: 40 kB
Writeback: 0 kB
AnonPages: 2343292 kB
Mapped: 95288 kB
Shmem: 36396 kB
Slab: 158968 kB
SReclaimable: 53900 kB
SUnreclaim: 105068 kB
KernelStack: 3528 kB
PageTables: 43600 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6077928 kB
Committed_AS: 4013288 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 139852 kB
VmallocChunk: 34359570976 kB
HardwareCorrupted: 0 kB
AnonHugePages: 641024 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 2310848 kB
DirectMap2M: 1882112 kB
Run Code Online (Sandbox Code Playgroud)
掉期开启zram:
# cat /proc/swaps
Filename Type Size Used Priority
/dev/zram0 partition 2025976 121252 100
/dev/zram1 partition 2025976 121324 100
# awk ' { print $0 / 1024; sum+=$0 } END { print "sum:" sum/1024 } ' /sys/block/zram*/compr_data_size
37962.4
38030.1
sum:75992.5
Run Code Online (Sandbox Code Playgroud)
我发现确实smem可以看到已使用的内存,但只能在“系统”模式下:
# smem -tw
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 1200240 379444 820796
userspace memory 2101184 136800 1964384
free memory 750532 750532 0
----------------------------------------------------------
4051956 1266776 2785180
# free -k
total used free shared buffers cached
Mem: 4051956 3298200 753756 0 31664 425552
-/+ buffers/cache: 2840984 1210972
Swap: 4051952 237368 3814584
Run Code Online (Sandbox Code Playgroud)
free这使得和之间的非缓存使用内存之间(几乎没有)大约 55MiB 的差异smem。