2007年10月16日
CentOSでRAMディスクを使ってみる
DISK I/Oでボトルネックになっているケースに対する対策を考えてみる。
ということで、物理メモリを仮想ディスクとして利用できるRAMディスクの実験。
手軽に使えるmemcachedみたいなイメージで。
OSレベルでのファイルキャッシュで事足りることもあるかもしれないが、
明示的にメモリ内で処理できると幸せみたいなケースに有効かと思われる。
ハード、OS構成は下記。尚、ベンチマークツールはbonnie++を使用する。
■テスト構成CPU:Xeon5110*2■bonnie++インストール
Memory:4G
HDD:144G*2(SAS,15krpm,RAID-1)
OS:CentOS4.4(2.6.9-42.0.10)
#wget http://www.coker.com.au/bonnie++/bonnie++-1.03a.tgz■環境準備
cd bonnie++-1.03a
./configure
vi bonnie.h
------------------------------
>>#define MinTime (0.5)
<<#define MinTime (0.01)
------------------------------
make
# df -h■測定1(RAMディスク)
------------------------------------------------------------
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 130G 44G 80G 36% /
/dev/sda1 122M 20M 96M 18% /boot
none 2.0G 0 2.0G 0% /dev/shm
------------------------------------------------------------
# mkdir /mnt/ram
# umount /dev/shm
# mount -t tmpfs -o size=512m tmpfs /dev/shm
# mount -t tmpfs -o size=512m /dev/shm /mnt/ram
./bonnie++ -u root -d /mnt/ram -s 500 -r 250■測定2(ハードディスク)
./bonnie++ -u root -d /tmp■結果1
------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
500M 52244 99 865214 100 893525 99 55364 99 1863858 100 201366 208
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 272816 99 592291 97 320294 99 278214 100 521135 101 249569 100
read:1820M/s
write:845M/s
------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
cardinal 8G 40427 85 71808 24 23838 5 31428 58 62805 5 321.7 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 53228 97 327667 99 61305 99 55198 100 507259 99 63985 99
read:70M/s
write:61M/s
■総論
readで約26倍、writeで約14倍の速度がRAMディスクで測定された。
例えば、スレーブデータベースなどハードウェアレベルで冗長化された物に対しては、
利用できる可能性もあるかも。
後は、PEARのCache_Liteをmemcachedで行うより簡単に実装ができるような。


関連ページ
memcachedをレプリケーションセッション用にmemcachedを導入してみる
素人がサーバを構築してみた