私たちは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
しかし、結果では、32Gではなく31を取得します。
コマンドのような物語free
:
free -g
total used free shared buff/cache available
Mem: 31 9 17 0 4 20
Swap: 7 0 7
それでは、コマンドから「32G」をどのように取得できますか?
答え1
MemTotal
プログラム
使用可能な合計RAMの量(つまり、物理RAMから予約されたビットとカーネルのバイナリコードの一部を引いた値)。
経験的な方法を使用している場合を除き、それを使用して正確に取り付けられたメモリを確認することはできません。
実際に取り付けられているメモリを確認するには、またはlshw
を使用してdmidecode
取り付けられているモジュールのサイズを表示する必要があります。例えばから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)