如何查找我当前RAM的频率和类型?

我应该如何查找我的当前RAM的频率和类型?我的操作系统是Ubuntu 12.04。

1请参考 https://askubuntu.com/q/18372/255443,我认为那里有一个更好的答案。 - Simon Forsberg
8个回答

这样就可以了。
sudo lshw -short -C memory

只输出"PCI (sysfs)" - Tim
9稍等片刻,它将输出更多内容。 - Malte Skoruppa
15这不显示频率。 - Braiam
8应该是这样的,对我来说确实如此:在我的电脑上,有两行显示为“4GiB DIMM DDR3 同步 1333 MHz (0.8 ns)”(对应我安装了内存的两个插槽)。你仔细看了吗? - Malte Skoruppa
1sudo lshw -C memory > info.txt 不确定,它不会在我的终端显示,但如果我将其导入到文件中,就会显示出来。 - Matt Barnes
5这在Ubuntu 15.04上无法显示频率。可能与硬件有关。不过,Henrique提供的解决方案有效。 - holocronweaver
我的Linux Mint Mate 18上无法工作,桌面会卡住。 - Eric
不要使用“-short”。 - Binoy Babu
如果这个解决方案对您不起作用,请参考:https://askubuntu.com/a/1319201/19033 - Alberto Salvia Novella
/system/bin/sh: lshw: 找不到 - CS QGB
@CSQGB /system/bin 在 Ubuntu 上不是一个标准的可执行文件目录。听起来你可能在 BusyBox 上工作,可能是在 Android 系统上?这个网站是关于 Ubuntu 问题的。对于 Android,我建议你在 https://android.stackexchange.com/ 上提问。 - Malte Skoruppa

使用lshw命令与memory类一起使用:
$ sudo lshw -C memory
  # Some things about firmware and caches
  *-memory
       description: System Memory
       physical id: 13
       slot: System board or motherboard
       size: 8GiB
     *-bank:0
          description: DIMM [empty]
          product: [Empty]
          vendor: [Empty]
          physical id: 0
          serial: [Empty]
          slot: ChannelA-DIMM0
     *-bank:1
          description: SODIMM DDR3 Synchronous 1600 MHz (0.6 ns)
          product: M471B5273DH0-CK0
          vendor: Samsung
          physical id: 1
          serial: 34A8C7AF
          slot: ChannelA-DIMM1
          size: 4GiB
          width: 64 bits
          clock: 1600MHz (0.6ns)
     # More banks.

如你所见,我正在使用DDR3 1600MHz的内存。
另一个选择是dmidecode
$ sudo dmidecode -t memory
# dmidecode 2.9
SMBIOS 2.5 present.

Handle 0x003B, DMI type 16, 15 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Multi-bit ECC
    Maximum Capacity: Unknown
    Error Information Handle: Not Provided
    Number Of Devices: 8

Handle 0x003D, DMI type 17, 27 bytes
Memory Device
    Array Handle: 0x003B
    Error Information Handle: Not Provided
    Total Width: 72 bits
    Data Width: 64 bits
    Size: 4096 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM_A1
    Bank Locator: NODE 0 CHANNEL 0 DIMM 0
    Type: Other
    Type Detail: Synchronous
    Speed: 1067 MHz (0.9 ns)
    Manufacturer: 0x0198
    Serial Number: 0xB12A9593
    Asset Tag: Unknown
    Part Number: 9965426-037.A00LF 
# more such devices

这是为具有ECC内存的服务器(可以从Error Correction Type字段和Data WidthTotal Width之间的差异看出)。

这两个工具都是ubuntu-standard软件包的依赖项,应默认在所有Ubuntu系统上可用。以前还有一个叫做hwinfo的工具,但自Ubuntu 13.10以来不再可用。


对我来说也是:DDR3 1600 MHz。那是否意味着这两个模块都是相同类型的,我可以获得最佳性能? - H3R3T1K
@arno 是的,就我所知。同时也有一个建议,即模块应该以并行方式组织在不同的存储区域(0/2/4, 1/3/5等)以获得最佳性能-但我不知道这是迷思还是事实。 - muru
我得到的输出是:配置的内存速度:1600 MT/s。这和1600 MHz是一样的吗? - Yogi Katba
1看起来@YogiKatba是这样的(至少从https://linustechtips.com/main/topic/462465-mts-mhz/?do=findComment&comment=6206851 这个帖子看来是这样的)。 - muru
有没有办法显示所有这些扩展信息,但只针对 *-memory / *-bank:#?有很多垃圾信息,比如 *-cache#*-firmware(如果我在检查内存时,我不想看到这些)。 - undefined

我只能通过dmidecode获取这些信息,但与其使用grep命令搜索,使用正确的类型更加清晰简洁。
sudo dmidecode --type memory

1好的答案,我认为这个更容易阅读:sudo dmidecode -t memory | less -N - Eric
这也显示了关于DIMMs是否为注册或非缓冲的信息。 - Jeremy Hajek

这将为您提供您可能想要的所有信息:
sudo dmidecode | grep -A 15 Memory

是的,它显示出来了。例如,我的显示为:速度:1333 MHz 就在“类型详细信息”之后。 - Henrique Ferreira
dmidecode从BIOS返回信息...也许你的BIOS有问题...不知道。 - Henrique Ferreira
这是唯一一个显示我通用DRAM频率的命令。 - McLeary
谢谢,这对我来说是完美的答案。我已经了解所有细节了.. :) - john400

尝试使用Hardinfo信息,要安装,请在终端中运行以下命令:sudo apt-get install hardinfo 它有界面,使用起来很简单。)

1对我来说不起作用,“Memory SPD”保持为空,即使按照此处建议的方式进行了sudo modprobe eeprom操作也是如此(例如:https://github.com/lpereira/hardinfo/issues/426)。这可能是因为我的Ubuntu版本较旧,但是我要说的是,请准备好跳过一些障碍,希望它能够正常工作。 - Maarten Bodewes

其余的答案

其余的方法并不总是有效,会报告速度未知。这里有一种永远不会失败的方法。


所需软件

安装 i2c-tools


内存带宽

使用以下命令从RAM eeprom中读取值:

sudo modprobe eeprom && decode-dimms | grep speed | rev | cut --delimiter=" " --fields=2,3 | rev; sudo modprobe --remove eeprom

该值以MT/s返回。


内存频率

如果你想要以MHz为单位的数值,只需将先前的结果除以RAM模块的通道数,可以通过以下命令获取:

sudo modprobe eeprom && decode-dimms | grep Ranks | rev | cut --delimiter=" " --fields=1 | rev; sudo modprobe --remove eeprom


配置错误的主板

请注意,这是模块的速度,而不是主板配置和可用速度。

要检查主板是否配置错误,请访问BIOS或UEFI,如您的主板手册中所述。


刚才你说要获取总线时钟(MHz/s),我觉得有点奇怪,因为我应该将数据速率(Mt/s)除以二。但是lshw -short -C memory命令的输出显示总线时钟与dmidecode -t memory命令中的数据速率相等,分别为1333MHz和1333MT/s。 - polendina
@polendina 如果你执行以下命令,会得到什么结果呢:sudo modprobe eeprom && decode-dimms | grep Ranks | rev | cut --delimiter=" " --fields=1 | rev; sudo modprobe --remove eeprom - Alberto Salvia Novella
四个1分别排列在四行上 - polendina
@polendina 这意味着你的内存是单通道,而我的是双通道。我已经修改了我的回答,使其适用于任何通道数量。感谢你指出这一点。 - Alberto Salvia Novella

大多数答案只会给出内存的名义时钟速度。 这可能不是实际的时钟速度。
规范的方法是启动Memtest,或者如果您有能力的话,启动Windows并使用CPU-Z。
您可以信任BIOS,也可以信任Memtest。有大量低成本的配备1333MHz DDR3的机箱,实际上时钟频率是1066MHz。DMI解码和LSHW都可能具有欺骗性。

上面的答案是正确的;我只是想进一步添加,通过管道将命令的输出传递给grep来查找类型和速度。
sudo dmidecode --type memory | grep -m2 Type

FYI:Type中的T必须大写。
这可能会给出Type: DDR4或Type: DDR3。
用于速度。
sudo dmidecode --type memory | grep -m1 Speed

FYI:grep 的 -m 选项用于限制行数;例如 -m2 表示两行。

对我来说,它输出的是“速度:未知”。我不得不使用“-m4”来显示每个内存插槽的一行。现在它显示了速度。 - Michal Przybylowicz