自分は専らVMWareを使用しています。
ところが!!
普通に使っているとなぜか遅い....
遅い...
遅いっ!!
ゲスト側、ホスト側含めCPU使用率もメモリ使用率も悪くない。
原因は何だ?(`・ω・´)
その結果が分かりました。
(続きへ)
---
さて、まずはいろいろと調べてみる訳ですけど、もちろん疑いをもったのはHDD。
早速速度を測ってみます。 ・・・うん、問題ない(汗
とりあえず、原因は分からないですw
そこでグーグル先生のにお尋ね。
すると一件のブログ記事にたどり着きます。
「どうやら、スワップファイルである "***.vmem" が断片化を起こしているらしい。」
もちろん早速検証。
うん、たしかに2MB/s・・・ 他のファイルより遅いぞ・・・。
ここでも僕はまだ気づいていなかった。
断片化させないために必死にグーグル先生を探すが、難しい情報ばかり。
そして数時間後、「あっ!!」
やっと気づいた訳です。
「なぜわざわざHDDにメモリ内容を書き込んでいるのか」ということに。
物理メモリ内にだけでいいのにわざわざvmemファイルまでに書き込んでいるから問題になっていたわけです。
そもそも断片化が解消されてもHDDの速度に合わせていたら速度は当然遅いままなわけなのです。
ということで、またまた情報を探すが、メモリ内だけで利用する方法に出てくる情報は以下ばかり。
---
mainMem.useNamedFile = "FALSE"
MemTrimRate = "0"
---
よし、使うと思ったのですが、これは、Linuxで利用するのは賛否両論ありすぎで、しかも中には利用できないとも。
・・・
気をとり直して、続いての情報は、RAMディスクに.vmemファイルを置く方法を発見。
---
mainMem.useNamedFile = "FALSE"
tmpDirectory = "[スワップフォルダ名]"
---
・・・
これって二重にメモリに書き込んでるだけじゃないか・・・??
またまた気を取り直して、更に探し続けていると、Mac向け(VMWare Fusion)の情報にたどり着く。
MacのカーネルはUNIXだし使えるんじゃない?と思いつつやってみる。
mainMem.backing = "swap"
正解でした。
いろいろ上記のコードを検索するとLinuxで使えることが判明。
実際に動かしてももちろん何事もなかったように快適に動く。
たった一行のために振り回されるとは・・・。
ということで、もしこの件について悩まれていた方がいらっしゃいましたら一度お試しください。
---
1. /etc/vmware/configの最後の行に、「mainMem.backing = "swap"」を付け足して保存
2. マシンの再起動
3. ゲストOSの起動
4. 夢の楽園
---
※ Ubuntu 12.04で試していますが、他のLinux, UNIX系OSですと利用できるかと思われます。
VMに関して
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1008885
に依れば
MemTrimRate = "0"
mainMem.useNamedFile = "FALSE"
sched.mem.pshare.enable = "FALSE"
prefvmx.useRecommendedLockedMemSize = "TRUE"
の四行が必要との事
Linux に於いては
mainMem.useNamedFile = "FALSE" を
mainmem.backing = "swap" に置き換え
だそうです
なるほど。
useNamedFileはどうやらWindowsのみでしか使えないみたいですね。
参考になりました。ありがとうございます。