You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 16.04.3 LTS下free命令显示内存小于实际4GB问题求助

解决Ubuntu 16.04下物理内存识别不全的问题

你遇到的情况很典型——BIOS和硬件检测工具lshw能正确识别4GB物理内存,但free命令只显示2610MB可用,大概率是内存被集成显卡占用或者系统启动参数限制了内存使用,下面是具体的排查和解决步骤:

先确认你的当前输出信息

free -m 输出:

vmalep@X1:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           2610        1525         108         243         976         649

sudo lshw -c memory 输出:

*-memory
       description: System Memory
       physical id: 7
       slot: System board or motherboard
       size: 4GiB
     *-bank:0
          description: Chip DDR3 Synchronous 1333 MHz (0,8 ns)
          product: HMT42556MFR6A-G7
          vendor: Hynix/Hyundai
          physical id: 0
          serial: None
          slot: ChannelA
          size: 2GiB
          width: 64 bits
          clock: 1333MHz (0.8ns)
     *-bank:1
          description: Chip DDR3 Synchronous 1333 MHz (0,8 ns)
          product: HMT42556MFR6A-G7
          vendor: Hynix/Hyundai
          physical id: 1
          serial: None
          slot: ChannelB
          size: 2GiB
          width: 64 bits
          clock: 1333MHz (0.8ns)

排查与解决步骤

1. 检查BIOS中的内存分配设置

Lenovo X1 Carbon的集成显卡(Intel HD系列)会共享系统内存作为显存,可能是BIOS里分配了过多内存给显卡:

  • 重启电脑,按F1进入BIOS设置界面
  • 找到DisplayGraphics相关选项,查看Shared MemoryVideo Memory的分配值
  • 如果分配了1.4GB左右(4GB-2.6GB≈1.4GB),可以适当调低这个值(比如设为512MB),保存设置后重启系统,再用free -m查看内存是否恢复

2. 检查内核启动参数是否限制了内存

有时候系统启动时的内核参数会强制限制可用内存:

  • 打开终端,编辑GRUB配置文件:
    sudo nano /etc/default/grub
    
  • 找到GRUB_CMDLINE_LINUX这一行,检查是否有类似mem=2610M的限制参数
  • 如果有,删除该参数,保存文件后更新GRUB:
    sudo update-grub
    
  • 重启系统后再次检查内存情况

3. 确认集成显卡的显存占用

如果BIOS里的显存分配是默认值,你可以查看当前显卡实际占用的显存:

  • 安装Intel显卡工具(Ubuntu 16.04需要添加PPA):
    sudo add-apt-repository ppa:intel-gpu-tools/ppa
    sudo apt update
    sudo apt install intel-gpu-tools
    
  • 运行工具查看显存使用:
    sudo intel_gpu_top
    
  • 在输出中查看VideoRender部分的内存占用,确认是否和缺失的内存量匹配

4. 硬件排查(可选)

虽然lshw能识别内存,但如果以上步骤都无效,可以尝试:

  • 关机后拔掉电源,重新插拔两根内存,确保内存插槽接触良好
  • 单独测试每一根内存,确认单根内存都能被系统正常识别

内容的提问来源于stack exchange,提问作者vmalep

火山引擎 最新活动