正しいメモリサイズを見つける方法は?

正しいメモリサイズを見つける方法は?

私たちは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)

関連情報