为什么 lsmem 和 free 显示不同的总内存?

为什么 lsmem 和 free 显示不同的总内存?

我有一台 CentOS 7 机器,有一个问题困扰着我。

当我使用 时lsmem --summary,我得到:

Memory block size:       128M
Total online memory:       8G
Total offline memory:      0B

当我使用 时free -h,我得到:

              total        used        free      shared  buff/cache   available
Mem:           7.6G        850M        1.7G        361M        5.1G        6.1G
Swap:          7.7G          0B        7.7G

为什么我在同一台机器上得到的总内存不同?

这两个命令有什么区别?

答案1

lsmem列出内存块及其状态;这些反映物理内存并以内存块为单位计数,IE您的系统上有 128MiB。为此,lsmem读取内核提供的信息/sys/devices/system/memory。在您的系统上,内核跟踪 64 个内存块,总计 8GiB。

free列出系统可用的内存; “总计”是物理内存量,减去系统保留的内存(主要用于固件目的)和内核的可执行代码。free从读取此信息/proc/meminfo

输出的差异可以通过测量的差异来解释。在所有情况下,free的总内存都将小于 的lsmem总在线内存。

相关内容