はじめに
Kiro-CLI を利用していたら、レスポンスが異様に遅いことに気づきました。
通常 1〜3 秒で始まるストリーミングが、30 秒以上かかることも。
原因が分からず、一度 PC をリカバリしましたが改善せず。
Linux 専用の AI ツールも多いので、同じ問題で困っている人もいるのではないでしょうか。
試したことと解決策をまとめます。
問題が発生していた環境
問題が発生していた端末の環境です。
| 項目 | 値 | 備考 |
|---|---|---|
| 端末 | HP Pavilion Aero 13-bg0000 | |
| OS | Windows 11 Build 26200 | 25H2 |
| WSL | 2.6.3 | |
| カーネル | 6.6.87 | |
| ディストリビューション | Ubuntu | バージョン: 24.04 |
| Wi-Fi | MediaTek MT7922 | 最新ドライバを利用(3.5.0.1349) |
定かではありませんが、Wi-Fi カード(MT7922)が原因と思われます。
症状
WSL2 でのみ発生。Windows 側では問題なし。
- ストリーミング開始まで 30 秒以上かかることがある
- 毎回ではなく間欠的に発生
- speedtest が失敗することも
- Windows で Gemini CLI を使ったときは正常
ストリーミング開始までが遅いので、名前解決に時間がかかっているのか?
試した対策(効果なし)
ネットで見つかる対策は一通り試しましたが、どれも効果なし。
最終的には PC 自体のリカバリも実施したが改善されず ⋯。
MT7922 のドライバ設定
- 優先バンドを 5GHz に設定
- ローミング積極性の変更
- Power Saving を無効化
vEthernet アダプタ設定
- LSO(Large Send Offload)無効化
- Checksum Offload 無効化
- IPv6 無効化
Windows 設定
- 電源設定の変更
WSL 設定
- DNS Tunneling 有効化(デフォルト)
- DNS Tunneling 無効化 + 手動 DNS(8.8.8.8)
- Mirrored Networking Mode
ディストリビューション変更
- Ubuntu 22.04
- Debian
その他
- PC リカバリ
解決策
ではどうしたのか。
WSL1 に切り替えただけです。これで通常の速度に戻りました。
wsl --set-version Ubuntu 1
切り替え後、Kiro-CLI のストリーミングは 1〜3 秒で開始されるようになりました。
WSL1 に切り替えてもデータはそのまま保持されます。
なぜ直ったのか
WSL1 と WSL2 ではネットワークの仕組みが違うようです。
| WSL1 | WSL2 | |
|---|---|---|
| ネットワーク | Windows と共有 | 仮想 NIC(vEthernet)経由 |
| IP アドレス | Windows と同じ | 別サブネット |
WSL2 は Hyper-V の仮想スイッチを経由します。
ここで MT7922 との相性問題が起きていたと思われます。
WSL1 は Windows のネットワークをそのまま使うため、問題が発生しない。
WSL1 にすると困ること
WSL1 にはいくつか制限があります。
- Docker が動かない
- systemd が使えない
- Linux GUI アプリ(WSLg)が使えない
ただ、CLI 開発(Node.js、Python 等)や Git 操作、SSH 接続などは問題なく使えます。
Docker を使う場合は WSL2 が必要です。
さいごに
6〜8 時間かけて調査して、結局 WSL1 に切り替えるだけで解決しました。
MT7922 搭載機で WSL2 が遅いと感じたら、WSL1 を試してみてください。