Armadilloフォーラム

「/dev/ttymxc1」のRead/Write時間について

morimayu

2018年3月6日 19時45分

森と申します。

いつもお世話になっております。

デバイスドライバ(ローダブルモジュール)より、/dev/ttymxc1をオープンしread/writeの動作検証を行っているのですが、
read/write(ドライバと実際の入出力間)の性能が悪いようです。

ボーレートを9600で設定した場合、以下の結果になっております。
パケットチャプチャー上では、Write直後10ms程度で受信(10byte程度のデータ)
readで読み取れるまでに70~80ms程度掛かっているようです。
(write後からreadまでの時間を計測)

ボーレートを38400に変更すると、やや早くなるものの、50ms程度掛かっております。
現在動作させているのは、readとwriteのみで他の負荷は無い状態です。

/dev/ttymxc1を使っての通信性能としては、これが限界なのでしょうか?
それとも、何か改善する方法等あるのでしょうか。

ご教授いただけますでしょうか。

コメント

at_mizo

2018年3月7日 9時18分

溝渕です。

> ボーレートを9600で設定した場合、以下の結果になっております。
> パケットチャプチャー上では、Write直後10ms程度で受信(10byte程度のデータ)

パリティ無しの8bitデータの場合は、start/stopも含めて、
10bit = 1Byte
です。

これより、ボーレートが9600だと、データの実効レートは、
960Byte/s
となります。

1Byte送るために必要な時間は、
1 / 960 = 約1.04ms
となります。

10Byteだと、送信後およそ10msで受信が完了するのは期待値通りのように考え
られます。

"10ms"というのは、どこからどこまでの時間でしょうか。

> readで読み取れるまでに70~80ms程度掛かっているようです。
> (write後からreadまでの時間を計測)

これは、自身でループバックした場合のことでしょうか。

また、時間はどのように測定していますか。

morimayu

2018年3月10日 0時04分

わかりにくい説明で申し訳ありませんでした。
計測したのは、以下の①から④の時間です。

①write→②相手機器
10ms後
④read←③相手機器

少し表現を変えますが、
相手機器からパケットが出力され、幹線上にパケットが流れていることを、
キャプチャーツールで確認できているが、
標準ドライバのreadとして読取れるまでの時間が数十msとかかっている感じでした。

ただ原因は、ECHOが有効になっていたためだったようです。
ECHOを無効にしたところ、受信速度も速くなりました。