1. はじめに
これまでは,Linux上でMySQLを利用することが多かったが,昨今,他のOSもオープン化や利便性向上,新しいファイルシステムへの取り組み等,注目すべき点がある.本稿では,IAサーバにLinux,OpenSolaris,FreeBSDをインストールし,MySQLを稼動させ特徴や性能の評価を行う.
2. ファイルシステムについて
現在のところ,アメーバで利用しているMySQLはext3を利用している.その他の主なファイルシステムとしては,下表のようなものがある.
本稿では,特に実用性が高いと思われるext3,UFS2(以降UFSと呼ぶ),XFS,ZFSを使用する.
3. 評価
3.1. 方法
下記のベンチマーク・ソフトを用いて性能評価を行う.ただし,測定を行うデータ領域はOSがインストールされている領域とは異なるディスクとする.
1) Bonnie++ (v 1.03d)
ファイルシステム単体でのファイル読み書きの性能を測定する.
2) Super-Smack (v 1.3)
別の筺体からINSERT/SELECT/UPDATE/DELETEクエリーを発行し,スループットを測定する.
3.2. 環境
3.3. 設定(OS)
カーネルはデフォルト設定,ファイルシステムについては、以下の設定で測定を行なうこととした.
1) ext3
デフォルト
2) XFS
デフォルト(osyncisdsync)
3) ZFS
圧縮機能(compression):ON/OFFで検証
チャンクサイズ(recordsize):基本的にデフォルトの128Kで検証.レスポンスが上がらない場合は随時変更
4) UFS
soft-updateを有効とする
3.4. 設定(MySQL)
各OSでのconfigureは以下とした.
1. Linux
2. OpenSolaris
3. FreeBSD
3.5. 結果
1) Bonnie++
各OS-ファイルシステムで実行した結果を以下に示す(10回実行した結果の平均値).
この時点では,ZFS,UFSがext3を上回った.また,FreeBSDについては,UFSが最も性能が高いように見受けられる.
2) Super-Smack
上記,Bonnie++の結果を受け,以下の組み合わせに絞り込み,MySQLのスループットを計測することとした.
1. Linux – ext3 及び XFS
2. OpenSolaris – ZFS(圧縮あり/なし)
3. FreeBSD – UFS
尚,MySQLの共通条件として
MyISAMエンジンを使用
key_bufferは1Gbyte,query_cacheはOFF
使用するデータのレコードサイズは1Kbyte
とした.
結果は次項.
4. 考察
Bonnieの結果に反し,MySQLの性能がとりわけ高かったのがLinux + XFS の組み合わせだった.要因としては,XFSの遅延アロケーションが影響していると考えられる.vmstatやiostatを確認してもsyncのタイミングでI/OやLoadが一時的に高騰するものの,総合的にCPUの待ちが他と比べて少なく,高負荷時でも高いレスポンスを示した.
ZFSも遅延アロケーションが実装されているようだが,XFSには及ばなかった.また,SELECTに関しては,非常にI/Oが高くなり,他と比較すると良い結果を得られなかった.recordsizeも変えてみたが結果は悪くなるばかりだった.恐らく,MyISAMがOSのbuffre cacheを利用するということや,MySQLのconfigureやバージョン自体が適していなかったのではないかと考えられる.
FreeBSD + UFSについては,XFSの次に性能が高く,全ての検証パターンでバランスも良かった.
今回の計測に関して,性能に順位をつけるとすると,高い順に
Linux+XFS > FreeBSD+UFS > OpenSolaris+ ZFS(圧縮ON) > Linux + ext3 > OpenSolaris + ZFS(圧縮OFF)
となった.
5. 最後に
今回の結果を受け,XFSは実践でも利用していきたいと思った.安全面に関しては,ext3よりも下がるのかもしれないのでその点を踏まえてうまく利用していきたい.
また,今回検証はできなかったが以下の点は確認しておきたい.
1. XFS + innodbのO_DIRECT(OSのbuffer cacheを利用しない)の場合
2. XFS + LVM2 でのMySQLバックアップ
3. OpenSolaris上でのMySQL及び,ZFSのチューニング
4. ファイルシステムのatimeの更新なしでの性能評価
5. 各OSのオリジナルなMySQLパッケージの使用
参 考 文 献
[1] Solaris ZFS 管理ガイド
(http://docs.sun.com/app/docs/doc/819-6260)
[2] A look at MySQL on ZFS
(http://dev.mysql.com/tech-resources/articles/mysql-zfs.html)
[3] MySQL InnoDB Performance Tuning for the Solaris 10 OS
(http://developers.sun.com/solaris/articles/mysql_perf_tune.html)
[4] FreeBSD 7.0 へようこそ
(http://gihyo.jp/admin/feature/02/freebsd-7)