Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Jan 28, 2026 - 日記

並列でセッション管理: tmuxの代替を探したら結局tmuxが最強だった

tmux-alternatives-comparison cover image

tmux 重そう、もっと軽いのないかな?」

100並列でAI開発環境のopencodeを動かすとき、ふとそう思いました。セッション管理ツールといえばtmuxですが、バイナリサイズも大きいし、もっとシンプルで軽量なツールがあるんじゃないか。そう考えて、tmuxの代替ツールを片っ端から試してみました。

結論から言うと、100並列ならtmuxが最軽量でした。

候補たち

tmuxの代替として、以下のツールを調べました。

zmx

  • 言語: Zig
  • 特徴: セッション永続化のみに特化、端末状態の復元あり
  • バイナリ: 1.5MB
  • 依存: なし(静的リンク)

shpool

  • 言語: Rust
  • 特徴: 端末状態の復元あり、1サーバーで全セッション管理
  • バイナリ: 未測定(今回は対象外)
  • 欠点: 複数クライアント同時接続は非対応

abduco

  • 言語: C
  • 特徴: 超軽量、セッション一覧機能あり
  • バイナリ: 52KB
  • 欠点: 端末状態の復元なし(再接続時に画面が消える)

dtach

  • 言語: C
  • 特徴: 最小・最軽量、screenのdetach機能だけ
  • バイナリ: 52KB
  • 欠点: 端末状態の復元なし、セッション一覧機能なし

実測してみた

実際にインストールして、バイナリサイズとメモリ使用量を測定しました。

バイナリサイズ

ツールバイナリサイズ依存ライブラリ
dtach52KBlibutil のみ
abduco52KBlibutil のみ
tmux886KBlibevent, ncurses等 4個
zmx1.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セッション作成して、メモリ使用量を測定しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# tmux: 100セッション作成
for i in $(seq 1 100); do
  tmux new-session -d -s "bench-$i" "sleep 600"
done

# dtach: 100セッション作成
for i in $(seq 1 100); do
  dtach -n /tmp/dtach-bench/session-$i.sock sleep 600
done

# abduco: 100セッション作成
for i in $(seq 1 100); do
  abduco -n "abduco-bench-$i" sleep 600
done

結果はこちら。

ツール100セッション合計メモリ
tmux26MB
dtach98MB
abduco92MB

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使います。

参考リンク