heyheytower

日々のメモです。誰かのお役に立てれば幸いです。

ファイル共有領域のSSD化

Linuxクラスタに用いているファイル共有領域をSSDにしました。
これによってボトルネックであった Disk I/O の改善が見込まれます。
(と考えていたのですが…。失敗談です)

【変更前】500GB/3.5型/SATA2/7,200rpm(Express5800 SR 搭載HDD)
【変更後】32 GB/2.5型/SATA2(SP032GBSSDE20S25 (シリコンパワー)、2,400円)
(理論値→読込:220MB/s 書込:60MB/s)

※SATA2最大3Gbps=375MB/s、SATA1最大1.5Gbps


ベンチマーク結果は以下です。
(sdaはHDD、sdbはSSD

ディスクから読み込み

root@ito-ubuntu:/home/beowulf# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 326 MB in 3.01 seconds = 108.29 MB/sec

root@ito-ubuntu:/home/beowulf# hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 460 MB in 3.01 seconds = 152.86 MB/sec

キャッシュから読み込み

root@ito-ubuntu:/home/beowulf# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 6486 MB in 2.00 seconds = 3243.55 MB/sec

root@ito-ubuntu:/home/beowulf# hdparm -T /dev/sdb
/dev/sdb:
Timing cached reads: 6900 MB in 2.00 seconds = 3450.82 MB/sec

HDD書き込み

root@ito-ubuntu:/home/beowulf#dd if=/dev/zero of=/home/beowulf/test bs=6M count=10
10+0 記録始め
10+0 記録終わり
62914560 バイト (63 MB) コピー終了, 0.0755073 s, 833 MB/s

root@ito-ubuntu:/home/beowulf#dd if=/dev/zero of=/home/beowulf/test bs=60M count=10
10+0 記録始め
10+0 記録終わり
629145600 バイト (629 MB) コピー終了, 5.72486 s, 110 MB/s

root@ito-ubuntu:/home/beowulf# dd if=/dev/zero of=/home/beowulf/test bs=100M count=10
10+0 記録始め
10+0 記録終わり
1048576000 バイト (1.0 GB) コピー終了, 9.46811 s, 111 MB/s

SSD書き込み

root@ito-ubuntu:/home/beowulf#dd if=/dev/zero of=/home/beowulf/data/test bs=6M count=10
10+0 記録始め
10+0 記録終わり
62914560 バイト (63 MB) コピー終了, 0.0720127 s, 874 MB/s

root@ito-ubuntu:/home/beowulf#dd if=/dev/zero of=/home/beowulf/data/test bs=60M count=10
10+0 記録始め
10+0 記録終わり
629145600 バイト (629 MB) コピー終了, 8.39017 s, 75.0 MB/s

root@ito-ubuntu:/home/beowulf# dd if=/dev/zero of=/home/beowulf/data/test bs=100M count=10
10+0 記録始め
10+0 記録終わり
1048576000 バイト (1.0 GB) コピー終了, 17.3354 s, 60.5 MB/s

ベンチマークプログラム「bonnie++」*1 *2 *3結果(HDD)

root@ito-ubuntu:/home/beowulf# bonnie++ -d /home/beowulf -u root
Using uid:0, gid:0.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
ito-ubuntu 15672M 836 97 104183 13 45547 6 2970 70 94462 5 169.9 7
Latency 21767us 785ms 3195ms 51621us 685ms 610ms
Version 1.96 ------Sequential Create------ --------Random Create--------
ito-ubuntu -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 23220 31 +++++ +++ 13444 12 +++++ +++ +++++ +++ +++++ +++
Latency 6344us 901us 8383us 8195us 42us 53us
1.96,1.96,ito-ubuntu,1,1341145381,15672M,,836,97,104183,13,45547,6,2970,70,94462,5,169.9,7,16,,,,,23220,31,+++++,+++,13444,12,+++++,+++,+++++,+++,+++++,+++,21767us,785ms,3195ms,51621us,685ms,610ms,6344us,901us,8383us,8195us,42us,53us

ベンチマークプログラム「bonnie++」結果(SSD

root@ito-ubuntu:/home/beowulf# bonnie++ -d /home/beowulf/data -u root
〜略〜
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -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
ito-ubuntu 15672M 335 85 63486 10 38823 7 4933 99 215935 13 2154 57
Latency 33813us 1740ms 2618ms 4592us 18214us 574ms
Version 1.96 ------Sequential Create------ --------Random Create--------
ito-ubuntu -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 30649 39 +++++ +++ 10999 10 28452 32 +++++ +++ 32174 29
Latency 319us 937us 723us 714us 214us 52us
1.96,1.96,ito-ubuntu,1,1341146910,15672M,,335,85,63486,10,38823,7,4933,99,215935,13,2154,57,16,,,,,30649,39,+++++,+++,10999,10,28452,32,+++++,+++,32174,29,33813us,1740ms,2618ms,4592us,18214us,574ms,319us,937us,723us,714us,214us,52us

まとめ

SSD を購入する際は、現在使用中の HDD についてよく調べてから、自分の使い方にあった特性の SSD を購入すること。

SSD によって劇的に disk I/O が上がると思っていたのですが、
勘違いだったようです。製品によってリードライトがかなり違いますね。
そもそも本 SSD の書き込み最大速度 60MB/s という点で、HDD といい勝負でした。*4
(ハードに疎く、HDD 書き込み速度も把握していない自分…)

読み込みはさすがに早いので使いようですから、計算用ノードが参照するファイルは
SSDに置く、書き込みはHDDに、などで住み分けができるかとも考えています。
あとは、実際にプログラムを走らせて比較してみないとですね。
(最終手段として正直に OS を入れて利用という手も)
(書き込み性能の良い物を購入してリベンジも)
(そもそもNFSで共有する時のセオリーも調べないと…)

Sequential Output Sequential Output Sequential Output Sequential Input Sequential Input Random
Per Chr Block Rewrite Per Chr Block Seeks
media Size K/sec K/sec K/sec K/sec K/sec /sec
hdd 15672M 836 104183 45547 2970 94462 169.9
ssd 15672M 335 63486 38823 4933 215935 2154
Sequential Create Sequential Create Sequential Create Random Create Random Create Random Create
Create Read Delete Create Read Delete
media files /sec /sec /sec /sec /sec /sec
hdd 16 23220 +++++ 13444 +++++ +++++ +++++
ssd 16 30649 +++++ 10999 28452 +++++ 32174


以上。