いろいろやってみるにっき

なんとか自分の会社を立ち上げるところまで漕ぎ着けた、てきとーに生きている奴の日記

https化に伴い、表示できなくなっているリンクについて修復中。
2018年から遡って修正し、2015年分まで修正完了。


RAM Disk比較

プロローグ

現在弊社で開発しているアプリで、深度センサーからの動画や静止画をバンバン書き出すものがある。

intel RealSense™ Depth Camera D435

intel RealSense™ Depth Camera D435

 

 

社内ミーティングで顧客側PCの要求仕様の話になった際、専務が開発担当に遅延せずに書き出せるのかを要チェックって話をしていて、オレが

  「だったら、RAM Disk使えばいいんじゃね?」

と言うと、専務も

  「RAM Diskを作るソフトならSoftPerfect RAM Diskは定評がある」

  「でも、以前は他のディスクを追加したり切り離したりすると不安定だった」

という話になり、現行で不安定かどうかはオレが確認することに。

実際に使用したのは日本語化されているこちら。

インストール中、こんなデバイス ソフトウェアのインストールウィザードがでる。

f:id:shigeo-t:20190213040553p:plain

 

結論から言えば、ThinkPad W540のトラックパッドを交換する前に確認を開始し、マウスの(トラックポイントの)ドライバ入れ替えで10回以上リブートしたり、ディスクやSDカードを入れたり外したりで、全く問題が出なかった。

ディスクをつないだらどの程度のアクセス速度かを見たくなるのが人情。オレだけかもしれないけど。そこで測ってみることに。ついでにMac miniにもRAM Diskを作って比較してみることに。

 

制限

Windows 10でバージョン1803のThinkPad W540やW530では問題なく8GBの割り当てができたが、バージョン 1809のThinkPad T430sではこのC000009Aエラーが発生する。

f:id:shigeo-t:20190213041646p:plain

”C000009A Windows 10”でググるとSoftPerfectの回答がある。


Windows 10 バージョン 1809からMicrosoftがメモリの最大アサインサイズを変えたとある。対策したSoftPerfect RAM Diskのバージョンも存在する。しかしそれはシェアウェアシェアウェア版にするか他のRAM Disk作成ソフトにするか、ディスクの連結(スパンボリューム)にするかちょっと考えてみる。

 

脱線

ちなみにRAM Diskの思い出は2つ。学生時代、卒研のC言語コンパイルで時間が掛かっていた。PC-98FDD×2しかディスクが無いモデルで、コンパイルFDDがガチャガチャうるさい。色々MS-DOS 2.11の不具合を見つけてしまったりしてMS-DOSのマニュアルを見ることが多く、RAM Diskなるものの存在を発見。RAM Diskを作ってソースプログラムや一緒にリンクするオブジェクトファイルなどをRAM Diskにコピーしてコンパイル&リンケージすると爆速(当社比)。そこでコピーしてコンパイル・リンケージしてFDに書き戻すバッチファイルを作ってコンパイルの高速化を図った。なんでお前だけコンパイル速いんだよという話になり、そうやってオレに声を掛けた他のメンバーにもバッチファイルを進呈。声を掛けてこなかったやつは相変わらず遅いコンパイルを待っていたという話。

もう一つは、長かったWindows XP(32bit)時代。最初は256MBから始まったが徐々にメモリ搭載量が多いマシンへ。最終的には会社からの支給時には1GBだったThinkPad X200に勝手に4GBをブチこんだ。Windowsの32bit OSは3GBまでしか認識しないので余った1GBをRAM Disk化。I/Oが多いアプリの動作などに使用。

 

というわけで、ここ数年RAM Diskは作ったことが無かった。(脱線部分の文字数w)

 

 ディスク性能測定 前回までのあらすじ

 Mac miniを導入したので、ディスクの性能を測ってみた。1TB Fusion DiskはThinkPad W540で使っているCrucial MX500よりも速かった。

  W540 Mac W540 Mac
  Read[MB/s] Read[MB/s] Write[MB/s] Write[MB/s]
Seq 489.8 710.9 449.8 645.5
512K 369.2 418.0
4K 28.48 36.88 57.84 107.3
4K QD32 202.9 369.4 164.5 93.94
Seq QD32 854.5 726.7


 

 SoftPerfect RAM Diskで作成したRAM Disk

 速い。

f:id:shigeo-t:20190211105637p:plain

 

macOSでのRAM Disk作成

macOSではコマンドでサクっとRAM Diskが作成できる。

disk imageの作成にはhdiutilコマンドを使う。スペシャルファイルは空に割り当てられる。今回は/dev/disk3だった。

$ hdiutil attach -nomount ram://8000000
/dev/disk3

/dev/disk3をHFS+でフォーマット。

$ newfs_hfs /dev/disk3
Initialized /dev/rdisk3 as a 4 GB case-insensitive HFS Plus volume

好きなディレクトリにマウントする。前もって/tmpの下に/tmp/ramを作っておいた。

$ mount -t hfs /dev/disk3 /tmp/ram

そしてRAM Diskのアクセス速度を測定。意外と速くない。

f:id:shigeo-t:20190211100300p:plain

 

 比較

SSDやFusion Diskも含め比較してみた。

f:id:shigeo-t:20190211110600p:plain

W540の場合、Seqでは10倍以上である。今回弊社の作っているアプリはバンバン書き出すのでSeqの性能が良ければそれでいい。

一方Mac miniのRAM DiskはW540よりも遅い。Mac miniの場合1,600MHz LPDDR3を使っているが、W540にはDDR3L-1600メモリである。

 

仕様の違いを調べてみる。

DDR3は動作電圧1.5V、
DDR3Lは動作電圧1.35V、
LPDDR3は動作電圧1.2V、

DDR3よりDDR3L、DDR3LよりLPDDR3の方が消費電力は低い。

 うーん、メモリ単体ならMac miniのほうが速くないとおかしい。NTFSとHFS+の違いか?ここら辺はもう少し色々やって見る必要があるかも。