現代のコンピューターの世界では、起動時間は重要な要素の 1 つです。場合によっては、効率を高め、ユーザー エクスペリエンスを向上させるために、サーバーまたはコンピューターを迅速に起動する必要があります。 Linux システムでは、起動時間を最適化することが非常に重要です。この記事では、さまざまなツールを使用して Linux システムの起動時間を分析および改善する方法を紹介します。
クイック スタートまたはクイック リスタートは、さまざまな状況で重要な役割を果たします。すべてのサービスの高可用性とより優れたパフォーマンスを維持するには、組み込みデバイスの高速起動が非常に重要です。高速ブートが有効になっていない Linux オペレーティング システムを実行している通信デバイスについて考えてみます。この特定の組み込みデバイスに依存するすべてのシステム、サービス、およびユーザーが影響を受ける可能性があります。これらのデバイスがサービスの高可用性を維持することは非常に重要であり、そのためには高速な起動と再起動が重要な役割を果たします。
電気通信機器の不具合やシャットダウンは、たとえほんの数秒であっても、インターネット上の無数のユーザーに大混乱を引き起こす可能性があります。したがって、タイム クリティカルな多くのデバイスや通信機器にとって、デバイスにクイック ブート機能を組み込んで、すぐに作業に戻れるようにすることが非常に重要です。図 1 から Linux のブート プロセスを理解しましょう。
図 1: 起動プロセス
監視ツールと起動プロセス
ユーザーがマシンに変更を加える前に知っておくべき要素が多数あります。これには、コンピューターの現在の起動速度に加え、リソースを大量に消費して起動時間を長くしているサービス、プロセス、アプリケーションが含まれます。
スタートアップ図
起動速度と起動中に開始されるさまざまなサービスを監視するには、ユーザーは次のコマンドを使用してインストールできます。 リーリー
起動するたびに、起動グラフによって png ファイルがログに保存され、ユーザーは png ファイルを表示してシステムの起動プロセスとサービスを理解できるようになります。これを行うには、次のコマンドを使用します:リーリー
png ファイルを表示するにはアプリケーションが必要な場合があります。 Feh は、コンソール ユーザー向けの X11 画像ビューアです。他のほとんどの画像ビューアとは異なり、洗練されたグラフィカル ユーザー インターフェイスはありませんが、画像を表示するためにのみ使用されます。 Fehではpngファイルを閲覧することができます。次のコマンドを使用してインストールできます:リーリー
feh xxxx.png を使用して png ファイルを表示できます。
図 2: 起動図
図 2 は、表示されているブートストラップ イメージの PNG ファイルを示しています。
systemd-analyze
ただし、Ubuntu 15.10 以降のバージョンではブート イメージは必要なくなりました。起動速度に関する簡単な情報を取得するには、次のコマンドを使用します:リーリー
図 3: Systemd 分析の出力
グラフ 3 は、systemd-analyze コマンドの出力を示しています。コマンド systemd-analyzeblame は、初期化にかかった時間に基づいて、実行中のすべてのユニットのリストを出力するために使用されます。この情報は非常に役立ち、起動時間を最適化するために使用できます。 systemd はこれらのサービスがすぐに開始されると見なすため、systemd-analyzeblame は type=simple のサービスを表示しません。したがって、初期化の遅延は測定できません。
図 4: systemd-analyzeblame の出力
図 4 は、systemd-analyzeblame の出力を示しています。次のコマンドは、タイム クリティカルなサービス ユニットのツリー チェーンを出力します:
リーリー
図 5 は、systemd-analyzecritical-chain コマンドの出力を示しています。
図 5: systemd-analyzecritical-chain の出力
起動時間を短縮する手順
以下に、起動時間を短縮するために実行できるさまざまな手順の一部を示します。
BUM (ブートマネージャー)
BUM は、システムの起動時または再起動時に初期化サービスを構成できるようにする実行レベル構成エディターです。起動時に開始できるすべてのサービスのリストが表示されます。ユーザーは個々のサービスをオンまたはオフにできます。 BUM は非常に明確なグラフィカル ユーザー インターフェイスを備えており、非常に使いやすいです。Ubuntu 14.04 では、次のコマンドを使用して BUM をインストールできます:
リーリー
15.10 以降のバージョンにインストールするには、リンク http://apt.ubuntu.com/p/bum からパッケージをダウンロードします。
以基本的服务开始,禁用扫描仪和打印机相关的服务。如果你没有使用蓝牙和其它不想要的设备和服务,你也可以禁用它们中一些。我强烈建议你在禁用相关的服务前学习服务的基础知识,因为这可能会影响计算机或操作系统。图 6 显示 BUM 的图形用户界面。
图 6:BUM
编辑 rc 文件
要编辑 rc 文件,你需要转到 rc 目录。这可以使用下面的命令来做到:
cd /etc/init.d
然而,访问 init.d 需要 root 用户权限,该目录基本上包含的是开始/停止脚本,这些脚本用于在系统运行时或启动期间控制(开始、停止、重新加载、启动启动)守护进程。
在 init.d 目录中的 rc 文件被称为运行控制run control脚本。在启动期间,init 执行 rc 脚本并发挥它的作用。为改善启动速度,我们可以更改 rc 文件。使用任意的文件编辑器打开 rc 文件(当你在 init.d 目录中时)。
例如,通过输入 vim rc ,你可以更改 CONCURRENCY=none 为 CONCURRENCY=shell。后者允许某些启动脚本同时执行,而不是依序执行。
在最新版本的内核中,该值应该被更改为 CONCURRENCY=makefile。
图 7 和图 8 显示编辑 rc 文件前后的启动时间比较。可以注意到启动速度有所提高。在编辑 rc 文件前的启动时间是 50.98 秒,然而在对 rc 文件进行更改后的启动时间是 23.85 秒。
但是,上面提及的更改方法在 Ubuntu 15.10 以后的操作系统上不工作,因为使用最新内核的操作系统使用 systemd 文件,而不再是 init.d 文件。
图 7:对 rc 文件进行更改之前的启动速度
图 8:对 rc 文件进行更改之后的启动速度
E4rat
E4rat 代表 e4 减少访问时间reduced access time(仅在 ext4 文件系统的情况下)。它是由 Andreas Rid 和 Gundolf Kiefer 开发的一个项目。E4rat 是一个通过碎片整理来帮助快速启动的应用程序。它还会加速应用程序的启动。E4rat 使用物理文件的重新分配来消除寻道时间和旋转延迟,因而达到较高的磁盘传输速度。
E4rat 可以 .deb 软件包形式获得,你可以从它的官方网站 http://e4rat.sourceforge.net/下载。
Ubuntu 默认安装的 ureadahead 软件包与 e4rat 冲突。因此必须使用下面的命令安装这几个软件包:
sudo dpkg purge ureadahead ubuntu-minimal
现在使用下面的命令来安装 e4rat 的依赖关系:
sudo apt-get install libblkid1 e2fslibs
打开下载的 .deb 文件,并安装它。现在需要恰当地收集启动数据来使 e4rat 工作。
遵循下面所给的步骤来使 e4rat 正确地运行并提高启动速度。
図 9 と図 10 は、e4rat をインストールする前と後の起動時間の違いを示しています。起動速度の向上が実感できます。 e4rat を使用する前の起動時間は 22.32 秒でしたが、e4rat を使用した後は 9.065 秒になりました。
図 9: e4rat を使用する前の起動速度
図 10: e4rat 使用後の起動速度
いくつかの簡単な調整
非常に小さな調整によって良好な起動速度を実現することもできます。そのうちの 2 つを以下に示します。
SSD
通常のハード ドライブやその他のストレージ デバイスの代わりにソリッド ステート デバイスを使用すると、起動速度が確実に向上します。 SSD は、ファイル転送やアプリケーションの実行の高速化にも役立ちます。
GUIを無効にする
グラフィカル ユーザー インターフェイス、デスクトップ グラフィックス、およびウィンドウ アニメーションは多くのリソースを消費します。 GUI を無効にすることも、起動速度を向上させるための優れた方法です。
つまり、この記事を通じて、さまざまなツールを使用して Linux システムの起動時間を診断し、最適化する方法を学びました。サービスの数を減らす、不要なモジュールを削除する、ファイル システムやアプリケーションを最適化するなど、これらの方法は Linux システムの起動時間を効果的に短縮し、よりスムーズで効率的なエクスペリエンスを提供します。
以上がLinux システムの起動を速くする: 起動時間を最適化するためのヒントと方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。