저는 콜드 부팅 후 Linux 시스템이 부팅되는 데 시간이 얼마나 걸리는지 알아보려고 합니다. uptime
명령 과 유사 하거나 /proc/uptime
init 프로세스가 시작된 이후의 시간을 제공합니다. 이는 커널이 메모리에 로드되는 데 걸리는 시간, 로더 및 펌웨어 시작 시간을 고려하지 않습니다 systems-analyze
. systems-analyze
그것을 사용할 경우 모든 시스템 서비스가 시작될 때까지 기다려야 하기 때문에 할 수 없습니다 . 같은 이유로 "부트차트"도 제외됩니다. 이는 systemd 서비스를 통해 시작 시간을 수집해야 하기 때문입니다(예: 다른 많은 작업 수행).
이 정보를 어떻게 얻을 수 있는지 아시나요?
답변1
스톱워치를 사용하세요.대부분의 프로세스는 시스템이 준비되기 전에 발생합니다.
또한 부트스트랩이 무엇을 의미하는지 정의해야 합니다. X를 통한 로그인 준비, 콘솔을 통한 로그인 준비, 요청에 응답하는 웹 서버...
또한 테스트 중인 시스템 자체를 신뢰해서는 안 됩니다. (한번은 가능한 것보다 빠르다고 주장하는 시스템의 문제를 해결하고 있었습니다. 알고 보니 시계 속도가 느려지고 있었습니다.)
답변2
/var/log/boot.msg
다음과 같은 텍스트가 표시됩니다.
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.0.101-108.84-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) ) #1 SMP Fri Nov 30 15:57:27 UTC 2018 (7a72692)
[ 0.000000] Command line: BOOT_IMAGE=dev000:\EFI\SUSE\vmlinuz- 3.0.101-108.84-default root=/dev/disk/by-id/scsi-35000cca070168a20-part2 splash=verbose showopts
[ 0.000000] x86/fpu: Using 'eager' FPU context switches.
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
[ 0.000000] BIOS-e820: 0000000000100000 - 00000000792de000 (usable)
[ 0.000000] BIOS-e820: 00000000792de000 - 00000000798f4000 (reserved)
그 다음에
[ 4.967393] Brought up 128 CPUs
[ 4.967400] Total of 128 processors activated (512000.20 BogoMIPS).
[ 5.377931] devtmpfs: initialized
[ 5.420574] PM: Registering ACPI NVS region at 79a38000 (5976064 bytes)
[ 5.421208] print_constraints: dummy:
[ 5.421243] Time: 20:15:03 Date: 01/22/19
[ 5.421817] NET: Registered protocol family 16
[ 5.422067] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[ 5.422073] ACPI: bus type pci registered
다음으로 끝나는
[ 14.053705] igb 0000:42:00.3: added PHC on eth3
[ 14.066858] igb 0000:42:00.3: Intel(R) Gigabit Ethernet Network Connection
[ 14.080159] igb 0000:42:00.3: eth3: (PCIe:5.0Gb/s:Width x4) 0c:c4:7a:3a:51:33
[ 14.093493] igb 0000:42:00.3: eth3: PBA No: 010A00-000
[ 14.106628] igb 0000:42:00.3: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[ 14.800728] device-mapper: uevent: version 1.0.3
[ 14.814242] device-mapper: ioctl: 4.25.0-ioctl (2012-07-25) initialised: [email protected]
[ 15.254103] loop: module loaded
[ 15.634412] SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled
[ 15.648644] SGI XFS Quota Management subsystem
[ 15.661127] XFS (sda1): Mounting Filesystem
[ 15.790512] XFS (sda1): Ending clean mount
[ 15.802635] XFS (sdb1): Mounting Filesystem
[ 15.886148] XFS (sdb1): Ending clean mount
[ 15.898303] XFS (sdd1): Mounting Filesystem
[ 16.010051] XFS (sdd1): Ending clean mount
[ 17.567752] fuse init (API version 7.16)
Kernel logging (ksyslog) stopped.
Kernel log daemon terminating.
Waiting for device /dev/disk/by-id/scsi-35000cca070168a20-part2 to appear: ok
fsck from util-linux 2.19.1
[/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a -C0 /dev/sdc2
myhostname: clean, 1172494/36618240 files, 42233936/146465024 blocks
fsck succeeded. Mounting root device read-write.
Linux 루트 파티션을 마운트하고 커널을 시작하는 데 17.56초 남았습니다.
그게 전부가 아니라는 걸 깨달아라시작하다Linux의 모든 서비스가 실행되는 프로세스입니다. 이렇게 하려면 /var/log/boot.msg
전환 후 첫 번째 타임스탬프를 찾은 다음 마지막 타임스탬프를 찾으면 시스템이 완전히 부팅되었다고 합리적으로 결론을 내릴 수 있습니다. 방화벽이 작동 중이고 SSH 서비스가 작동 중이며 무엇보다도 GDM이 실행 중입니다. .
내 첫 번째 타임스탬프는 15:15:06.x를 표시하고 라이선스 관리자를 자동 시작한 후 파일의 마지막 타임스탬프는 15:15:53.x를 표시합니다. 타임스탬프는 smartd start exits with status 0
15:15:43.x, 그 다음에는 SuSEfirewall2_setup start' exits with status 0
15:15:44.x입니다.
따라서 제 예에서는 총 17.5초 + 47초 = 64.5초입니다. 이것은 일반적으로 내 시계와 일치합니다... BIOS/EFI가 약 2분 정도 걸린 후, LSI Raid 컨트롤러를 통해 15개 디스크의 RAID-5를 부팅하는 데 2분이 더 걸린 후에 이 모든 일이 발생한다는 것을 깨달았습니다. 따라서 관심 있는 총 시간은 크게 다를 수 있으며, 콜드 부팅에 걸리는 시간을 전원 버튼을 눌렀을 때 정의하는 경우 사용되는 하드웨어에 따라 달라집니다. 그러나 Linux 커널에서 소요된 시간은 일반적으로 boot.msg에서 계산할 수 있습니다.
답변3
스마트폰을 모니터에 비춰 영상을 만들어 보세요. 이는 1/N초, 여기서N녹화된 영상의 초당 프레임 수입니다.
답변4
ACPI FPDT 테이블에 대한 지원을 포함하는 UEFI 펌웨어를 사용하고 커널에 CONFIG_ACPI_FPDT
빌드 시간 옵션이 포함되어 있는 경우 /sys/firmware/acpi/fpdt/boot
펌웨어 및 부트로더가 부팅에 소비하는 시간에 대한 정보를 찾을 수 있습니다. 인접한 디렉터리에는 일시 중지 및 재개 작업에 대한 타이밍 정보도 있을 수 있습니다.
> + ACPI Firmware Performance Data Table (FPDT) provides
> + information for firmware performance data for system boot,
> + S3 suspend and S3 resume. This sysfs entry contains the
> + performance data retrieved from the FPDT.
> +
> + boot:
> + firmware_start_ns: Timer value logged at the beginning
> + of firmware image execution. In nanoseconds.
> + bootloader_load_ns: Timer value logged just prior to
> + loading the OS boot loader into memory.
> + In nanoseconds.
> + bootloader_launch_ns: Timer value logged just prior to
> + launching the currently loaded OS boot loader
> + image. In nanoseconds.
> + exitbootservice_start_ns: Timer value logged at the
> + point when the OS loader calls the
> + ExitBootServices function for UEFI compatible
> + firmware. In nanoseconds.
> + exitbootservice_end_ns: Timer value logged at the point
> + just prior to the OS loader gaining control
> + back from the ExitBootServices function for
> + UEFI compatible firmware. In nanoseconds.
> + suspend:
> + suspend_start_ns: Timer value recorded at the previous
> + OS write to SLP_TYP upon entry to S3. In
> + nanoseconds.
> + suspend_end_ns: Timer value recorded at the previous
> + firmware write to SLP_TYP used to trigger
> + hardware entry to S3. In nanoseconds.
> + resume:
> + resume_count: A count of the number of S3 resume cycles
> + since the last full boot sequence.
> + resume_avg_ns: Average timer value of all resume cycles
> + logged since the last full boot sequence,
> + including the most recent resume. In nanoseconds.
> + resume_prev_ns: Timer recorded at the end of the previous
> + platform runtime firmware S3 resume, just prior to
> + handoff to the OS waking vector. In nanoseconds.
나는 이것이 systemd-analyze
펌웨어 부팅, 로더 및 커널 로딩 시간을 얻는 곳이기도 한다고 생각합니다.
기본적으로 의 값에서 의 값 exitbootservice_end_ns
을 빼면 firmware_start_ns
CPU 부팅과 Linux 커널 부팅 사이에 경과된 시간을 알 수 있습니다.
전용 관리 프로세서가 있는 서버급 시스템이 있는 경우 일반적으로 관리 프로세서는 시스템이 전원이 공급되는 벽면 콘센트에 연결되자마자 실행되기 시작하지만 관리 프로세서가 초기화를 완료할 때까지 메인 CPU에 전원이 공급되지 않습니다. , 이 작업은 1~2분 정도 걸릴 수 있습니다. 반면에 이러한 관리 프로세서는 유용한 타임스탬프가 포함된 광범위한 로그를 제공하는 경우가 많습니다.