Linux起動パフォーマンスを確認する(systemd-analyze)


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, 起動 > Linux起動パフォーマンスを確認する(systemd-analyze)
systemdを採用しているLinuxシステムで
起動パフォーマンスを確認したい場合には、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-plot.jpg

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」を入力することで終了します。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・MIMEでエンコードされたテキストを読めるように変換する
・viエディタで文字をコピーする
・ハードディスクの使用状況を調べるには
・tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧
・tar.gz形式のファイルを解凍、展開するには

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る