简短答案

简短答案

刚刚将 4GB 的 RAM 换成了 16GB。但是,当我查看内存容量时,显示为 15.3。我只是想知道为什么我刚安装 16 GB 的 RAM 时内存容量就下降了。

系统详细信息截图

答案1

简短答案

可能只是内核占用了内存。Ubuntu 不会报告内核内存使用情况,而是从总可用内存中减去。这只是为了让您知道在大多数情况下内核内存无法释放。该内存用于绝对必要的事情,因此永远不会可用。

诊断命令

我并不指望您运行所有这些命令,但我将它们包含在这里以供参考和完整性。最相关的是命令 3 和 4。另外请注意,无论单位缩写是什么,所有大小都将以 2 为基数(例如GiB),而不是以 10 为基数(例如GB)。

  1. 您可以使用以下方法检查您的 RAM 条声称有多大:

    sudo dmidecode | grep Size | grep MB
    
  2. 您可以使用以下命令检查可用于一般用途的 RAM 量(查找Memtotal):

    free -h
    
  3. 您可以使用以下命令估计内核使用了多少内存:

    cat /proc/meminfo | grep Slab
    
  4. 您可以使用以下方法检查“被盗”的显卡内存:

    dmesg | grep stolen
    
  5. 您可以通过以下方式查找特定的硬件保留内存:

    dmesg | grep e820
    
  6. 你可以通过以下方法测试以确保你的所有内存都正常工作运行内存测试

解释

最可能的解释是,额外的空间被您的显卡或内核本身使用。如果您不熟悉,内核是操作系统的最低级部分,它使用的任何内存对您来说都是不可用的,因此不会报告为空闲。内存可能因多种原因而被使用,例如虚拟内存表、内存映射 I/O、内核进程、某些缓存、共享图形内存等。

例如:查看我的笔记本电脑

将命令 3 的输出添加到您的结果中很可能15.3GiB会产生几乎完全相同的结果16GiB。在我的系统中就是这种情况:

  • 安装的 RAM:6GiB
  • 在系统设置 > 详细信息中报告:5.6GiB
  • 输出cat /proc/meminfo | grep Slab316652 kB
  • 转换成GiB316652/2^20 = 0.3GiB
  • 输出dmesg | grep stolen32768K
  • 转换成GiB32768/2^20 = 0.03GiB
  • 将它们加在一起:5.6 + 0.3 + 0.03 = 5.93GiB

由于Slab内存并不全面,我们可以假设内核0.07GiB在我们看不到的地方使用剩余的内存,所以这是一个非常令人满意的结果。

也可以看看

相关内容