为什么 dmesg | grep Memory 提供两种不同的物理内存量?

Jav*_* C. 1 memory dmesg

我正在监控我管理的服务器中的物理内存,我的硬件供应商告诉我他们已将物理内存大小增加到 4Gb...

但是,使用几种工具(free -m; top; dmesg | grep Memory; grep MemTotal /proc/meminfo 我发现我实际上有 3Gb,而不是 4...

但是,我的怀疑来自于 dmesg | grem Memory 告诉我我有 3103396k/4194304k 可用

第一个数字实际上是 3Gb,但第二个数字是 4!那么,为什么我要查看这两个不同的数字?我错过了什么吗?或者是我的提供者告诉我真相但他没有正确配置?

我不确定这个帖子是否出现在这个子论坛中,如果是,请更正并重定向我...

非常感谢!

Ale*_*gin 5

好像您在计算机上使用的是 32 位系统。内存量取决于主板(芯片组的属性),但它总是小于 4 Gb。为了避免这种情况,有两种解决方案。

  • 要使用整个 4 Gb 的 RAM,内核应编译为:

    CONFIG_HIGHMEM4G=y

    或者

    CONFIG_HIGHMEM64G=y

    选项。这将允许每个程序寻址大约 4 Gb 的系统内存。如果您将来有更多内存,则所有程序都不能使用多于一块,在 32 位操作系统上最大可达 4 Gb。

  • 另一个解决方案 - 您可以使用 64 位操作系统并使用所有可用内存。因此,如果您将获得 8、16、32 Gb 的 RAM,那么在这种情况下,每个程序都将能够使用您拥有的全部内存。

您可以在此处查看:http : //www.codinghorror.com/blog/2007/03/dude-wheres-my-4-gigabytes-of-ram.html有关使用 4 Gb 的问题的一些令人兴奋的事实32 位系统中的内存。