6つのディスクを備えたRAID 1 + 0の上にLVMの上にXFSを使用するDL380p gen8サーバーでは、同じワークロードにより、RHEL 5と比較してRHEL 6でのディスク書き込みが10倍増加し、アプリケーションが使用できなくなります。
なお、私はco6システムの最適化を可能な限り検討しているわけではありませんが、co6の動作が大幅に異なる理由を理解し、それを解決しています。
Mysql 5.5を使用して、MySQLレプリケーションをセットアップしました。 RHEL 6をOSとして使用しているgen8サーバーのMysqlスレーブはパフォーマンスが悪い、vmstatとiostatによる検査は、これらのサーバーがページアウトアクティビティの10倍、ディスクサブシステムへの書き込み量の10倍を実行することを示しています。 blktraceは、これらの書き込みがmysqlではなくカーネルによって開始されたことを示しています。
Centos 5:
[dkaarsemaker@co5 ~]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 12 252668 102684 10816864 0 0 8 124 0 0 9 1 90 0 0
1 0 12 251580 102692 10817116 0 0 48 2495 3619 5268 6 1 93 0 0
3 0 12 252168 102692 10817848 0 0 32 2103 4323 5956 6 1 94 0 0
3 0 12 252260 102700 10818672 0 0 128 5212 5365 8142 10 1 89 0 0
[dkaarsemaker@co5 ~]$ iostat 1
Linux 2.6.18-308.el5 (bc290bprdb-01.lhr4.prod.booking.com) 02/28/2013
avg-cpu: %user %Nice %system %iowait %steal %idle
8.74 0.00 0.81 0.25 0.00 90.21
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 277.76 399.60 5952.53 2890574849 43058478233
cciss/c0d0p1 0.01 0.25 0.01 1802147 61862
cciss/c0d0p2 0.00 0.01 0.00 101334 32552
cciss/c0d0p3 277.75 399.34 5952.52 2888669185 43058383819
dm-0 32.50 15.00 256.41 108511602 1854809120
dm-1 270.24 322.97 5693.34 2336270565 41183532042
avg-cpu: %user %Nice %system %iowait %steal %idle
7.49 0.00 0.79 0.08 0.00 91.64
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 300.00 32.00 4026.00 32 4026
cciss/c0d0p1 0.00 0.00 0.00 0 0
cciss/c0d0p2 0.00 0.00 0.00 0 0
cciss/c0d0p3 300.00 32.00 4026.00 32 4026
dm-0 0.00 0.00 0.00 0 0
dm-1 300.00 32.00 4026.00 32 4026
avg-cpu: %user %Nice %system %iowait %steal %idle
4.25 0.00 0.46 0.21 0.00 95.09
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 507.00 160.00 10370.00 160 10370
cciss/c0d0p1 0.00 0.00 0.00 0 0
cciss/c0d0p2 0.00 0.00 0.00 0 0
cciss/c0d0p3 507.00 160.00 10370.00 160 10370
dm-0 0.00 0.00 0.00 0 0
dm-1 507.00 160.00 10370.00 160 10370
avg-cpu: %user %Nice %system %iowait %steal %idle
5.33 0.00 0.50 0.08 0.00 94.09
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 318.00 64.00 4559.00 64 4559
cciss/c0d0p1 0.00 0.00 0.00 0 0
cciss/c0d0p2 0.00 0.00 0.00 0 0
cciss/c0d0p3 319.00 64.00 4561.00 64 4561
dm-0 0.00 0.00 0.00 0 0
dm-1 319.00 64.00 4561.00 64 4561
Centos 6では、ページアウトとディスク書き込みが10倍に増加しました。
[root@co6 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 361044 52340 81965728 0 0 19 1804 36 110 1 1 98 0 0
0 0 0 358996 52340 81965808 0 0 272 57584 1211 3619 0 0 99 0 0
2 0 0 356176 52348 81966800 0 0 240 34128 2121 14017 1 0 98 0 0
0 1 0 351844 52364 81968848 0 0 1616 29128 3648 3985 1 1 97 1 0
0 0 0 353000 52364 81969296 0 0 480 44872 1441 3480 1 0 99 0 0
[root@co6 ~]# iostat 1
Linux 2.6.32-279.22.1.el6.x86_64 (bc291bprdb-01.lhr4.prod.booking.com) 02/28/2013 _x86_64_ (32 CPU)
avg-cpu: %user %Nice %system %iowait %steal %idle
1.08 0.00 0.67 0.27 0.00 97.98
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 373.48 1203.02 115203.05 11343270 1086250748
dm-0 63.63 74.92 493.63 706418 4654464
dm-1 356.48 1126.72 114709.47 10623848 1081596740
avg-cpu: %user %Nice %system %iowait %steal %idle
0.25 0.00 0.19 0.06 0.00 99.50
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 330.00 80.00 77976.00 80 77976
dm-0 0.00 0.00 0.00 0 0
dm-1 328.00 64.00 77456.00 64 77456
avg-cpu: %user %Nice %system %iowait %steal %idle
0.38 0.00 0.19 0.63 0.00 98.81
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 570.00 1664.00 128120.00 1664 128120
dm-0 0.00 0.00 0.00 0 0
dm-1 570.00 1664.00 128120.00 1664 128120
avg-cpu: %user %Nice %system %iowait %steal %idle
0.66 0.00 0.47 0.03 0.00 98.84
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 317.00 448.00 73048.00 448 73048
dm-0 34.00 0.00 272.00 0 272
dm-1 309.00 448.00 72776.00 448 72776
RHEL 5を使用するGen 8サーバー、およびRHEL 5または6を使用するGen 7サーバーでは、この問題は発生しません。さらに、デフォルトのxfsの代わりにext3をファイルシステムとして使用するRHEL 6では、問題は発生しません。問題は本当にXFS、gen8ハードウェア、centos 6の間のどこかにあるようです。RHEL6も問題を示しています。
Edit 29/04:qlogic HBAをG8マシンに追加しました。ファイバーチャネルストレージでXFSを使用しても問題は発生しません。そのため、xfs/hpsa/p420i間の相互作用のどこかに間違いなくあります。
Rhel 8の新しいxfsは、基になるストライプ幅を検出できるようですが、hpsaドライバーを使用するp420iコントローラーでのみで、ccissを使用するp410iコントローラーでは検出できません。
xfs_infoの出力:
[root@co6 ~]# xfs_info /mysql/bp/
meta-data=/dev/mapper/sysvm-mysqlVol isize=256 agcount=16, agsize=4915136 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=78642176, imaxpct=25
= sunit=64 swidth=192 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal bsize=4096 blocks=38400, version=2
= sectsz=512 sunit=64 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
上記でOKとマークされているすべての設定で、sunit/swidthはどちらも0です。 mkfsでもnoalignマウントオプションでも、これを変更できないようです。これが原因かどうかもわかりません。
RHEL 6でXFSの問題を抱えている他の人々は、ヒュージページ、特に透過的なヒュージページを無効にすることが有益であると述べています。私たちは両方を無効にしました、問題は消えませんでした。
私たちはすでに多くのことを試し、観察しましたが、以下のどれも助けにはなりませんでした:
XFSとEL6は醜い状態に陥っています... EL6システムのXFSは、Red Hatカーネルにいくつかの上流の機能/変更が入り込んでいるため、当分の間放棄しました...
これは驚きであり、いくつかのパニックを引き起こしました: なぜ私のXFSファイルシステムは突然より多くのスペースを消費し、スパースファイルでいっぱいになるのですか?
2012年11月以降、2.6.32-279.11.1.el6
より新しいカーネルで出荷されているXFSバージョンには、Red Hat Bugzilla 860787 に起因する厄介な負荷とパフォーマンスの問題があります。それ以来、予測できないパフォーマンスと平均よりも高い実行キューがありました。
新しいシステムでは、ZFSまたは単にext4を使用しています。古いシステムについては、2.6.32-279.11.1.el6
でフリーズしています。
そのバージョンにロールバックしてみてください:
yum install kernel-2.6.32-279.11.1.el6.x86_64
上記に加えて、使用しているRAIDコントローラのタイプにより、一般的な最適化は次のとおりです。
XFSファイルシステムnoatime
をマウントします。 Tuned framework を次のように活用する必要もあります。
tuned-adm profile enterprise-storage
先読み、バリアなし、I/Oエレベーターを適切なベースラインに設定します。
編集:
XFSファイルシステムの最適化に関する多くの推奨事項があります。私は過去10年間ファイルシステムを排他的に使用しており、オペレーティングシステムに根本的な変更が発生したため、時々パラメーターを調整する必要がありました。あなたのような劇的なパフォーマンスの低下は経験していませんが、LVMも使用していません。
カーネルの世代、組み込みのデフォルト、スケジューラ、パッケージなどが異なることを考えると、それは EL5がEL6と同じように動作することを期待するのは不合理 だと思います。
[〜#〜] i [〜#〜]この時点で何をしますか?
Mkfs.xfsパラメータと、システムの構築方法を調べます。インストール中にXFSパーティショニングを使用していますか、それとも実際にパーティションを作成していますか?与えられたパラメーターにより多くの柔軟性があるため、メインOSのインストール後にXFSファイルシステムの作成を行います。
私のmkfs.xfs作成パラメーターは単純です:例えばmkfs.xfs -f -d agcount=32 -l size=128m,version=2 /dev/sdb1
。
私のマウントオプションは次のとおりです:noatime,logbufs=8,logbsize=256k,nobarrier
XFS動的事前割り当て をネイティブに実行し、そのように制約しないようにしますあなたはここにいます。それで私のパフォーマンスは向上しました。
したがって、LVMを使用しません 。特にハードウェアRAIDの上に... 特に HP Smartアレイコントローラーでは、デバイスにネイティブなLVMのような機能がいくつかあります。ただし、LVMを使用すると、RAWパーティションを作成するためのfdisk
にアクセスできません。 EL5からEL6に変更されたものの1つは、インストーラーのパーティション配置であり、fdiskに変更して、開始セクターをシリンダー境界に設定します。
HP Smartアレイコントローラーとドライブを現在のリビジョンレベルで実行していることを確認してください。その時点で、entireサーバーを 現在のHP Service Pack for ProLiantファームウェアリビジョン に更新することは理にかなっています。これは、システムで検出されたすべてのコンポーネントをアップグレードする起動可能なDVDです。
RAIDコントローラーの設定を確認します。 hpacucli ctrl all show config detail
の出力を貼り付けます。 これが私のものです。 キャッシュの比率を書き込みと読み取りの両方に偏らせたいと考えています。 75:25が標準です。このアプリケーションでは、デフォルトのstripサイズ256Kで問題ありません。
LVMなしでこれを試す可能性があります。
sysctl.conf
パラメータは何ですか?
同様の問題があり、XFSログのバージョン変更が原因であることがわかりました。バージョン2のログは、mkfs.xfsで使用されるストライプ幅セットを尊重します。 fsyncを大量に実行すると、RAIDカードはこれらのログ書き込みを偽造できなくなります。 swidth設定なしでパーティションをフォーマットすることでテストできます(RAID 1 + 0との違いはありません)。 blktrace/seekwatcherを使用して、大量のログ更新が含まれているかどうかを確認できます。