我认为内核模块的代码存储在 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