使用 psutil 显示的总内存与使用 linux free 命令显示的非常不同

问题描述

我的系统上有 16 GB 内存。当我调用 psutil.virtual_memory() 时,我得到以下输出:

svmem: svmem(total=16645505024,available=11897528320,percent=28.5,used=3655700480,free=9460736000,active=4557766656,inactive=1540661248,buffers=192524288,cached=3336544256,shared=765763584,slab=259469312)

当我在 linux 中使用 free 命令时,我得到以下输出:

              total        used        free      shared  buff/cache   available
Mem:       16255376     3932008     8559892     1012532     3763476    10989204
Swap:       7910396           0     7910396

来自/proc/meminfo的输出

MemTotal:       16255096 kB
MemFree:         7364100 kB
MemAvailable:   10076292 kB
Buffers:          174508 kB
Cached:          4166520 kB
SwapCached:            0 kB
Active:          5124828 kB
Inactive:        2277680 kB
Active(anon):    4022420 kB
Inactive(anon):   494860 kB
Active(file):    1102408 kB
Inactive(file):  1782820 kB
Unevictable:      951160 kB
Mlocked:              80 kB
SwapTotal:       7910396 kB
SwapFree:        7910396 kB
Dirty:               432 kB
Writeback:             0 kB
AnonPages:       4012684 kB
Mapped:          1452264 kB
Shmem:           1461568 kB
KReclaimable:     165196 kB
Slab:             292904 kB
SReclaimable:     165196 kB
SUnreclaim:       127708 kB
KernelStack:       37312 kB
PageTables:       126352 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    16037944 kB
Committed_AS:   22750636 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       56604 kB
VmallocChunk:          0 kB
Percpu:             6016 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      379288 kB
DirectMap2M:    12062720 kB
DirectMap1G:     5242880 kB

这里的主要问题是 psutil 数据(以字节为单位)转换为超过 16GB 的内存。当然,这不可能是真的。我的期望是得到一个值,告诉我我有 16 GB 内存。价值不能跨越实际价值吗?

我知道 free 输出以 kb 为单位,而 psutils 以字节为单位,但我绝对看不到它们中的奇偶校验。为什么值这么差?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)