diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fc97cac00f..f8507300e90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,11 @@ and this project adheres to the UFFD Unix domain socket open to prevent the race condition between the guest memory mappings message and the shutdown event that was sometimes causing arrival of an empty message on the UFFD handler side. +- [#5143](https://github.com/firecracker-microvm/firecracker/pull/5143): Fixed + to report `process_startup_time_us` and `process_startup_time_cpu_us` metrics + for `api_server` right after the API server starts, while previously reported + before applying seccomp filter and starting the API server. Users may observe + a bit longer startup time metrics. ## [1.11.0] diff --git a/src/firecracker/src/api_server/mod.rs b/src/firecracker/src/api_server/mod.rs index 3dd9e417e71..71d1856b0d5 100644 --- a/src/firecracker/src/api_server/mod.rs +++ b/src/firecracker/src/api_server/mod.rs @@ -70,11 +70,6 @@ impl ApiServer { // Set the api payload size limit. server.set_payload_max_size(api_payload_limit); - // Store process start time metric. - process_time_reporter.report_start_time(); - // Store process CPU start time metric. - process_time_reporter.report_cpu_start_time(); - // Load seccomp filters on the API thread. // Execution panics if filters cannot be loaded, use --no-seccomp if skipping filters // altogether is the desired behaviour. @@ -86,6 +81,12 @@ impl ApiServer { } server.start_server().expect("Cannot start HTTP server"); + info!("API server started."); + + // Store process start time metric. + process_time_reporter.report_start_time(); + // Store process CPU start time metric. + process_time_reporter.report_cpu_start_time(); loop { let request_vec = match server.requests() { diff --git a/src/firecracker/src/api_server_adapter.rs b/src/firecracker/src/api_server_adapter.rs index b6178a8cbf7..173ef298265 100644 --- a/src/firecracker/src/api_server_adapter.rs +++ b/src/firecracker/src/api_server_adapter.rs @@ -8,7 +8,7 @@ use std::sync::{Arc, Mutex}; use std::thread; use event_manager::{EventOps, Events, MutEventSubscriber, SubscriberOps}; -use vmm::logger::{ProcessTimeReporter, error, warn}; +use vmm::logger::{ProcessTimeReporter, error, info, warn}; use vmm::resources::VmResources; use vmm::rpc_interface::{ ApiRequest, ApiResponse, BuildMicrovmFromRequestsError, PrebootApiController, @@ -175,6 +175,7 @@ pub(crate) fn run_with_api( return Err(ApiServerError::FailedToBindAndRunHttpServer(err)); } }; + info!("Listening on API socket ({bind_path:?})."); let api_kill_switch_clone = api_kill_switch .try_clone()