Hyper-Vがメモリリーク?

  • 2016.07.22 Friday
  • 20:46

 

調べると今さら感なのだが、

Hyper-VのゲストOSで前々から気になっていたこと

 

メモリリークしていないか???

 

 

メモリが85%とか食いつぶしている。

しかし、何がそんなに喰っているのかプロセスを見ても分からない。

 

 

そういえば、以前チラッとつかってみたツールで何か分かるか?と思って調べてみると。

 

 

やはり、3.5Gとか占有しているものがあるようだ。

 

ということで、Driver Lockedをネットを調べると、

やはり、というか、ずいぶんと前からこれについて騒がれているようで、

 

さらに調べてみたところ、どうやら動的メモリを設定しているからのようです。

 

ゲスト OS の物理メモリが大量に使われている

 

同じように、RamMap等をつかっていろいろな方向から見ています。

 

 

ここに書いてある動的メモリとバルーニングについて調べてみると、こんな記事がありました。

 

Dynamic Memory in action with Hyper-V 2012/R2 – Part 2

 

なるほど、メモリリークを起こすことで、バルーニングの動きが見えてくるようです。

 

ということで、自分もこちらを参考に、メモリリークプログラムをゴリゴリ書いてテストしてみました。

 

ガベージ・コレクタを明示的に動作させるには?

 

 

さて、メモリリーク発生!ポチッ としてみると

 

 

グングン上がってきたと思ったら、ガクンとメモリが下がる現象が!?

(図の青線が凸になったところ)
 

 

プログラムは確かに1G近くのメモリを使用しているので、

さっきまでのを考えると6G近くになるのだが、

つかった分だけ下がった感じ。

 

で、RamMapで見て見ると、確かに記事の通りつかった分くらいDriver Loadedが減っています。

その代わり、Process Privateが増えています。

 

 

この状態で、メモリを解放してあげると、使った分ガッツリ減ってくれたのだが・・・

 

 

1分くらい経つと、またメモリリーク発生?

もう一度RamMapを見ると、最初と同じくらいDriver Loaded がメモリを占有しています。

 


 

ということで、動的メモリで設定している場合、

あらかじめ設定されている起動メモリ分が他に奪われないように(?)、

Driver Loadedという部分でメモリを占有しているようです。
 

ただ、それが影のプロセスとかで表面上に出てきていないので、

一見するとメモリリークしているように見えてしまうようです。

 

メモリリークしているようにみえますが、

上の実験のように、もしユーザーがメモリを使う処理をした場合は、

そちらにメモリを割り当ててくれるような動きをしているようです。

 

ただ、RamMap等を使わないと本当にメモリリークしているのかが分かりにくいですね。

 

コメント
コメントする








    
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< August 2017 >>

search this site.

よく使う、検索される投稿

categories

アマゾン

楽天

selected entries

archives

recent comment

recent trackback

profile


※当ブログはリンクフリーですが、 取材や雑誌等で掲載される場合は、事前にお知らせください

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM