개요
리눅스 서버나 PC의 부팅 시간이 평소보다 오래 걸린다면 원인을 파악해 불필요한 지연을 줄여야 합니다. systemd-analyze 명령어를 활용하면 전체 부팅 시간 측정부터 병목을 유발하는 시스템 서비스 추적, 유닛 파일 검증까지 손쉽게 수행할 수 있습니다. 본 글에서는 실무에서 즉시 활용할 수 있는 핵심 분석 명령어와 성능 최적화 기법을 다룹니다.
1. 부팅 소요 시간 확인 및 구간별 지연 측정 (time & blame)
systemd-analyze 명령어는 부팅 과정에서 소요된 전체 시간과 커널 및 사용자 공간(userspace)의 초기화 시간을 측정하여 보여줍니다.
실행 결과를 보면 시스템이 부팅되어 GUI 환경인 graphical.target에 도달하기까지 총 315ms가 걸렸음을 확인할 수 있습니다.
⚙️ [주요 옵션]
time : 부팅 시 커널 및 사용자 공간에서 소비된 전체 시간을 출력합니다(기본 동작).blame : 초기화 과정에서 부팅 지연을 유발한 서비스 목록을 소요 시간 내림차순으로 출력합니다.critical-chain : 부팅 지연을 유발하는 결정적 경로(시간 임계 체인)의 서비스 종속성 트리를 표시합니다.plot : 부팅 과정 전체의 서비스별 실행 타임라인을 SVG 그래픽 파일 형태로 출력합니다.dot : 서비스 간의 종속성 관계를 Graphviz dot 형식으로 생성합니다.

systemd-analyze blame | head -n 10 명령어는 부팅 시 실행된 서비스 중 초기화 소요 시간이 가장 긴 상위 10개 서비스를 내림차순으로 정렬하여 확인합니다.
실행 결과에서는 systemd-resolved.service(68ms)와 ldconfig.service(67ms)가 부팅 초기화 과정에서 가장 많은 시간을 소비했음을 알 수 있습니다.

2. 부팅 지연의 핵심 경로 추적하기 (critical-chain)
systemd-analyze critical-chain 명령어는 시스템 부팅 완료에 직접적인 영향을 미친 서비스들의 종속성 트리(임계 경로)를 출력합니다.
출력 결과의 @ 기호 뒤는 유닛이 활성화되거나 시작된 시각을 나타내며, + 기호 뒤는 해당 유닛 자체의 실행에 소요된 시간을 의미합니다.
결과 트리를 보면 graphical.target(315ms)에 도달하기까지 systemd-resolved.service(68ms)와 systemd-journald.service(39ms) 등이 직렬로 연결되어 전체 부팅 지연을 초래한 핵심 병목 경로임을 확인할 수 있습니다.

systemd-analyze critical-chain networking.service 명령어는 특정 서비스(여기서는 networking.service)를 지정하여 해당 서비스가 시작되기까지의 임계 체인만 선별적으로 추적합니다.
시스템 전체 경로 대신 특정 네트워크나 백엔드 서비스의 병목 종속성만 분리하여 분석하고자 할 때 유용하게 활용할 수 있습니다.

3. 부팅 타임라인 시각화 SVG 리포트 생성 (plot)
부팅 분석 리포트 파일을 체계적으로 저장하고 관리하기 위해 mkdir -p ~/systemd-reports 명령어를 실행하여 전용 디렉터리를 생성합니다.

systemd-analyze plot > ~/systemd-reports/boot-analysis.svg 명령어는 전체 부팅 과정에서 실행된 각 서비스의 시작 시점과 실행 소요 시간을 시각적 타임라인 형태의 SVG 그래픽 파일로 생성하여 저장합니다.
텍스트 로그만으로는 파악하기 힘든 서비스 간의 병렬 실행 흐름과 지연 구간을 그래픽 차트로 직관적으로 확인할 수 있습니다.

ls -lh ~/systemd-reports/boot-analysis.svg 명령어는 생성된 SVG 리포트 파일의 존재 여부와 파일 크기(59KB) 등 상세 정보를 확인합니다.
생성된 SVG 파일은 웹 브라우저나 이미지 뷰어를 통해 열어 상세한 부팅 타임라인 차트를 시각적으로 분석할 수 있습니다.

4. 서비스 유닛 설정 오류 및 보안 상태 검증 (verify & security)
sudo systemd-analyze verify /lib/systemd/system/ssh.service 명령어는 지정한 유닛 파일의 문법적 오류나 설정 누락 여부를 사전에 검증합니다.
실행 결과 아무런 메시지가 출력되지 않는 것은 해당 서비스 유닛 파일에 문법적 결함이나 설정 오류가 없음을 의미합니다.

systemd-analyze security ssh.service 명령어는 지정한 서비스 유닛의 보안 격리 설정과 시스템 노출 수준(Security Exposure)을 진단합니다.
실행 결과를 통해 루트 권한 실행 여부(User=), 디바이스 접근 제어(PrivateDevices=), 권한 상승 방지(NoNewPrivileges=) 등 주요 보안 항목의 적용 상태와 위험 노출 점수를 상세하게 확인할 수 있습니다.

지금까지 systemd-analyze 명령어를 활용해 부팅 지연의 원인이 되는 병목 서비스를 확인하고 최적화하는 방법을 간단하게 살펴보았습니다.
불필요한 서비스를 정리하여 한층 더 쾌적하고 빠른 리눅스 부팅 환경을 만들어보세요.