
「tmux 重そう、もっと軽いのないかな?」
100並列でAI開発環境のopencodeを動かすとき、ふとそう思いました。セッション管理ツールといえばtmuxですが、バイナリサイズも大きいし、もっとシンプルで軽量なツールがあるんじゃないか。そう考えて、tmuxの代替ツールを片っ端から試してみました。
結論から言うと、100並列ならtmuxが最軽量でした。
候補たち
tmuxの代替として、以下のツールを調べました。
zmx
- 言語: Zig
- 特徴: セッション永続化のみに特化、端末状態の復元あり
- バイナリ: 1.5MB
- 依存: なし(静的リンク)
shpool
- 言語: Rust
- 特徴: 端末状態の復元あり、1サーバーで全セッション管理
- バイナリ: 未測定(今回は対象外)
- 欠点: 複数クライアント同時接続は非対応
abduco
- 言語: C
- 特徴: 超軽量、セッション一覧機能あり
- バイナリ: 52KB
- 欠点: 端末状態の復元なし(再接続時に画面が消える)
dtach
- 言語: C
- 特徴: 最小・最軽量、screenのdetach機能だけ
- バイナリ: 52KB
- 欠点: 端末状態の復元なし、セッション一覧機能なし
実測してみた
実際にインストールして、バイナリサイズとメモリ使用量を測定しました。
バイナリサイズ
| ツール | バイナリサイズ | 依存ライブラリ |
|---|---|---|
| dtach | 52KB | libutil のみ |
| abduco | 52KB | libutil のみ |
| tmux | 886KB | libevent, ncurses等 4個 |
| zmx | 1.5MB | なし(静的リンク) |
dtach/abducoは圧倒的に小さいです。zmxはlibghostty-vtを含むため、tmuxより大きくなっています。
1セッションあたりのメモリ
5セッション作成して、1セッションあたりのメモリ使用量を測定しました。
| ツール | メモリ/セッション | 端末状態復元 |
|---|---|---|
| dtach | ~1MB | ✗ |
| abduco | ~0.9MB | ✗ |
| tmux | ~2.2MB | ✓ |
| zmx | ~11MB | ✓ |
1セッションだけ見ると、dtach/abducoが圧倒的に軽いです。zmxは端末状態復元のためにlibghostty-vtを使っているので、メモリを多く使います。
100並列だとどうなる?
ここからが本題です。実際に100セッション作成して、メモリ使用量を測定しました。
| |
結果はこちら。
| ツール | 100セッション合計メモリ |
|---|---|
| tmux | 26MB |
| dtach | 98MB |
| abduco | 92MB |
tmuxが圧倒的に軽いという意外な結果になりました。
なぜtmuxが勝つのか
理由はアーキテクチャの違いです。
flowchart TB
subgraph tmux["tmux: 1サーバー共有"]
direction TB
Server[tmux server
1プロセス]
Server --> S1[session 1]
Server --> S2[session 2]
Server --> S3[...]
Server --> S100[session 100]
end
subgraph dtach["dtach/abduco: セッションごとに独立"]
direction TB
D1[dtach 1
1プロセス]
D2[dtach 2
1プロセス]
D3[...]
D100[dtach 100
1プロセス]
end
tmux: 1つのサーバープロセスが全セッションを管理 → セッションが増えてもオーバーヘッドが小さい
dtach/abduco: セッションごとに独立したプロセス → セッション数に比例してメモリ増加
dtach/abducoは「1セッションあたり」は軽いですが、大量セッションではtmuxの「1サーバーで全部管理」設計が勝ちます。
まとめ
tmuxの代替を探して、dtach、abduco、zmxを試してみましたが、100並列のような大量セッションではtmuxが最軽量でした。
「軽そうに見えて実は…」という意外な結果でしたが、アーキテクチャを理解すると納得できます。
結論: tmuxでいいじゃん
ユースケース別のまとめ:
| ユースケース | 最適解 |
|---|---|
| 1-10セッション | 何でもOK(好みで選ぶ) |
| 100並列 | tmux |
| 端末機能フル活用したい | tmux(または諦めてzmx) |
| 超軽量が絶対条件 | dtach/abduco(ただし再接続時に画面消える) |
AI開発で100並列のセッション管理が必要なら、素直にtmux使います。