安装了新的16GB RAM但我的系统上看到了15.3。 为什么?

刚刚将4GB转换为16GB的RAM。 但是,当我看到我有多少内存时,它会说15.3。 我只是想知道为什么在我安装16 GB RAM时我的内存会下降。

系统细节截图

简答

它可能只是使用内存的内核。 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. 您可以通过运行memtest来测试以确保所有内存都正常工作

说明

最可能的解释是,您的图形卡或内核本身正在使用额外的空间。 如果您不熟悉,则内核是操作系统中最低级别的部分,并且您使用的任何内存都不可用,因此不会报告为免费。 内存可能由于多种原因而被使用,例如虚拟内存表,内存映射I / O,内核进程,某些高速缓存,共享图形内存等。

示例:看着我的笔记本电脑

将命令3的输出添加到15.3GiB很可能会产生几乎正好16GiB 。 在我的系统中就是这种情况:

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

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

也可以看看

  • 内核使用多少RAM? (Unix和Linux)
  • 减少保留的RAM(Arch论坛)
  • 为什么某些RAM标记为Windows 7中保留的硬件? (超级用户)
  • 为什么我的系统显示3.2GiB的RAM? (Unix和Linux)
  • Ubuntu单位政策(Ubuntu wiki)