Linuxのアップデートが遅い原因はこれだった:たった1つの設定変更で劇的に高速化
Linuxのアップデートが亀のようにゆっくり進むのを見守るのは、独特の苛立ち(あえて名付けるなら「ペンギン・レイジ」と呼んでいます)を伴います。失敗するわけでも、クラッシュするわけでも、文句を言うわけでもない。ただ、パッケージごとに交渉でもしているように、少しずつ前へ進むだけ。私のシステムは壊れていませんでしたし、ネット接続も安定していました。動画配信も、ダウンロードも、Dockerイメージの取得も、すべて問題なし。ところがapt updateに続いてapt upgradeを実行した瞬間、すべてが丁寧で、ほとんど嫌味なほどのスローペースに変わるのです。まるでLinuxが「いつかは……たどり着くよ」と言っているかのように。
そして長い間、私はそれを受け入れていました。「アップデートには時間がかかるものだろう」と。ネタバレ警告:違います。そうではないのです。
問題はシステムではなかった
遅いアップデートの原因は不適切なミラー選択
Linuxはアップデートを単一の中央サーバーからダウンロードするわけではありません。世界中にホストされた同じパッケージのコピー、「ミラー」から取得します。理論上は素晴らしい仕組みです。冗長性、速度、耐障害性。実に賢い設計。しかし現実には、システムは静かにどこかのミラーを一つ選び、あとは運を天に任せることになります。
運が良ければ、瞬時に応答してくれる高速なローカルミラーに当たります。悪ければ、地球の反対側にある、過負荷だったり性能不足だったり、単に調子の悪いサーバーにつかまってしまう。しかもシステムは喜々としてそのミラーを使い続けます。まるで長い付き合いの恋人のように。私の場合もまさにそうでした。
何も問題に見えなかったのです。エラーも警告もなし。ただ、あり得ないほど時間のかかるアップデートがあるだけ。最悪なのは、その気づきにくさです。「これは壊れている」とは思わず「アップデートってこんなにかかるんだ」と思ってしまう。違うのです。
ミラーを変えたら、すべてが変わった
より良いサーバー選択でアップデートが劇的に高速化
解決策は、失礼なほどシンプルでした。より良いミラーに切り替える。Linux MintやUbuntu系ディストリビューションなら、この機能はシステム設定に組み込まれています。ターミナルでの儀式も、フォーラム巡りも、2012年のブログ記事からコマンドをコピペすることも不要です。
- 「ソフトウェアソース」を開く
- 「ダウンロード元」または「ミラー」のセクションを探す
- 自動テストに任せるか、近隣のミラーを手動で選ぶ
- 適用してリフレッシュ
以上です。これがその「チューニング」です。もう一度アップデートを実行したとき、私はせいぜいわずかな改善を期待していました。ところが、ただ……走ったのです。パッケージが飛ぶように届き始めました。まるでシステムがついに目覚め、まともなインターネット回線を持っていたことを思い出したかのように。同じマシン、同じネットワーク、同じアップデートなのに、まったく別の体験でした。最適化したというより、最初から存在するはずのなかったリミッターを外した感覚です。
並列ダウンロードも有効化した
APTのマルチタスク化で無駄な待ち時間を排除
ミラー変更がこれほど効果的だと分かり、好奇心が刺激されました。たった一つの小さな設定でこれほど改善するなら、他にも目の前に隠れているものがあるのでは? 実際、APTはデフォルトでは控えめに設計されており、常に最も積極的なダウンロード動作を行うとは限りません。順番待ちの列に並び、自分の番を待ち、割り込みはしない。そんな振る舞いです。
共有ミラーへの配慮としては立派ですが、コーヒーが冷める前にシステムを更新したい人にとっては、あまりありがたくありません。そこで少し調整してみました。
APTの設定を変更すれば、より積極的なダウンロード動作を有効化できます。例えば以下のような設定です。
Acquire::Queue-Mode "host";
Acquire::Retries "3";さらに環境によっては、パイプラインの深さを調整したり、複数接続を許可したりすることで、きれいに一列になって順番待ちをする代わりに、効率的にファイルを取得できるようになります。
次の設定も追加しました。
Acquire::Languages "none";
話せない言語の翻訳ファイルまでダウンロードして、文化的完成度を高めてもらう必要はないでしょうから。
結果はミラー変更ほど劇的ではありませんでしたが、組み合わせることでさらなる時間短縮になりました。アップデートは「作業」であることをやめ、「バックグラウンドで起きている出来事」になり始めたのです。本来あるべき姿です。
なぜLinuxはデフォルトでこうしないのか
安定性と共有リソースへの配慮が優先される設計思想
Linuxが意図的に私たちの時間を無駄にしていると非難する前に、理由があります。ミラーは共有インフラです。もし全マシンが一斉に攻撃的な並列ダウンロードを浴びせたら、事態はたちまち混乱します。だからディストリビューションは安全策を取ります。控えめなデフォルト設定、予測可能な動作、共有サーバーへの不要な負荷なし。多くのLinuxの判断に共通する哲学です。安定性第一、パフォーマンス第二、カオスはオプション。
しかしトレードオフとして、あなたのシステムは、補助輪が本当に必要なくなってずっと後まで、補助輪をつけたまま走っているかもしれません。特に、まともな回線環境で個人のマシンを更新している場合、どこかのデータセンターにあるサーバーフリートを管理している場合とは事情が違うはずです。
修正によって取り除かれた、見えない摩擦
気づかないうちに蓄積していたストレスの正体
予想していなかった部分があります。以前の私のシステムは、明確な意味では「遅く」感じませんでした。アプリの起動は普通だし、マルチタスクもスムーズ。「パフォーマンスの問題あり」と叫んでいる箇所はありません。しかし、アップデートのたびに、低レベルの摩擦が存在しました。「うっ、また時間がかかるぞ」という感覚です。それはちょうど十分な抵抗となり、システムメンテナンスを避けたいものに感じさせていました。
ミラーを修正し、APTを郵便局の行列のような振る舞いから少し解放したことで、その摩擦は完全になくなりました。今ではアップデートは考える必要がないほど速く完了します。実行して、終わって、日常に戻る。精神的なオーバーヘッドも、待ち時間とのゲームも、背景に静かに溜まっていく小さな不満もありません。
そしてそこで気がついたのです。時には、あなたのシステムは遅いのではなく、ただ必要以上に礼儀正しいだけなのだと。そして、もう少し速くなってもいいと伝えるのに必要なのは、たった一つの小さな設定だけなのです。
-
Ubuntu Linuxを使い続けるべき8つの理由
Canonicalの「Ubuntu」は、デスクトップ向けLinuxの中で最も人気のあるディストリビューションです。しかし、同社が独自のUnityインターフェースの開発を中止して以来、その注力先は他へと移りました。現在、Canonicalの関心は、あなたがこの記事を読んでいるデバイスよりも、クラウドへと向いています。 もしCanonicalがUbuntuデスクトップにそれほど関心を持っていないなら、なぜあなたが使い続けるべきなのでしょうか?実は、このLinuxディストリビューションを使い続けるべき理由はたくさんあるのです。 1. Ubuntuに新しいテーマが登場した Ubuntuの見た目は長い
-
WSL(Windows Subsystem for Linux)をさらに快適に使うための7つのヒント
Windows Subsystem for Linux(WSL)は、近年登場した最も注目すべきソフトウェアプロジェクトのひとつです。かつてMicrosoft WindowsとLinuxは犬猿の仲と見なされていましたが、今ではデュアルブートや仮想マシンの構築なしに、Windowsシステム上で本格的なLinuxアプリケーションを実行できます。WSLをすでに使っているなら、どうすればさらに快適にできるのでしょうか?Windows Terminalを導入するMicrosoft StoreからLinuxディストリビューションをインストールするとターミナルウィンドウが使えますが、それ以外にも優れた選択肢が