起動パフォーマンスを確認したい場合には、systemd-analyzeを使用します。
systemd-analyzeを使用するには、
systemdを採用しているLinuxシステムで
root権限、またはsudo権限を持つユーザーが必要です。
systemd-analyzeでsystemdのパフォーマンス分析
$ sudo systemd-analyze
Startup finished in 9.525s (kernel) + 31.979s (initrd) + 3min 56.751s (userspace) = 4min 38.256s
上記の実行例の結果は次の通りになります。
・カーネル (kernel):9.525s
・初期RAMディスク(initrd) :31.979s
・ユーザースペース:3min 56.751s
・合計:4min 38.256s
systemd-analyze blameで全サービスの起動時間を表示
Linuxの起動があまりにも遅い場合に、原因特定するには、systemd-analyzeにblameオプションを付与して実行します。
これを実行すると、Linuxシステム上で起動する
すべてのサービスと起動時間を一覧表示できます。
$ sudo systemd-analyze blame 3min 7.249s clamd.service 30.908s dev-mapper-centos_tiger\x2droot.device 26.153s tuned.service 12.920s httpd.service 10.892s lvm2-pvscan@8:3.service 10.772s lvm2-pvscan@8:2.service 6.810s boot.mount 6.346s rc-local.service 4.584s network.service 4.067s systemd-vconsole-setup.service 〜中略〜 307ms systemd-tmpfiles-setup.service 297ms systemd-tmpfiles-clean.service 210ms sys-kernel-config.mount 163ms systemd-fsck-root.service 133ms plymouth-read-write.service 101ms systemd-update-utmp.service 74ms systemd-rfkill@rfkill0.service 33ms systemd-update-utmp-runlevel.service 14ms fprintd.service
途中、最終ページで「q」を入力することで終了します。
上記の結果では、clamd.serviceが3min 7.249s 掛かっている事が分かります。
systemd-analyze critical-chainで呼び出しチェーンの起動時間を表示
時間の掛かっている呼び出しチェーンを表示したい場合は、systemd-analyzeにcritical-chainオプションを付与して実行します。
$ sudo systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.
multi-user.target @3min 56.712s
mqmysqld.service @3min 55.581s +1.130s
mqclamd.service @48.307s +3min 7.249s
mqnetwork-online.target @48.304s
mqnetwork.target @48.301s
mqnetwork.service @43.710s +4.584s
mqNetworkManager-wait-online.service @40.728s +2.950s
mqNetworkManager.service @38.723s +1.978s
mqdbus.service @38.276s
mqbasic.target @38.109s
mqpaths.target @38.109s
mqbrandbot.path @38.108s
mqsysinit.target @38.074s
mqsystemd-update-utmp.service @37.969s +101ms
mqauditd.service @36.436s +1.528s
mqsystemd-tmpfiles-setup.service @36.110s +307ms
mqrhel-import-state.service @35.507s +595ms
mqlocal-fs.target @35.439s
mqrun-user-1000.mount @3min 23.910s
mqswap.target @34.226s
mqdev-mapper-centos_tiger\x2dswap.swap @33.687s +516ms
mqdev-mapper-centos_tiger\x2dswap.device @33.323s
systemd-analyze plotで起動時間を可視化する
systemd-analyzeにplotオプションを付与して実行すれば、起動時間を画像で可視化することもできます。
下の例では、systemd-analyze-plot.svgファイルに可視化結果を出力しています。
$ systemd-analyze plot > systemd-analyze-plot.svg
systemd-analyze-plot.svgファイルを開くと、可視化された結果が表示されます。
systemd-analyze dumpで詳細ログを確認する
systemd-analyzeにdumpオプションを付与して実行すれば、 より詳細なログが得られます。$ sudo systemd-analyze dump -> Unit sys-devices-pnp0-00:05-tty-ttyS0.device: Description: /sys/devices/pnp0/00:05/tty/ttyS0 Instance: n/a Unit Load State: loaded Unit Active State: active Inactive Exit Timestamp: Wed 2020-02-19 14:02:01 JST Active Enter Timestamp: Wed 2020-02-19 14:02:01 JST Active Exit Timestamp: n/a Inactive Enter Timestamp: n/a May GC: no Need Daemon Reload: no Transient: no Slice: n/a CGroup: n/a CGroup realized: no CGroup mask: 0x0 CGroup members mask: 0x0 Name: sys-devices-pnp0-00:05-tty-ttyS0.device Following Set Member: dev-ttyS0.device Job Timeout: 1min 30s StopWhenUnneeded: no RefuseManualStart: no RefuseManualStop: no DefaultDependencies: yes OnFailureJobMode: replace IgnoreOnIsolate: yes IgnoreOnSnapshot: yes Device State: plugged Sysfs Path: /sys/devices/pnp0/00:05/tty/ttyS0 以下省略
途中、最終ページで「q」を入力することで終了します。
P.S
Linux起動パフォーマンスを確認する(systemd-analyze)のもっと高い技術を身につけたいならこちら
<<関連記事>>
・MIMEでエンコードされたテキストを読めるように変換する
・viエディタで文字をコピーする
・ハードディスクの使用状況を調べるには
・tar.bz2ファイルを解凍して展開するには
・tar.gz形式のファイルを解凍、展開するには