さくらのVPSを使用していますが、インストールするOSによって free
コマンドの結果が変わり、物理メモリの量が減ってしまいます。
ちょっと分かりにくいと思うので、以下の例をご覧ください。
現象
case 1) OSのバージョンを上げるとメモリ搭載量が減る例
さくらのVPSで、「1G(東京第2/V5)」プラン、OSは「標準OS(CentOS8)」にてお試しを申し込みます。
この状態で free
が返すメモリ量は以下の通りです。
[root@tk2-***-***** ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) [root@tk2-***-***** ~]# free -b total used free shared buff/cache available Mem: 1028947968 178761728 481210368 13320192 368975872 692883456 Swap: 4294963200 0 4294963200
この後、 dnf update
を実行して最新版に上げて再起動すると、以下のように返って来るメモリ量が10MB程度減ります。
[root@tk2-***-***** ~]# cat /etc/redhat-release CentOS Linux release 8.4.2105 [root@tk2-***-***** ~]# free -b total used free shared buff/cache available Mem: 1016778752 98779136 744222720 6787072 173776896 770322432 Swap: 4294963200 0 4294963200
なお、この後RockyLinuxに上げても free
で返って来る物理メモリ量は 1,016,778,752byte のままでした。
case 2) カスタムOSとしてAlmaLinuxをインストールするとメモリ搭載量が減る例
さくらのVPSで、「1G(東京第2/V5)」プラン、OSは「カスタムOS(AlmaLinux)」にてお試しを申し込みます。
この状態で free
で返って来るメモリ量は以下の通り828MB程度と、大幅に減少します。
[root@tk2-***-***** httpd]# cat /etc/redhat-release AlmaLinux release 8.4 (Electric Cheetah) [root@tk2-***-***** ~]# free -b total used free shared buff/cache available Mem: 848445440 370692096 134184960 43356160 343568384 291000320 Swap: 1999630336 5283840 1994346496
case 3) 他のハイパーバイザで確認した例
さくらのVPSはハイパーバイザにKVMを使用しているため、試しに手元のHyper-V環境にて「動的メモリ無効・RAM 1024MB」にてクリーンインストールしたところ、以下のように、いずれも物理メモリ量が変動し、かつ760MB程度となる結果でした。
ちなみにインストーラ(anaconda)にてrescue modeに入って free -b
した時点で既にディストリビューション毎にメモリ認識量はバラバラなのですが、その時点では概ね 900MB 程度の結果を返します。
CentOS8.4
[root@localhost ~]# free -b total used free shared buff/cache available Mem: 781119488 179716096 361291776 5365760 240111616 474996736 Swap: 2168451072 0
AlmaLinux8.4
[root@localhost ~]# free -b total used free shared buff/cache available Mem: 781819904 176388224 351550080 5357568 254361600 479158272 Swap: 2172645376 0
RockyLinux8.4
[root@localhost ~]# free -b total used free shared buff/cache available Mem: 781127680 177455104 345628672 5361664 258043904 476631040 Swap: 2168451072 0
疑問点
case1~3のいずれにおいても以下のようになるため、物理メモリ自体は1GBで認識しているようです。
[root@localhost ~]# dmidecode -t memory | grep 'Size' | grep -v 'No Module' Size: 1 GB [root@localhost ~]# dmesg | grep Memory: [ 0.000000] Memory: 261120K/1048120K available (12293K kernel code, 2225K rwdata, 7712K rodata, 2476K init, 14048K bss, 324664K reserved, 0K cma-reserved)
これは free
コマンドのバグ(実際にメモリ量は減ってない)なのか、それとも別の要因によるもの(実際にOSが使用できるメモリ量が減る)のどちらなのでしょうか?
また、過去に作成した他のゲストマシンを見ると、ゲストに割当てるメモリ量が同一であっても、free
で返って来るメモリ量にバラつきがあることを確認しました。(CentOS6/7等で確認)
ただし、そのバラつきは1GBのメモリ量を割り当てているゲスト間でも、せいぜい数MB程度の差しかなかったのですが、今回は200MB程度の差が発生するなど、ちょっと意味が良く分からない状態です。
実はOSから認識されるメモリ量が減ることは「よくあること」なのでしょうか?
その場合、オンプレミス環境でもよくあることなのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/30 01:28