Sambaパラメーターとパフォーマンス

2009年1月6日(火)
唐木 大介

パフォーマンスに影響するパラメーター「socket options」

 socket optionsパラメーターは、Sambaが送受信するソケットに関するパラメーターです。昔の推奨値は「TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192」でしたが、現在のSambaにこのまま適用しても問題はないのでしょうか。

 また、Windowsクライアントとの通信に依存したmssのサイズに合わせたチューニングを行うという情報もWeb上には存在しますので、こちらの値も検討します。

 今回は以下の4パターンで計測しました。

 ケース(1)は、以前の推奨値8192とした場合です。以下のようなパラメータ値になります。

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

 ケース(2)は、mssに依存した値(今回の環境CentOS+Windows XPではmss=1460でしたので、その6倍の8760としてあります)とした場合です。以下のようなパラメータ値になります。

socket options = TCP_NODELAY SO_RCVBUF=8760 SO_SNDBUF=8760

 ケース(3)は、socket optionsを空白に設定とした場合です。以下のようなパラメータ値になります。

socket options =

 ケース(4)は、smb.confにsocket optionsパラメーター自体を設定しない場合です。

socket optinosの正解は?

 計測の結果、ケース(4)のsocket optionsパラメーターを設定しない場合が一番高いスループットが出ました。このテストの場合、ローカルで実行するsmbtortureより、ネットワークを経由HDBENCHの結果が、実際の状態に近いものと思われ、指定値の大きさとTCP_NODELAYの有無できれいにケース(4)(3)(2)(1)の順番となっていました。

 ケース(4)の場合TCP_NODELAYだけを指定した状態となりますが、SO_RCVBUFとSO_SNDBUFは0に設定されているわけではなく、デフォルト値が適用されています。このデフォルト値はlog levelを100にして、log.smbdを参照すると以下の値でsmbdが起動していました。

SO_RCVBUF=87380
SO_SNDBUF=16384

 今回のケース(1)と(2)では手動で設定した値が、上記デフォルト値より小さな値を設定していたため、ネットワーク経由でのパフォーマンス劣化が発生していたものと推測されます。また、ケース(1)の8192は(2)の8760と数値としては、ほとんど違いが無いのですが、smbtortureでは内部スループットが大幅に劣化している点も興味深いです。

 ケース(3)の場合、SO_RCVBUFやSO_SNDBUFはデフォルトの値となりますが、TCP_NODELAYが無効となるため、smbtortureとHDBENCHともにスループットが下がりました。

 テストの結果から今回の環境では、smb.confは特に問題が無いかぎりは、socket optionsパラメーターは設定せず、デフォルトの状態(TCP_NODELAYのみ)にしておくのが良いようです。

 ケース(1)と(2)では、値に8192を指定した(1)の方が大幅に劣化していたため、Wiresharkで詳細に調査してみました。すると、SO_SNDBUF=8440以下ではパケットに「TCP Window Full」が大量発生し、linux kernel内部では10倍以上の頻度でmwait_idleやprepare_to_waitが呼ばれていました。

 この現象はCentOS 5.2に依存しており、ほかのOSでは発生しないものと思われますが、このパラメーターを利用する場合は実環境でテストを行ってください。

 次回はファイルサーバーとして利用する場合に重要なファイル属性、ユーザー属性関連のパラメーターについて解説します。

オープンソース・ソリューション・テクノロジ株式会社
ハードウエア保守、サーバーベンダーのサポート、WindowsネットワークならびにNotesDomino管理を経由し、2002年から某Linuxディストリビューターにて、OSの開発とサポート、コンサルティングを担当し、現在はそのときの上司の下でコンサルタントをしています。得意分野はLinuxとHAクラスタソフトウェア、特にハードウエアとOSの境目が好き!http://www.osstech.co.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています