Linux 명령어 - systemd-analyze 각 유닛의 시작시 소요시간 분석
Linux 명령어 - systemd-analyze 각 유닛의 시작시 소요시간 분석
이번 포스팅에서는 리눅스의 부팅을 느리게 만드는 원인을 분석하는 방법에 대해서 알아보도록 하겠습니다.
Linux systemd-analyze 각 유닛의 시작 시간 분석 |
리눅스에서 시스템이 시작될때 정말 많은 유닛들이 실행되며, 이러한 많은 유닛들이 시스템이 부팅되면서 Process(프로세스)가 되는데 걸리는 시간을 알아보는것은 정말 어려운 일입니다 그러나 systemd-analyze 를 이용하면 시스템이 각각의 유닛들이 Process(프로세스)가 되는데 얼마나 걸리는지 분석할 수 있습니다
각각의 유닛들이 시작되는 시간을 분석하여 리눅스의 부팅을 느리게 만드는 원인을 보다 쉽게 찾아볼수 있는 명령어가 systemd-analyze 입니다.
1. systemd-analyze - 시스템 시작시 소요시간 확인
# systemd-analyze
Startup finished in 4.523s (kernel) + 10.937s (userspace) = 15.460s
graphical.target reached after 8.848s in userspace
위 명령어를 사용하면 시스템이 시작에 소요된 시간을 알아볼수 있습니다.
2. systemd-analyze - 각 유닛의 소요시간 분석
# systemd-analyze blame
4.976s apt-daily-upgrade.service
2.289s cloud-config.service
blame 옵션을 주면 각각의 유닛별로 소요된 시간을 확인할 수 있으며, 오랜 시간이 걸리 유닛을 기준으로 정렬되어 확인할 수 있습니다.
3. systemd-analyze - 최악의 시간이 소요된 유닛 확인
# systemd-analyze critical-chain
The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.
graphical.target @8.848s
└─multi-user.target @8.848s
└─networkd-dispatcher.service @7.850s +996ms
└─basic.target @7.747s
└─sockets.target @7.746s
└─uuidd.socket @7.745s
└─sysinit.target @7.718s
└─cloud-init.service @6.556s +1.157s
└─systemd-networkd-wait-online.service @4.584s +1.970s
└─systemd-networkd.service @4.479s +103ms
└─network-pre.target @4.477s
└─cloud-init-local.service @2.996s +1.479s
└─systemd-remount-fs.service @688ms +109ms
└─systemd-journald.socket @562ms
└─system.slice @541ms
└─-.slice @541ms
critical-chain 옵션을 통해 최악의 시간이 소요된 유닛들의 실행내역을 분석하여 확인이 가능합니다 그리고 각각의 유닛의 의존관꼐와 소요시간을 파악하여 서비스 시작에 문제가 발생된 부분을 쉽게 확인할 수 있습니다.
4. systemd-analyze - 유닛의 시작시간을 그래프 형태로 확인
# systemd-analyze plot > analyze.svg
systemd-analyze plot 옵션은 각각의 유닛의 시작 시간을 그래프 형태로 볼수 있도록 파일형태로 생성한 파일을 브라우저 상에서 보면 그래프의 형태로 쉽게 유닛 시작시간을 분석할 수 있습니다.