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 옵션은 각각의 유닛의 시작 시간을 그래프 형태로 볼수 있도록 파일형태로 생성한 파일을 브라우저 상에서 보면 그래프의 형태로 쉽게 유닛 시작시간을 분석할 수 있습니다.

    Posted by 서버이야기