web-dev-qa-db-ja.com

lsmemとfreeが異なる合計メモリを表示するのはなぜですか?

CentOS 7マシンを持っていますが、気になる質問があります。

lsmem --summaryを使用すると、次のようになります。

Memory block size:       128M
Total online memory:       8G
Total offline memory:      0B

free -hを使用すると、次のようになります。

              total        used        free      shared  buff/cache   available
Mem:           7.6G        850M        1.7G        361M        5.1G        6.1G
Swap:          7.7G          0B        7.7G

同じマシンで合計メモリが異なるのはなぜですか?

これら2つのコマンドの違いは何ですか?

3
Chris Kao

lsmemは、メモリブロックとその状態を一覧表示します。これらは物理メモリを反映し、メモリブロックの単位でカウントされますつまりシステムでは128MiBです。これを行うために、lsmemはカーネルによって/sys/devices/system/memoryで利用可能にされた情報を読み取ります。システムでは、カーネルは64個のメモリブロックを追跡して合計8GiBになります。

freeは、システムで使用可能なメモリを一覧表示します。 「合計」は、物理メモリの量から、システムによって予約されているメモリ(主にファームウェアの目的で)とカーネルの実行可能コードを差し引いたものです。 freeはこの情報を /proc/meminfo から読み取ります。

出力の違いは、この測定値の違いによって説明されます。いずれの場合も、freeの合計メモリはlsmemの合計オンラインメモリよりも少なくなります。

4
Stephen Kitt