*

Hyper-Vの動的メモリは本当に動的だった!?

公開日: : 最終更新日:2014/12/17 Ubuntu, Windows

前回、無用なトラブルを避けるつもりで無難な選択をした結果、却ってロクでもない目に遭ったようだという話を書きました。

Hyper-V + Ubuntuなんてメジャーな組み合わせでは、そんなこと気にせずとも最新の環境でちゃんとうまくいくように作られているのですね…。そりゃそうだ。
で当然気になるのがもう一つの無難な(つもりの)選択、動的メモリです。

動的メモリもあえて使わない設定にしていたのですが、これもいらない配慮なんだよねと。
そんなわけで動的メモリも設定してみました。

動的メモリを試すにあたっては、ホストWindows8.1のタスクマネージャーでメモリ割り当てを確認しながら進めました。Hyper-Vマネージャーの表示でも確認できますけどね。

まず仮想マシンを起動していないときのメモリ割り当てはこんな感じ。

1mem_novm
メモリ速度のリーズナブルなところがバレてますが気にしない。

ここで固定メモリ2048Mbytesの設定で仮想マシンを起動します。するときれいに2Gbytes増えます。

2mem_before

一旦仮想マシンを落として動的メモリを設定します。スタートアップRAMは、グッと減らして512Mbytesにしてみました。

3settings

設定値を簡単に説明すると、メモリの割り当ては最小RAMと最大RAMの値の範囲で必要に応じて変動する、ただしメモリバッファー分だけ余裕をとる。起動時はまずスタートアップRAMの値だけ割り当てられる、ということです。

仮想マシンを起動してみると、あっさりメモリ割り当てが変わりました。やっぱり…。動的メモリは当たり前に使えるものなのね。
sshから入って操作してみたけれど、特に不具合は無し。

4mem_after0

こんなきっちり設定通りになるものかと疑問を感じつつ。起動直後はぴったりスタートアップメモリ設定値の0.5Gbytesだけ割り当てられているようです。

これでもし仮想マシン上でメモリの需要があった場合、最大メモリ設定値の4Gbytesまでメモリ使用量が上がるはずですよね。
仮想マシン上で以下のプログラムをブン回して検証してみました。

~/work>$ cat memeater.c
#include <stdlib.h>

void main(void) {
        while (malloc(1024 * 1024) != NULL) {}
        return;
}
~/work>$ cc -o memeater memeater.c
~/work>$ ./memeater
Killed
~/work>$

最後はOOM Killerに落とされた?ぽい。ですが、おもしろい挙動を見せてくれました。

5memeater

何か怖いくらい理屈通りの動きをしますね。しっかり4Gbytesを消費したところで頭打ちになったみたいです。

でも感心したのはここから。このまま5分ほど放置したら、

6memflush

きっちりmemeaterの浪費していたメモリが返却されました!これ素晴らしい。ここのアルゴリズムってどうなっているのでしょうね。

Hyper-Vちょっと好きになったな。

関連記事

no-ia32-libs_thumb.png

Ubuntu 14.04 64bitで32bitアプリを使う

新たにVMを作ってUbuntu 12.04から14.04に乗り換えたわけですが、セットアップしていて

記事を読む

25eth0_trouble_thumb.png

E: Internal Error, No file name for libssl1.0.0

Ubuntu 12.04機を(も)使っています。動かなくなると困る一台なので、なかなか更新する勇気が

記事を読む

am1h-hyperV-perfmon-2_thumb.png

Hyper-V 対 VMware Player対決

先日、バーチャルマシン上でプログラムをビルドすると時間がかかってしようがない。ビルドするならやっぱネ

記事を読む

22installer

Windows 8.1上でHyper-Vを試す ~Ubuntuの仮想マシンを作る(2)~

前回、空の仮想マシンを作るところまで書きました。 (なんか長かった…)。 続いてUbuntu

記事を読む

25eth0_trouble

Windows 8.1上でHyper-Vを試す ~ネットワークがつながらない~

前回、Hyper-V上の仮想マシンにUbuntuをインストールしたところまで書きました。 インスト

記事を読む

building_ubuntu_kernel

Ubuntuのカーネル再構築

実験用に作ったUbuntu13.10の仮想マシン上で、Linuxカーネルの再構築を試しました。 ま

記事を読む

32installing_thumb.png

Hyper-VでUbuntu 14.04を試す(2)

前回の続きです。 作成した仮想マシンにUbuntu 14.04のサーバー版をインストールする

記事を読む

exec_sleep

Windowsバッチファイルの処理を一時停止させる sleep コマンド

先日Windowsのバッチファイルを使っていて、不便だなと感じたことがありました。 ある実験をして

記事を読む

10installer_grub_thumb.png

Hyper-VでUbuntu 14.04を試す(1)

ついにリリースされました、Ubuntu 14.04。 実験用にインストールした13.10はともかく

記事を読む

3delete_thumb.png

Hyper-V 上の Ubuntu で非レガシーなネットワークアダプターを使えた

以前 Hyper-V上にUbuntuの仮想マシンを作りましたが、ネットワークアダプターにはレガシ

記事を読む

junctioned_VideoLAN_thumb.png
WindowsタブレットのProgram FilesをSDHCへ逃す

ここ数ヶ月、比較的低価格なWindowsタブレットが相次いで発売されて

raised1
カーネルモジュールのビルド

前回、OOM Killerの発動を検知するテスト用のカーネルモジュール

raised1
OOM Killerの発動を検知したい

今回はプログラムの話。タイトル通り、LinuxのOOM Killerが

1cpu_thumb.jpg
さよならK6-Ⅲ

何か物悲しいタイトルですが、K6-Ⅲ搭載PCを廃棄しました。かつて色ん

25eth0_trouble_thumb.png
E: Internal Error, No file name for libssl1.0.0

Ubuntu 12.04機を(も)使っています。動かなくなると困る一台

→もっと見る

PAGE TOP ↑