openRCを使用してAlpineで起動時間(カーネル+初期化)をどのように知ることができますか?

openRCを使用してAlpineで起動時間(カーネル+初期化)をどのように知ることができますか?

この問題について調査し、ChatGPTにも連絡しましたが、OpenRCを使用してアルパインディストリビューションのフルブート時間を測定する方法はないようです。

以下を使用してdmesg最後のメッセージを表示できます。[ 0.689037] Run /sbin/init as init process

しかし、initプロセスを「完了」するのにどれくらいの時間がかかるかを知りたいです。私のユースケースは開始時間に敏感であるので尋ねることです。

カーネルブートを含む1秒以内にsystemdを使用してubuntu 22.04を起動できます。 systemdではsystemd-analyze非常に便利です。だから私はopenRCに等しい(または方法)があることを願っています。

ベストアンサー1

まず、アルパインからミリ秒の精度を得るためにcoreutilsをインストールします。

apk add coreutils

次に、2つのサービスを作成します。

/etc/init.d/boot-startから

#!/sbin/openrc-run

description="Boot Start Service"

start() {
    ebegin "Starting boot-start"
    date +%s%3N > /var/boot-time.log
    eend $?
}

そして/etc/init.d/boot-endで

#!/sbin/openrc-run

description="Boot End Service"

depend() {
        after *
}

start() {
        ebegin "Starting boot-end"
        boot_start_time=$(cat /var/boot-time.log)
        boot_end_time=$(date +%s%3N)
        duration=$((boot_start_time - boot_end_time))
        echo "Boot started at: $boot_start_time" > /var/boot-time.log
        echo "Boot ended at: $boot_end_time" >> /var/boot-time.log
        echo "Total duration: $duration milliseconds" >> /var/boot-time.log
        eend $?
}

その後、起動時に最初のタスクを開始し、最後に2番目のタスクを開始します。

chmod +x /etc/init.d/boot-start
rc-update add boot-start boot
chmod +x /etc/init.d/boot-end
rc-update add boot-end default

結果は次のとおりです。

Boot started at: 1686811355808
Boot ended at: 1686811357194
Total duration: -1386 milliseconds

おすすめ記事