2023年2月25日土曜日

スループットだけを気にしてレイテンシを軽視したシステムの末路

Pentium 4という失敗CPUがあった。クロック1GHzの壁を越えるために多段パイプライン構造にした。LSIを設計した経験がある人ならわかろうが、パイプラインを重ねると並列処理効果が働き、クロックを上げやすい。ただしそれはパイプラインにデータが途切れなく同じ調子で入っていくときだけだ。そうでないときは性能がガタ落ちになる。

似たような話がCPUのキャッシュにもある。予めキャッシュに読み込んでおければ早いが、そうでないと遅い。命令用キャッシュなら順番に読むから大丈夫だろうと思いがちだが、分岐命令で大きく飛ぶと読み込んだキャッシュが台無しになる。データ用キャッシュでも順番に読むデータならキャッシュは効くが、飛び飛びに読むデータならキャッシュは効かない。

多段パイプライン構造は定常性能(スループット)は良いのだが、過渡性能(レイテンシや遅れと言う)が悪い。そして人間が操作する機器はスループットよりもレイテンシが良い方が扱いやすい。大型飛行機がよい例だ。大型飛行機はいったん動き始めたら速く動くのだが、操作してから動き始めるまでが遅い。だから大型飛行機を操縦するのはひどく難しい。

なんでこんなことを書き始めたかと言うと、私の会社のVPNがひどい作りのため、使っている数千人が不満を言っているのだ。私もその一人だ。なぜひどくなったかというとVPNとリモートデスクトップ通信(悲しいかなVNCではない)を多段に重ねてしまったからだ。通信速度(スループット)はそれなりに出ている。しかし遅れ(レイテンシ)が下手をすると0.5秒くらいある。キーを打ち間違えたと思ってdeleteキーを連打すると一呼吸おいてからカーソルキーが戻り始めるのだ。エディタでカーソルを移動させようとキーを叩いても動き始めるまでに間がある。そのため、カーソルが行きすぎたりする。これだと8bitマイコンのMZ-80KやPC-8001で文字入力した方がまだマシだ。VPNは会社以外でも使っているが、1段ならレイテンシは気にならない。普通に使える。それを何段も入れ子にしてしまったのが私の会社だ。1段のレイテンシは大したことなくても、何段も使うとレイテンシが大きくなって操作性がひどく悪くなる。

おかげでせっかく永遠にリモートワークOKになったのに、最近ではキーボードを打つ仕事のために出社するようになった。ローカルで打ちためてからバッチで処理できる仕事なら自宅でできるが、インタラクティブにキーボードを打った方が効率が良い仕事は出社した方がストレスが少ない。

0 件のコメント:

コメントを投稿