穀雨|暦生活

穀雨(こくう)とは、地上にあるたくさんの穀物に、たっぷりと水分と栄養がため込まれ、元気に育つよう、天からの贈り物でもある恵みの雨が、しっとりと降り注いでいる頃のことです。 *https://www.543life.com/season/kokuu*

Research

Pueueで自動実験プログラムのタスクを管理する

Tmuxのセッション内で、長時間の実験プログラムを走らせていたのだけど、標準出力にだしていたtmuxのpaneをうっかり消してしまって、標準出力の保存や実行時間を計測するのをちゃんとしようという気持ちになった。リダイレクトでファイルに書き出すとかtimeコマンドをつけるとかは忘れやすい。

時間がかかる複数のCLIタスクをRust製ツールのPueueで管理する

この記事で紹介されていたCLIタスクを管理するPueueを使ってみることにした。

pueue add — COMMAND で追加されたコマンドは、pueueの管理下に入り、バックグラウンドで実行される。 pueue status で、タスクの一覧とそのタスクの実行状態や実行開始と終了時間が記録される。 pueue log <task id> でコマンドの出力をえることができる。

Pueueはタスクの並列実行やタスク間の依存関係を設定する機能、リモートのpueuedに接続してタスクを追加する機能などがあるらしい。実験プログラムは、サブタスクが複雑に絡み合う複雑なコードになってしまったので、pueueを基盤にして作り替えるとすっきりするかもしれない。 shawk-experiments/main.go at main · yuuki/shawk-experiments

TCP短命接続の高速化の帰着点

2021年/清明(後) TCPの短命接続の高速化、Obsidian、e34.fm、シンエヴァ 先週のTCPの短命接続の高速化について,決着がついた.

結論からいうと,一定のレートで詰まるのは,短命接続の遅さは間接的な要因でしかなくて,Go言語のレート制限の書き方の問題だった.

そもそも,somaxconnが60kに設定された状態で,20k/s 程度の接続で詰まるというのがおかしかった.tcp_abort_on_overflow=1にして,listen backlogが溢れてエラーになるかをみたところ,特にそのような挙動はなかった.

あれこれ試した結果,conns/sを固定するために使っているGoのrateパッケージの使い方が悪かった.レートを増やしたときに,目標レートに到達しないことがあって,2倍のレートでバーストを許可していた.バーストなしにすると,詰まることはなくなった.

ratelimits.md によるとuber-go rate limiter のほうがオーバヘッドが低いようなので,uber-goのほうを使うようにしてみたところ,30k conns/sぐらいなら目標レートに到達するようになった.

avoid connect overflow by yuuki · Pull Request #11 · yuuki/connperf

Obsidianのその後

2021年/清明(後) TCPの短命接続の高速化、Obsidian、e34.fm、シンエヴァ 先週からノートアプリのObsidianを使っている.今の所は,毎日Today's Noteを作って,そこにポモドーロの記録とともに,作業記録をつけていく.生活のメモも研究のメモも一緒につけている.ある程度まとまりそうな話は,個別のノートをつくって,そちらにリンクをはって,更新していく.

デメリットとしては,メモはObsidianに書くようになったので,logbookの更新が滞ってしまうこと.月曜の午前中にlogbookを更新するスケジュールをいれて凌いでいる.