procon_bypass_manの開発日記4

前回 http://blog.jiikko.com/176

前回のアップデートからの差分と今やっていることを書いていく。

0.2.1を公開しました

入力表示ができるようになりました。
https://github.com/splaplapla/switch-procon-input-viewer
解説記事はzennに書いたので端折ります。 https://zenn.dev/jiikko/articles/2ef0ccbdfe0fe7

今やっていること

ラグ具合の可視化

以前から、バイパス処理中のパフォーマンスモニタリングをやりたいと思っていて、ようやく着手しました。
実装をしてみると意外に大変でした。
なぜなら、バイパスは、毎秒70回行っており、収集すると結構大きなデータになります。収集したメトリクスを集計し、サーバに送信するという要件を、愚直に実装するとバイパス自体のパフォーマンスが悪化することが目に見ていたので、「収集したメトリクスの集計」と「集計したデータの送信」を別プロセスで行うのは必須要件となっていました。
プロセス間通信には、前にも使ったdrubyを使い、収集したメトリクスをバッファリングしていい感じにすると、既存機能のパフォーマンスを落とすことなく実装することができました。

pbmがpbm-cloudと連携している場合は、収集したメトリクスを、https://pbm-cloud.herokuapp.com/ に送信します。
pbmのmasterブランチの実装では、サーバに送信しているんですが、 サーバ側にはグラフを表示する機能はまだです。
https://github.com/splaplapla/procon_bypass_man_cloud/pull/97

コントローラーのラグを小さくする

現在公開しているバージョンには、操作中のタイムラグがどうしても増えやすい実装になっていることに気がついたので、それの改善をやっています。
おそらく修正できたと思います。現在の形になるまでには、力技でバイパス自体を並列化したり、右往左往しましたが、いい感じの着地ができたように思います。
https://github.com/splaplapla/procon_bypass_man/pull/164

パフォーマンスモニタリングの実装の検証が終わって、もう少しテストしたらリリースしたいと思います。

おわり