CYTUNE(8)

名前
cytune - Cyclades ドライバーパラメータのチューニング

書式
cytune [-q [-i interval]] ([-s value]|[-S value]) [-g|G] ([-t timeout]|[-T timeout]) tty [tty ...]

説明
cytune は、Cyclades ドライバーの割り込み発生の閾値の表示および、変更を行う。 Cyclades カード上の各シリアルラインは、入力データ用に12 バイトの FIFO を持っており(出力用には、別の 12 バイトの FIFO を持っている)、 閾値には、割り込みを発生させるまで FIFO 中に蓄えるデータのバイト数を指 定する。 Cyclades の tty がオープンされると、この閾値は、以下のようにボーレート によって定められたディフォルト値に設定される:

    ボーレート 閾値

    50-4800 10
    9600 8
    19200 4
    38400 2
    57600-150000 1

閾値が低すぎると、割り込み回数が増大し、マシンの負荷が高くなるため、シ ステムの全体的なスループットが低下する。閾値が高すぎると、FIFO バッファ がオーバーフローしやすくなり、データが失われることになる。また、遅 いマシンでは、割り込みの負荷に耐え切れないかも知れないため、閾値を多め に調整する必要がある。

Cyclades ドライバーが、 ENABLE_MONITORING 付でコンパイルされている場合には、cytune コマンドに、 -q オプションを指定して、モニタリング周期中に転送されたデータ数とモニタリン グ周期中の割り込み回数をレポートさせることができる。また、FIFO の状 態もレポートされる。割り込み発生時の FIFO 中の最大データ数、FIFO 中の データ数の瞬時値、それから現在のFIFO 中のデータ数がレポートされる。 この出力は、次のようになる:

    /dev/cubC0: 830 ints, 9130 chars; fifo: 11 threshold, 11 max, 11 now
       166.259866 interrupts/second, 1828.858521 characters/second

この結果をみると、このモニタリングサイクルの間、 max の値が、決して 閾値(threshold) の値を越えることがないため、割り込みは、常に所定の時間内に処理されてい ることがわかる。 この例を見るかぎりでは処理はうまく行なわれている。より長い時間サン プリングしてみて大丈夫なようならば、この設定で問題ないだろう。 Cyclades のハードウェアは、DCE から DTE へのハードウェアフロー制御のた めの RS-232C の RTS ラインをサポートしているようには見えないので、FIFO がオーバーランすると、データが失われてしまう。 cytune は、問い合わせモードで起動すると、SIGINT で終了させるか、閾値を 超えるか、あるいはタイムアウトが発生するまでのサマリーを出力する。

応答性とスループットはトレードオフの関係にある。Cyclades のカード は、高速時(高速の接続で FIFO の閾値を小さくした時)には、とても割り込み 負荷が高くなる。このため、システム上で他のタスクで使用できる CPU 時間が少なくなる。一方、閾値を大きくすると、1 文字当たりの応答にか かる時間が増大する。このことは、Cyclades のカードを使って SLIP 接続 しているホストに対して ping(8) を実行してみればわかる。SLIP を通常、 telnet(1) のような会話的な作業に使用する場合は、出来るだけ早いレスポンスを得るた めに、閾値を低くしたくなるが、SLIP をファイル転送や、WWW などに 使用する場合は、スループットに(悪)影響がでず、システムの負荷を抑える押える ために、FIFO の設定を大きな値にする方が良い。 これとは別に、.B -t あるいは、 -T オプションを使うと、cyclades がバッファをフラッシュするまでの待ち時間 を調整できる。単位は、5ms である。

Cyclades のポートにマウスをつないでいる場合は、閾値とタイムアウト値を 低い値にしたくなる。

オプション

-s value
    現在の閾値を value 文字に設定する。 tty が、他のプロセスによってオープンされていなければ、閾値は次回のオープン 時にリセットされる。指定する値は、1 〜 12 の範囲内でなくてはならない。

-t value
    現在のバッファフラッシュのタイムアウト時間を value に設定する。 tty が、他のプロセスによってオープンされていなければ、タイムアウト時間は次 回のオープン時にリセットされる。指定する値は、0 〜 255 の範囲内でな くてはならない。 value に、0 を指定すると、ディフォルト値(現在は、0x20(160ms))が使用されるが、 すぐに 0x02 (10ms) になる。設定単位は、5 ms である。

-g  現在の閾値とタイムアウト値を表示する。

-T value
    ディフォルトのバッファフラッシュタイムアウト値を value にする。 tty の次回オープン時に、この値がディフォルト値の代わりに使用される。 value に、0 を指定すると、ディフォルト値 0x20(160) となるが、すぐに、 0x02(10ms) となる。

-G  ディフォルトの閾値とバッファフラッシュタイムアウト値を表示する。

-q  tty. に関する統計情報を表示する。 この結果は、Cyclades ドライバーが、 ENABLE_MONITORING 付でコンパイルされている場合にのみ有効である。 おそらく、ディフォルトでは、 ENABLE_MONITORING はついていない。

-i interval
    統計情報を収集する周期を interval 秒に設定する。

バグ
同じポートの統計情報を取得するために、同時に、2 つの cytune を実行する と、'ints' 、'chars' 、および、'max' の値は、リセットされ、正しい結果 を得ることができない。 cytune(8) は、これを避けるべきだが、そうなっていない。

著者
Nick Simicich (njs@scifi.emi.net), with modifications by Rik Faith (faith@cs.unc.edu)

ファイル
/dev/ttyC[0-8]
/dev/cubC[0-8]

関連項目
setserial(8)

翻訳
福場 浩壮 <koso@ga2.so-net.or.jp>