Memory used 很高 但是 top 却查不到高消耗的进程

25 天前
 Zoooooberg
top 看没有特别消耗 memory 的进程,但是有 80G memory used, 查了查说 kenerl IO 的 cache 占的,怎么查到底哪个进程导致的 kernel IO 缓存过大?或者说还有别的原因?

Top:
127105.6 total, 35212.9 free, 80489.8 used, 11402.8 buff/cache

cat /proc/meminfo

MemTotal: 130156092 kB
MemFree: 36067768 kB
MemAvailable: 39705624 kB
Buffers: 36 kB
Cached: 9500788 kB
SwapCached: 0 kB
Active: 7834960 kB
Inactive: 2579036 kB
Active(anon): 963280 kB
Inactive(anon): 762620 kB
Active(file): 6871680 kB
Inactive(file): 1816416 kB
Unevictable: 47104 kB
Mlocked: 47104 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 104 kB
Writeback: 0 kB
AnonPages: 960552 kB
Mapped: 236052 kB
Shmem: 963536 kB
KReclaimable: 2174576 kB
Slab: 7453240 kB
SReclaimable: 2174576 kB
SUnreclaim: 5278664 kB
KernelStack: 48432 kB
PageTables: 19288 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 65078044 kB
Committed_AS: 19507332 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 293044 kB
VmallocChunk: 0 kB
Percpu: 74925056 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 81429276 kB
DirectMap2M: 50145280 kB
DirectMap1G: 2097152 kB
1420 次点击
所在节点    Linux
11 条回复
xiaozhaoz
25 天前
可能有硬件驱动,直接 map 了物理内存,看 directmap 能看出来。

以前碰到过类似的问题,因为 huge page , 网卡驱动有 bug ,ringbuf 占用了大量物理内存。
allplay
25 天前
Windows 也是,所有进程的 mem 加起来,小于 ram used
Myprajna
25 天前
windows 也是,任务管理器所有进程一个个加起来只用了 2G 内存,但是显示总共用了 8.8G ,已提交 18G/38.7G ,完全不准。
xiaozhaoz
25 天前
在操作系统角度来看,物理内存除了分配给用户空间进程使用,还要给内核任务、硬件外设和 cpu 交换( dma )、文件系统 buffer/cache 、内核内存算法还有开销。

所以只看资源管理器或 top 里面的用户进程不一定能查到内存消耗在哪里了。

那个设备的内核内存开销也不正常, cat /proc/slabinfo 看看。
s82kd92l
24 天前
Cache 一般是用得越多越好,只要不造成频繁 pagefault 卡顿就没事。
CFM880
24 天前
使用 htop 看看,再按内存百分比排序
Zoooooberg
24 天前
@CFM880 htop 也是只能列出来 user-space 的进程使用情况吧,这边的情况是内核内存使用异常。
Zoooooberg
24 天前
@xiaozhaoz 我也在学怎么看 slabinfo, 不过让 chatGPT 分析了一下,它说看不出来啥问题。。。。
输出太多,分 2 次回复。
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nfs4_xattr_cache_cache 0 0 2128 15 8 : tunables 0 0 0 : slabdata 0 0 0
nfs_direct_cache 0 0 224 36 2 : tunables 0 0 0 : slabdata 0 0 0
nfs_read_data 2210 2210 960 34 8 : tunables 0 0 0 : slabdata 65 65 0
nfs_inode_cache 16495 17400 1104 29 8 : tunables 0 0 0 : slabdata 600 600 0
ovl_inode 86395 131741 688 47 8 : tunables 0 0 0 : slabdata 2803 2803 0
kvm_async_pf 0 0 136 60 2 : tunables 0 0 0 : slabdata 0 0 0
kvm_vcpu 0 0 10568 3 8 : tunables 0 0 0 : slabdata 0 0 0
kvm_mmu_page_header 0 0 168 48 2 : tunables 0 0 0 : slabdata 0 0 0
x86_emulator 0 0 2672 12 8 : tunables 0 0 0 : slabdata 0 0 0
x86_fpu 0 0 4160 7 8 : tunables 0 0 0 : slabdata 0 0 0
nf_conntrack 9436 10251 320 51 4 : tunables 0 0 0 : slabdata 201 201 0
fuse_request 3392 3392 152 53 2 : tunables 0 0 0 : slabdata 64 64 0
fuse_inode 6903 6903 832 39 8 : tunables 0 0 0 : slabdata 177 177 0
rpc_inode_cache 322 322 704 46 8 : tunables 0 0 0 : slabdata 7 7 0
xfs_dqtrx 0 0 528 62 8 : tunables 0 0 0 : slabdata 0 0 0
xfs_dquot 0 0 496 33 4 : tunables 0 0 0 : slabdata 0 0 0
xfs_buf 34388 35952 384 42 4 : tunables 0 0 0 : slabdata 856 856 0
xfs_rui_item 0 0 680 48 8 : tunables 0 0 0 : slabdata 0 0 0
xfs_rud_item 16608 17040 168 48 2 : tunables 0 0 0 : slabdata 355 355 0
xfs_icr 28060 28198 176 46 2 : tunables 0 0 0 : slabdata 613 613 0
xfs_ili 274998 315840 192 42 2 : tunables 0 0 0 : slabdata 7520 7520 0
xfs_inode 461499 502976 1024 32 8 : tunables 0 0 0 : slabdata 15718 15718 0
xfs_efi_item 7410 8170 424 38 4 : tunables 0 0 0 : slabdata 215 215 0
xfs_efd_item 6956 7696 432 37 4 : tunables 0 0 0 : slabdata 208 208 0
xf_trans 41020 41090 232 35 2 : tunables 0 0 0 : slabdata 1174 1174 0
xfs_ifork 108897 149736 40 102 1 : tunables 0 0 0 : slabdata 1468 1468 0
xfs_da_state 2176 2176 480 34 4 : tunables 0 0 0 : slabdata 64 64 0
xfs_btree_cur 2304 2304 224 36 2 : tunables 0 0 0 : slabdata 64 64 0
scsi_sense_cache 2016 2016 128 32 1 : tunables 0 0 0 : slabdata 63 63 0
fsverity_info 0 0 256 32 2 : tunables 0 0 0 : slabdata 0 0 0
fscrypt_info 0 0 128 32 1 : tunables 0 0 0 : slabdata 0 0 0
ip6-frags 46332 46420 184 44 2 : tunables 0 0 0 : slabdata 1055 1055 0
PINGv6 130 130 1216 26 8 : tunables 0 0 0 : slabdata 5 5 0
RAWv6 5018 5278 1216 26 8 : tunables 0 0 0 : slabdata 203 203 0
UDPv6 1650 1650 1280 25 8 : tunables 0 0 0 : slabdata 66 66 0
tw_sock_TCPv6 2244 2244 248 33 2 : tunables 0 0 0 : slabdata 68 68 0
request_sock_TCPv6 0 0 304 53 4 : tunables 0 0 0 : slabdata 0 0 0
TCPv6 910 910 2432 13 8 : tunables 0 0 0 : slabdata 70 70 0
mqueue_inode_cache 2176 2176 960 34 8 : tunables 0 0 0 : slabdata 64 64 0
userfaultfd_ctx_cache 0 0 192 42 2 : tunables 0 0 0 : slabdata 0 0 0
dnotify_struct 0 0 32 128 1 : tunables 0 0 0 : slabdata 0 0 0
dio 0 0 640 51 8 : tunables 0 0 0 : slabdata 0 0 0
pid_namespace 3584 3584 144 56 2 : tunables 0 0 0 : slabdata 64 64 0
UNIX 6843 7136 1024 32 8 : tunables 0 0 0 : slabdata 223 223 0
ip4-frags 7880 8360 200 40 2 : tunables 0 0 0 : slabdata 209 209 0
xfrm_state 42 42 768 42 8 : tunables 0 0 0 : slabdata 1 1 0
PING 170 170 960 34 8 : tunables 0 0 0 : slabdata 5 5 0
RAW 6144 6560 1024 32 8 : tunables 0 0 0 : slabdata 205 205 0
UDP 4620 4620 1088 30 8 : tunables 0 0 0 : slabdata 154 154 0
tw_sock_TCP 11484 12012 248 33 2 : tunables 0 0 0 : slabdata 364 364 0
request_sock_TCP 3392 3392 304 53 4 : tunables 0 0 0 : slabdata 64 64 0
TCP 3221 3402 2240 14 8 : tunables 0 0 0 : slabdata 243 243 0
hugetlbfs_inode_cache 102 102 632 51 8 : tunables 0 0 0 : slabdata 2 2 0
dquot 0 0 256 32 2 : tunables 0 0 0 : slabdata 0 0 0
eventpoll_pwq 16296 16296 72 56 1 : tunables 0 0 0 : slabdata 291 291 0
dax_cache 42 42 768 42 8 : tunables 0 0 0 : slabdata 1 1 0
request_queue 67 176 2024 16 8 : tunables 0 0 0 : slabdata 11 11 0
biovec-max 1680 1832 4096 8 8 : tunables 0 0 0 : slabdata 229 229 0
biovec-128 6416 6608 2048 16 8 : tunables 0 0 0 : slabdata 413 413 0
biovec-64 13024 13184 1024 32 8 : tunables 0 0 0 : slabdata 412 412 0
khugepaged_mm_slot 0 0 112 36 1 : tunables 0 0 0 : slabdata 0 0 0
user_namespace 3840 3840 544 60 8 : tunables 0 0 0 : slabdata 64 64 0
dmaengine-unmap-256 15 15 2112 15 8 : tunables 0 0 0 : slabdata 1 1 0
dmaengine-unmap-128 30 30 1088 30 8 : tunables 0 0 0 : slabdata 1 1 0
dmaengine-unmap-16 47354 47964 192 42 2 : tunables 0 0 0 : slabdata 1142 1142 0
sock_inode_cache 15243 16263 832 39 8 : tunables 0 0 0 : slabdata 417 417 0
skbuff_fclone_cache 10496 10944 512 32 4 : tunables 0 0 0 : slabdata 342 342 0
skbuff_head_cache 5792 5824 256 32 2 : tunables 0 0 0 : slabdata 182 182 0
file_lock_cache 7326 7326 216 37 2 : tunables 0 0 0 : slabdata 198 198 0
fsnotify_mark_connector 8448 8448 32 128 1 : tunables 0 0 0 : slabdata 66 66 0
net_namespace 384 384 5120 6 8 : tunables 0 0 0 : slabdata 64 64 0
task_delay_info 41488 43503 80 51 1 : tunables 0 0 0 : slabdata 853 853 0
taskstats 2944 2944 352 46 4 : tunables 0 0 0 : slabdata 64 64 0
proc_dir_entry 30576 30576 192 42 2 : tunables 0 0 0 : slabdata 728 728 0
pde_opener 6528 6528 40 102 1 : tunables 0 0 0 : slabdata 64 64 0
proc_inode_cache 25638 26928 680 48 8 : tunables 0 0 0 : slabdata 561 561 0
seq_file 2346 2346 120 34 1 : tunables 0 0 0 : slabdata 69 69 0
Zoooooberg
24 天前
@xiaozhaoz
bdev_cache 273 273 832 39 8 : tunables 0 0 0 : slabdata 7 7 0
shmem_inode_cache 265507 266355 720 45 8 : tunables 0 0 0 : slabdata 5919 5919 0
kernfs_node_cache 426642 466784 128 32 1 : tunables 0 0 0 : slabdata 14587 14587 0
mnt_cache 16946 17850 320 51 4 : tunables 0 0 0 : slabdata 350 350 0
filp 19178 25248 256 32 2 : tunables 0 0 0 : slabdata 789 789 0
inode_cache 40841 43248 608 53 8 : tunables 0 0 0 : slabdata 816 816 0
dentry 1221907 3072426 192 42 2 : tunables 0 0 0 : slabdata 73153 73153 0
names_cache 1360 1520 4096 8 8 : tunables 0 0 0 : slabdata 190 190 0
iint_cache 0 0 120 34 1 : tunables 0 0 0 : slabdata 0 0 0
lsm_file_cache 133401 150790 24 170 1 : tunables 0 0 0 : slabdata 887 887 0
buffer_head 117 117 104 39 1 : tunables 0 0 0 : slabdata 3 3 0
uts_namespace 2368 2368 440 37 4 : tunables 0 0 0 : slabdata 64 64 0
vm_area_struct 39686 43440 200 40 2 : tunables 0 0 0 : slabdata 1086 1086 0
mm_struct 2400 2400 1088 30 8 : tunables 0 0 0 : slabdata 80 80 0
files_cache 7682 7682 704 46 8 : tunables 0 0 0 : slabdata 167 167 0
signal_cache 7199 7560 1152 28 8 : tunables 0 0 0 : slabdata 270 270 0
sighand_cache 4119 4230 2112 15 8 : tunables 0 0 0 : slabdata 282 282 0
task_struct 3716 4560 6080 5 8 : tunables 0 0 0 : slabdata 912 912 0
cred_jar 54364 59178 192 42 2 : tunables 0 0 0 : slabdata 1409 1409 0
anon_vma_chain 58680 60608 64 64 1 : tunables 0 0 0 : slabdata 947 947 0
anon_vma 43719 44022 88 46 1 : tunables 0 0 0 : slabdata 957 957 0
pid 41048 43424 128 32 1 : tunables 0 0 0 : slabdata 1357 1357 0
irq_remap_cache 44 44 8192 4 8 : tunables 0 0 0 : slabdata 11 11 0
Acpi-Operand 12768 12768 72 56 1 : tunables 0 0 0 : slabdata 228 228 0
Acpi-Parse 43295 43873 56 73 1 : tunables 0 0 0 : slabdata 601 601 0
Acpi-State 38964 39423 80 51 1 : tunables 0 0 0 : slabdata 773 773 0
numa_policy 17052 18042 264 62 4 : tunables 0 0 0 : slabdata 291 291 0
trace_event_file 41025 44804 88 46 1 : tunables 0 0 0 : slabdata 974 974 0
ftrace_event_field 13600 13600 48 85 1 : tunables 0 0 0 : slabdata 160 160 0
pool_workqueue 19568 21248 256 32 2 : tunables 0 0 0 : slabdata 664 664 0
radix_tree_node 476484 916664 584 56 8 : tunables 0 0 0 : slabdata 16369 16369 0
task_group 10808 10808 576 56 8 : tunables 0 0 0 : slabdata 193 193 0
vmap_area 42909 57024 64 64 1 : tunables 0 0 0 : slabdata 891 891 0
dma-kmalloc-8k 0 0 8192 4 8 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-4k 0 0 4096 8 8 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-2k 0 0 2048 16 8 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-1k 0 0 1024 32 8 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-512 0 0 512 32 4 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-256 0 0 256 32 2 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-128 0 0 128 32 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-64 0 0 64 64 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-32 0 0 32 128 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-16 0 0 16 256 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-8 0 0 8 512 1 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-192 0 0 192 42 2 : tunables 0 0 0 : slabdata 0 0 0
dma-kmalloc-96 0 0 96 42 1 : tunables 0 0 0 : slabdata 0 0 0
kmalloc-rcl-8k 0 0 8192 4 8 : tunables 0 0 0 : slabdata 0 0 0
kmalloc-rcl-4k 512 512 4096 8 8 : tunables 0 0 0 : slabdata 64 64 0
kmalloc-rcl-2k 0 0 2048 16 8 : tunables 0 0 0 : slabdata 0 0 0
kmalloc-rcl-1k 0 0 1024 32 8 : tunables 0 0 0 : slabdata 0 0 0
kmalloc-rcl-512 64 64 512 32 4 : tunables 0 0 0 : slabdata 2 2 0
kmalloc-rcl-256 1984 1984 256 32 2 : tunables 0 0 0 : slabdata 62 62 0
kmalloc-rcl-192 21378 21882 192 42 2 : tunables 0 0 0 : slabdata 521 521 0
kmalloc-rcl-128 45568 45568 128 32 1 : tunables 0 0 0 : slabdata 1424 1424 0
kmalloc-rcl-96 447092 1785714 96 42 1 : tunables 0 0 0 : slabdata 42517 42517 0
kmalloc-rcl-64 63003 65984 64 64 1 : tunables 0 0 0 : slabdata 1031 1031 0
kmalloc-rcl-32 0 0 32 128 1 : tunables 0 0 0 : slabdata 0 0 0
kmalloc-rcl-16 0 0 16 256 1 : tunables 0 0 0 : slabdata 0 0 0
kmalloc-rcl-8 0 0 8 512 1 : tunables 0 0 0 : slabdata 0 0 0
kmalloc-8k 1104 1172 8192 4 8 : tunables 0 0 0 : slabdata 293 293 0
kmalloc-4k 617950 618416 4096 8 8 : tunables 0 0 0 : slabdata 77302 77302 0
kmalloc-2k 8078 10048 2048 16 8 : tunables 0 0 0 : slabdata 628 628 0
kmalloc-1k 1232595 1472544 1024 32 8 : tunables 0 0 0 : slabdata 46017 46017 0
kmalloc-512 1080884 1364928 512 32 4 : tunables 0 0 0 : slabdata 42654 42654 0
kmalloc-256 60356 65248 256 32 2 : tunables 0 0 0 : slabdata 2039 2039 0
kmalloc-192 1085038 1085490 192 42 2 : tunables 0 0 0 : slabdata 25845 25845 0
kmalloc-128 27665 38112 128 32 1 : tunables 0 0 0 : slabdata 1191 1191 0
kmalloc-96 438340 841176 96 42 1 : tunables 0 0 0 : slabdata 20028 20028 0
kmalloc-64 896418 1005824 64 64 1 : tunables 0 0 0 : slabdata 15716 15716 0
kmalloc-32 222256 515712 32 128 1 : tunables 0 0 0 : slabdata 4029 4029 0
kmalloc-16 441440 736256 16 256 1 : tunables 0 0 0 : slabdata 2876 2876 0
kmalloc-8 577437 610304 8 512 1 : tunables 0 0 0 : slabdata 1192 1192 0
kmem_cache_node 1221 1344 64 64 1 : tunables 0 0 0 : slabdata 21 21 0
kmem_cache 416 416 256 32 2 : tunables 0 0 0 : slabdata 13 13 0
xiaozhaoz
24 天前
@Zoooooberg
我前面说内核 slab 内存也不太正常,因为 slab 占用了 7G 内存,一般的系统占用 2 ,3G 算比较多的。
看不懂 slabinfo ,也可以用 slabtop 直接看,可以看到哪些内核数据结构占用了较多内存。
你提供的 slabinfo ,可以看出通用 kmalloc 占用内存较多,所以还是怀疑硬件驱动模块 map 了大量内存。

我以前排查的问题是:
1. 系统启动后,内存就用了大概 50G ,应用使用很少。
2. lsmod 看哪些外挂驱动; dmesg 看内核 built-in 驱动。
3. 然后根据硬件驱动 modprobe -r 卸载驱动排查,最后定位到 intel 10G 网卡驱动有问题,再 64k 和 2M page size 的时候,multi rx ,tx queue 会导致占用大量物理内存。
4. 排查 GPU 显卡驱动时,也发现过类似问题。

物理驱动,启动后,都会分配连续内存用于设备和 cpu 交换数据,以前的内核 page size 是 4K ,驱动一般会 pagesize * count 计算要 map 的内存大小,当 pagesize 变成 64K 甚至 2M 的时候,驱动占用的内存就会变得很大。
samuel97857
16 天前
我碰到过这种情况,是有个进程递归 fork 子进程。虽然单个占的 memory 不大,但是数量到了进程数上限,然后系统崩了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1034590

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX