Linux

如何找到合適的記憶體大小?

  • August 31, 2021

我們有一台 32G 的 Linux 機器。我們擷取記憶體如下:

mem=` cat /proc/meminfo | grep MemTotal | awk '{print $2}' `
echo $mem
32767184

現在我們將其轉換為 GIGA:

mem_in_giga=`  echo $(( $mem / 1024 / 1024)) `
echo $mem_in_giga
31

但從結果中我們得到 31 而不是 32G。

free與命令相同的故事:

free -g
             total        used        free      shared  buff/cache   available
Mem:             31           9          17           0           4          20
Swap:             7           0           7

那麼我們如何從任何命令中獲取“32G”呢?

MemTotal 節目

總可用 RAM(即物理 RAM 減去一些保留位和核心二進制程式碼)。

您不能使用它來確定確切安裝的記憶體,除非使用啟發式…

要確定實際安裝的記憶體,您應該使用lshwdmidecodewhich 將顯示已安裝模組的大小;例如來自lshw

*-memory
     description: System Memory
     physical id: 4c
     slot: System board or motherboard
     size: 32GiB
     capabilities: ecc
     configuration: errordetection=ecc

或更緊湊的形式 ( lshw -class memory -short):

H/W path           Device      Class          Description
=========================================================
/0/0                           memory         64KiB BIOS
/0/47/48                       memory         256KiB L1 cache
/0/47/49                       memory         1MiB L2 cache
/0/47/4a                       memory         8MiB L3 cache
/0/4c                          memory         32GiB System Memory
/0/4c/0                        memory         8GiB DIMM DDR3 Synchronous 1600 MHz (0.6 ns)
/0/4c/1                        memory         8GiB DIMM DDR3 Synchronous 1600 MHz (0.6 ns)
/0/4c/2                        memory         8GiB DIMM DDR3 Synchronous 1600 MHz (0.6 ns)
/0/4c/3                        memory         8GiB DIMM DDR3 Synchronous 1600 MHz (0.6 ns)

引用自:https://unix.stackexchange.com/questions/421193