Skip to content

Commit

Permalink
feat(prover): store time taken by prover with ms precision
Browse files Browse the repository at this point in the history
  • Loading branch information
antoniolocascio committed Jul 10, 2024
1 parent a040f09 commit db97fea
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 12 deletions.
26 changes: 19 additions & 7 deletions core/lib/db_connection/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,26 @@ const MICROSECONDS_IN_A_SECOND: i64 = 1_000_000;
const MICROSECONDS_IN_A_MINUTE: i64 = MICROSECONDS_IN_A_SECOND * 60;
const MICROSECONDS_IN_AN_HOUR: i64 = MICROSECONDS_IN_A_MINUTE * 60;

fn duration_to_naive_time_common(duration: Duration, use_ms: bool) -> NaiveTime {
let total_ms = duration.as_millis();
let total_seconds = (total_ms / 1_000) as u32;
let hours = total_seconds / 3_600;
let minutes = (total_seconds / 60) % 60;
let seconds = total_seconds % 60;
let ms = (total_ms % 1_000) as u32;

if use_ms {
NaiveTime::from_hms_milli_opt(hours, minutes, seconds, ms).unwrap()
} else {
NaiveTime::from_hms_opt(hours, minutes, seconds).unwrap()
}
}
pub fn duration_to_naive_time(duration: Duration) -> NaiveTime {
let total_seconds = duration.as_secs() as u32;
NaiveTime::from_hms_opt(
total_seconds / 3600,
(total_seconds / 60) % 60,
total_seconds % 60,
)
.unwrap()
duration_to_naive_time_common(duration, false)
}

pub fn duration_to_naive_time_ms(duration: Duration) -> NaiveTime {
duration_to_naive_time_common(duration, true)
}

pub const fn pg_interval_from_duration(processing_timeout: Duration) -> PgInterval {
Expand Down
4 changes: 2 additions & 2 deletions prover/prover_dal/src/fri_prover_dal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use zksync_db_connection::{
connection::Connection, instrument::InstrumentExt, metrics::MethodLatency,
};

use crate::{duration_to_naive_time, pg_interval_from_duration, Prover};
use crate::{duration_to_naive_time_ms, pg_interval_from_duration, Prover};

#[derive(Debug)]
pub struct FriProverDal<'a, 'c> {
Expand Down Expand Up @@ -265,7 +265,7 @@ impl FriProverDal<'_, '_> {
prover_jobs_fri.depth,
prover_jobs_fri.is_node_final_proof
"#,
duration_to_naive_time(time_taken),
duration_to_naive_time_ms(time_taken),
blob_url,
i64::from(id)
)
Expand Down
2 changes: 1 addition & 1 deletion prover/prover_dal/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use zksync_db_connection::connection::DbMarker;
pub use zksync_db_connection::{
connection::Connection,
connection_pool::ConnectionPool,
utils::{duration_to_naive_time, pg_interval_from_duration},
utils::{duration_to_naive_time, duration_to_naive_time_ms, pg_interval_from_duration},
};

use crate::{
Expand Down
5 changes: 3 additions & 2 deletions prover/prover_fri/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,11 @@ pub async fn save_proof(
connection: &mut Connection<'_, Prover>,
protocol_version: ProtocolSemanticVersion,
) {
let time_taken = started_at.elapsed();
tracing::info!(
"Successfully proven job: {}, total time taken: {:?}",
job_id,
started_at.elapsed()
time_taken,
);
let proof = artifacts.proof_wrapper;

Expand Down Expand Up @@ -101,7 +102,7 @@ pub async fn save_proof(
let mut transaction = connection.start_transaction().await.unwrap();
transaction
.fri_prover_jobs_dal()
.save_proof(job_id, started_at.elapsed(), &blob_url)
.save_proof(job_id, time_taken, &blob_url)
.await;
if is_scheduler_proof {
transaction
Expand Down

0 comments on commit db97fea

Please sign in to comment.