Linux
如何找到合適的記憶體大小?
我們有一台 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 減去一些保留位和核心二進制程式碼)。
您不能使用它來確定確切安裝的記憶體,除非使用啟發式…
要確定實際安裝的記憶體,您應該使用
lshw
或dmidecode
which 將顯示已安裝模組的大小;例如來自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)