2012年11月11日日曜日

ZFS と io scheduler

CentOS 6 で ZFS on Linux を利用する場合に、io scheduler が性能にどのように影響するのか、少しだけ実験してみました。ZFS は自身で I/O スケジューリングを行うはずなので、Linux の io scheduler は邪魔ではないかと思ったもので。。

順番に cfq(デフォルト), noop, deadline の場合の bonnie++ のデータです。
# cat /sys/block/sdd/queue/scheduler 
noop anticipatory deadline [cfq]
# bonnie++ -u root -d /tank1
...
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
xxxx         15464M   144  99 60984  12 35507   9   345  90 95825  10 800.4  26
Latency               103ms     212ms    1351ms     751ms     547ms     556ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  9603  93 +++++ +++ 25418  97  7615  94 +++++ +++ 20001  97
Latency             37143us     734us     584us   86610us     101us    1078us
1.96,1.96,xxxx,1,1352637907,15464M,,144,99,60984,12,35507,9,345,90,95825,10,800.4,26,16,,,,,9603,93,+++++,+++,25418,97,7615,94,+++++,+++,20001,97,103ms,212ms,1351ms,751ms,547ms,556ms,37143us,734us,584us,86610us,101us,1078us
# echo noop > /sys/block/sdd/queue/scheduler 
# cat /sys/block/sdd/queue/scheduler 
[noop] anticipatory deadline cfq
# bonnie++ -u root -d /tank1
...
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
xxxx         15464M   149  99 53196  11 34046   9   360  92 105384  12 853.4  26
Latency             95853us     418ms    1455ms     596ms     374ms     561ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  9562  92 +++++ +++ 25809  96 10773  96 +++++ +++ 10272  98
Latency             35613us     299us     819us   49027us      97us     387us
1.96,1.96,xxxx,1,1352612707,15464M,,149,99,53196,11,34046,9,360,92,105384,12,853.4,26,16,,,,,9562,92,+++++,+++,25809,96,10773,96,+++++,+++,10272,98,95853us,418ms,1455ms,596ms,374ms,561ms,35613us,299us,819us,49027us,97us,387us
# echo deadline > /sys/block/sdd/queue/scheduler 
# cat /sys/block/sdd/queue/scheduler 
noop anticipatory [deadline] cfq 
# bonnie++ -u root -d /tank1
...
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
xxxx         15464M   148  99 54315  11 34406   9   355  91 105448  12 831.9  24
Latency               107ms     289ms    1232ms     689ms     318ms     621ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  9649  93 +++++ +++ 23925  85 16976  95 +++++ +++ 27138  97
Latency             35409us     735us     339us   54244us      25us     128us
1.96,1.96,xxxx,1,1352612140,15464M,,148,99,54315,11,34406,9,355,91,105448,12,831.9,24,16,,,,,9649,93,+++++,+++,23925,85,16976,95,+++++,+++,27138,97,107ms,289ms,1232ms,689ms,318ms,621ms,35409us,735us,339us,54244us,25us,128us
あちらを立てればこちらが立たず という感じです。

また、io scheduler をいじっても、FreeBSD 9.0 の ZFS 性能にはかなわないようです。
としても、CentOS 6 で ZFS を普通に使える (わたしの利用レベルでは安定しています) ことは、ありがたいことです。

最後に、この記事の掲載データは、FreeBSD 9.0 のデータを測ったのと同じマシン (ThinkPad T510)、同じボリューム (eSATA 接続の古い SAMSUNG製 SSD) のものです。

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ