mdbコマンドでSCSIのTagged Command Queueing設定を確認UNIX処方箋

現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、SCSIのTCQ(Tagged Command Queueing)にかんする設定について解説する。

» 2008年09月02日 08時45分 公開
[ITmedia]

SunFire V240にRAID装置を接続して使用しています。I/O負荷が大きい場合に、SCSIのWARNINGメッセージが出力される場合があり、調べたところ、/etc/systemファイルに「set sd:sd_max_throttle = 16」と追記するとよいことが分かりました。

 ただ、この設定が正しく反映されているかを確認する方法が分かりません。特に問題なく稼働しているので、正しく設定が反映されたと思うのですが、何か確認する方法はないのでしょうか?


SCSIのTCQ(Tagged Command Queueing)にかんする設定ですね。設定が正しく反映されているか確認するには、kernelのデバッグを行うのが一番確実です。Solarisには、mdbコマンドやadbコマンドなどのデバッグ用モジュールが組み込まれており、それらを使用することで確認できます。

 mdbコマンドの場合は以下のように実行します。mdbコマンドは、Solaris 8から導入された汎用デバッグツールで、動作中のカーネルやシステムのクラッシュダンプ、ユーザープロセスのcoreファイル、およびオブジェクトファイルの低レベルデバッグと編集を行えます。adbコマンドも同様の汎用デバッガですが、Solaris 9以降mdbへのリンクとして実装されています。


# echo "sd_max_throttle/D" | mdb -k
sd_max_throttle:
sd_max_throttle:16
                ^^

sd:sd_max_throttleとは

 sd:sd_max_throttleの設定について、少し補足しておきましょう。Solarisでは、1つの論理デバイス(LUN)に対し、最大256個のI/Oプロセスを発行する設定になっています。しかし、RAID装置およびRAIDコントローラーで処理できるI/Oプロセスには制限があります。もし、RAID装置側の制限を超え新たなI/Oプロセスを受け取ってしまった場合、RAID装置はホストに対して、「Queue Full」または「Busy」のステータスを返し、そのI/Oプロセスの受け付けを拒否します。場合によってはOS上でSCSIのWARNINGメッセージが出力されます。

 この症状を回避するために、/etc/systemファイルにsd_max_throttleの設定を行うことで、論理デバイスごとのI/Oプロセスを制限します。

関連キーワード

UNIX処方箋 | Solaris | RAID | UNIX


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ