[Linux] Hướng dẫn phân tích thời gian khởi động dịch vụ trên hệ thống systemd

Bạn có 1 vấn đề như sau trên hệ thống systemd vd như CentOS 7 : hệ thống systemd của bạn mất nhiều thời gian để khởi động hoàn tất. Làm sao để bạn xác định phân tích được thời gian khởi động dịch vụ nào chiếm nhiều thời gian để khởi động ? Vậy phải làm sao đây ?

Trên các hệ điều hành systemd như CentOS 7 có cung cấp 1 chương trình mang tên ‘systemd-analyze‘ được sử dụng để kiểm tra thông tin thời gian mà mỗi dịch vụ sẽ ngốn khi khởi động hệ thống. Nhìn chung thì ‘systemd-analyze‘ sẽ cung cấp cái nhìn tổng quan về việc hệ thống khởi động chậm. Ví dụ dưới được sử dụng trên OS CentOS 7.

1. Thời gian tổng quát

– Chạy lệnh với option ‘time‘ sẽ cho bạn cái nhìn tổng quá về thời gian được sử dụng bởi kernel, initrduserspace trong lúc boot hệ thống.

# systemd-analyze time
Startup finished in 971ms (kernel) + 860ms (initrd) + 11.589s (userspace) = 13.421s

2. Thời gian cụ thể của dịch vụ

– Với option ‘blame‘ bạn sẽ được cung cấp thông tin chi tiết về thời gian tiêu tốn để khởi động các dịch vụ tương ứng.

# systemd-analyze blame
         28.017s kdump.service
         20.028s rsyslog.service
          7.154s hp-asrd.service
          3.260s network.service
          2.314s hp-snmp-agents.service
           716ms dmraid-activation.service
           557ms postfix.service
           437ms hp-health.service
           278ms dev-disk-by\x2duuid-983b791c\x2d3da0\x2d42d0\x2db357\x2d0a4fd8a392d8.swap
           253ms cpqsrhmo.service
           184ms iprupdate.service
           184ms iprinit.service
           175ms systemd-tmpfiles-setup.service
           160ms tuned.service
           153ms microcode.service
           146ms hpsmhd.service
           126ms snmpd.service

3. Thời gian chi tiết các tiến trình phụ thuộc

– Tại mỗi bước boot dịch vụ cụ thể thì hoạt động boot sẽ không khởi động dịch vụ lên hoàn tất nếu các chương trình/dịch vụ liên kết hay phụ thuộc của dịch vụ đó chưa được khởi động hoặc kiểm tra. Để xem các thành phần tiên quyết của dịch vụ thì ta thêm option ‘critical-chain‘.

multi-user.target @11.583s
└─hp-asrd.service @4.428s +7.154s
  └─network.target @4.424s
    └─network.service @1.148s +3.260s
      └─basic.target @1.129s
        └─sockets.target @1.129s
          └─dbus.socket @1.129s
            └─sysinit.target @1.118s
              └─systemd-update-utmp.service @1.114s +3ms
                └─systemd-tmpfiles-setup.service @937ms +175ms
                  └─local-fs.target @935ms
                    └─boot.mount @485ms +3ms
                      └─systemd-fsck@dev-disk-by\x2duuid-25d091e3\x2dcb00\x2d40c1\x2d909c\x2d43f60c073afc.service @471ms +13ms
                        └─systemd-fsck-root.service @192ms +21ms
                          └─systemd-readahead-replay.service @134ms +20ms

 
Lưu ý:
– Các bạn có thể xem thêm các thông tin tham khảo về chương trình lệnh ‘systemd-analyze‘ tại manual của lệnh.

Ở trên là 1 mục nhỏ khi quản trị các hệ thống ‘systemd‘ và xác định thời gian khởi động dịch vụ . Hy vọng các bạn thấy bổ ích.

SOURCECentOS / RHEL 7 : systemd-analyze command to find booting time delays
Previous article[Ebook] 70-743 Upgrading Your Skills to MCSA: Windows Server 2016 – Download PDF
Next article[PHP] Kiểm tra một giá trị có trong mảng arrray hay không với in_array() php
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !