115200bpsで高速だから余計な心配

  • 投稿日:
  • by



そりゃ300bpsにくらべりゃ高速でしょうけど。



かなり前のことですが、膨大なログを吐きまくるアプリがありました。


ログレベルが7段階くらいあって、最高にするとバッファが溢れてクラッシュするという。



で、もっとも信頼できるシリアルにログを吐くんです。


ご存知でしょうが、シリアルにはバッファが2段あることが多いです。


ドライバのバッファと、LSIのハードウェアバッファです。



バッファがあっても、つねに満杯なら無いのと同じです。


115200bpsで、秒間1MBのログを吐いたらどれだけCPU時間を食うか計算してみてください。



1MB=8Mb


8000000÷115200=69秒



調歩同期式でストップビット1なら1バイトで10ビットなのでもっと遅いです。これは簡易的な計算です。


たとえば、たった100KBでも、0.7秒かかるということです。1秒2秒を争う性能を謳うなら、シリアルログは停止しないといけません。


CPU時間だけでなくIO帯域も占有します。メモリマップトならバスは占有されっぱなしでしょうね。


ドライバからシリアルログを吐くなどというのは、暴挙以外の何者でもありません。



お分かりでしょうか。