/proc/meminfo 说 VmallocUsed 为 0。那么我的内核模块存储在哪里?

/proc/meminfo 说 VmallocUsed 为 0。那么我的内核模块存储在哪里?

我认为内核模块的代码存储在 vmalloc() 分配中? (事实上​​我确信内核代码正在使用 vmalloc(),而不是 kvmalloc())。那么为什么/proc/meminfo说我没有零呢VmallocUsed

$ grep Vmalloc /proc/meminfo
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
$ lsmod|head
Module                  Size  Used by
vfio_mdev              16384  0
mdev                   20480  1 vfio_mdev
vfio_iommu_type1       28672  0
vfio                   32768  2 vfio_mdev,vfio_iommu_type1
kvm_intel             237568  0
kvm                   737280  1 kvm_intel
irqbypass              16384  1 kvm
dummy                  16384  0
binfmt_misc            20480  1

答案1

出于性能原因,这些字段在 Linux 4.4 中被清零。与 glibc 链接的程序在启动时会读取此文件,并且它会造成可衡量的影响。

https://github.com/torvalds/linux/commit/a5ad88ce8c7fae7ddc72ee49a11a75aa837788e0

相关内容