Windows8 64bitのローカルサーバにRamdiskを設定しキャッシュファイルの処理時間を計測
SoftPerfect RAM Disk
利用するRamdiskのソフトはSoftPerfect RAM Diskというものを選択。
これまでは、DATARAM RAM Diskを利用してきたが、SoftPerfect RAM Diskの方がインストールや設定がシンプルで簡単に行うことができる。また、パフォーマンスも他のRamdiskソフトよりも高速に読み込みと書き込みが可能なようだ。
インストール
ダウンロードはページの下の方にリンクがあるのでそこから行う。
http://www.softperfect.com/products/ramdisk/
ダウンロードしたexeファイルをダブルクリックし[次へ]で進めていくことで特に問題なくインストールすることができる。
設定
SoftPerfect RAM Diskを起動すると画像の画面になる。
プラスマークをクリックすると下の表示となります。
- 容量
- ドライブ名
- ファイルシステム
を画像のように設定しました。設定したらOKボタンを押します。
SドライブがRamdiskとして追加されました。エクスプローラーにもSドライブが追加されたことが確認できます。
SoftPerfect RAM Diskは、非常に簡単にセットアップができます。
ページキャッシュの処理時間を計測
計測対象としてWordPressの個別記事ページを対象として、その個別記事の静的なHTMLをページキャッシュし、キャッシュ前と後で処理時間を計測します。
計測の方法は、apacheのログに記録する時間をマイクロ秒で記録する機能を利用します。
LogFormatの設定
apacheのLogFormatで%Dを設定するとマイクロ秒を記録することが可能。そのため下の設定をhttpd.confに追加した。
LogFormat "%h %l %u %t \"%r\" %>s %b %D" common CustomLog logs/access_wordpress38ja2.log common
この設定でログに処理時間が記録されることになる。
計測結果
ブラウザから連続でアクセスしたログは以下のようになった。
通常のハードディスク
192.168.0.2 - - [09/Mar/2014:06:35:03 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 967121 192.168.0.2 - - [09/Mar/2014:06:35:11 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 11003 192.168.0.2 - - [09/Mar/2014:06:35:13 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 7000 192.168.0.2 - - [09/Mar/2014:06:35:15 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 5003 192.168.0.2 - - [09/Mar/2014:06:35:18 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 10003 192.168.0.2 - - [09/Mar/2014:06:35:20 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 7000 192.168.0.2 - - [09/Mar/2014:06:35:23 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 8003 192.168.0.2 - - [09/Mar/2014:06:35:25 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 7997 192.168.0.2 - - [09/Mar/2014:06:35:28 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 6001 192.168.0.2 - - [09/Mar/2014:06:35:30 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 6002 192.168.0.2 - - [09/Mar/2014:06:35:33 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 8001
Ramdisk
192.168.0.2 - - [09/Mar/2014:06:36:21 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 834106 192.168.0.2 - - [09/Mar/2014:06:36:29 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 7965 192.168.0.2 - - [09/Mar/2014:06:36:32 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 8040 192.168.0.2 - - [09/Mar/2014:06:36:34 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 10001 192.168.0.2 - - [09/Mar/2014:06:36:37 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 6996 192.168.0.2 - - [09/Mar/2014:06:36:39 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 5998 192.168.0.2 - - [09/Mar/2014:06:36:42 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 7001 192.168.0.2 - - [09/Mar/2014:06:36:45 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 8003 192.168.0.2 - - [09/Mar/2014:06:36:47 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 6004 192.168.0.2 - - [09/Mar/2014:06:36:49 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 5001 192.168.0.2 - - [09/Mar/2014:06:36:52 +0900] "GET /2014/02/11/hello-test-blog/ HTTP/1.1" 200 10273 6997
双方ともに一度目のアクセスはページキャッシュを生成するコストが入っているので高くなっていて、2回目以降のアクセスは処理時間が大きく減少している。しかし、上のログからは2回目以降(キャッシュヒット時)はそれほどRamdiskの優位性は確認できない。そのため、Apache Benchで計測したRequests per secondを計測した。
C:\xampp\apache\bin>ab -c 10 -n 1000 http://test2.wordpress38ja2.local/2014/02/11/hello-test-blog/
ABを実行したところ、
Requests per second: 191.88 [#/sec] → 通常のハードディスク
Requests per second: 249.47 [#/sec] → Ramdisk
という結果になった。やはりRamdiskのほうが有利であった。