Skip to content

Commit 844d76e

Browse files
andreacampifacebook-github-bot
authored andcommitted
Print a summary at the end of the benchmark
Summary: ## This stack Update or add logging and stats that we need to troubleshoot the performance of modern sync. ## This diff A later diff will use this to enable benchmarks to run for a set amount of time. Reviewed By: RajivTS Differential Revision: D71624215 fbshipit-source-id: c627df3cfe786f818263cf2d02e03324c5b0a6a9
1 parent 184dbbe commit 844d76e

3 files changed

Lines changed: 48 additions & 8 deletions

File tree

eden/mononoke/modern_sync/src/commands/benchmark.rs

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ use std::sync::Arc;
1111
use anyhow::Result;
1212
use async_trait::async_trait;
1313
use clap::Parser;
14+
use clientinfo::ClientEntryPoint;
15+
use clientinfo::ClientInfo;
1416
use context::CoreContext;
17+
use context::SessionContainer;
18+
use metadata::Metadata;
1519
use mononoke_app::MononokeApp;
1620
use mutable_counters::MutableCounters;
1721
use slog::info;
@@ -28,6 +32,7 @@ pub struct CommandArgs {
2832
chunk_size: Option<u64>,
2933
}
3034

35+
#[derive(Clone, Default)]
3136
struct MemoryMutableCounters {
3237
counters: Arc<std::sync::RwLock<std::collections::HashMap<String, i64>>>,
3338
}
@@ -79,24 +84,57 @@ impl MutableCounters for MemoryMutableCounters {
7984
pub async fn run(app: MononokeApp, args: CommandArgs) -> Result<()> {
8085
let app = Arc::new(app);
8186
let app_args = &app.args::<ModernSyncArgs>()?;
82-
let (source_repo_args, dest_repo_name) = get_unsharded_repo_args(app.clone(), app_args).await?;
87+
let (source_repo_args, source_repo_name, dest_repo_name) =
88+
get_unsharded_repo_args(app.clone(), app_args).await?;
89+
let ctx = new_context(&app);
90+
let logger = app.logger().clone();
8391

8492
let mc = MemoryMutableCounters::new();
8593

86-
info!(app.logger(), "Running sync-once loop");
94+
let now = std::time::Instant::now();
8795
crate::sync::sync(
8896
app,
8997
Some(0),
90-
source_repo_args,
91-
dest_repo_name,
98+
source_repo_args.clone(),
99+
dest_repo_name.clone(),
92100
ExecutionType::SyncOnce,
93101
false,
94102
args.chunk_size.clone().unwrap_or(CHUNK_SIZE_DEFAULT),
95103
PathBuf::from(""),
96104
true,
97-
Some(Arc::new(mc)),
105+
Some(Arc::new(mc.clone())),
98106
)
99107
.await?;
108+
let elapsed = now.elapsed();
109+
110+
info!(
111+
logger,
112+
"Benchmark: Sync {} to {:?} took {}ms",
113+
elapsed.as_millis(),
114+
&source_repo_name,
115+
dest_repo_name,
116+
);
117+
118+
info!(logger, "Counters:");
119+
let mut counters = mc.get_all_counters(&ctx).await?;
120+
counters.sort_by(|a, b| a.0.cmp(&b.0));
121+
for (k, v) in counters {
122+
info!(logger, "{}={}", k, v);
123+
}
100124

101125
Ok(())
102126
}
127+
128+
fn new_context(app: &MononokeApp) -> CoreContext {
129+
let mut metadata = Metadata::default();
130+
metadata.add_client_info(ClientInfo::default_with_entry_point(
131+
ClientEntryPoint::ModernSync,
132+
));
133+
134+
let scuba = app.environment().scuba_sample_builder.clone();
135+
let session_container = SessionContainer::builder(app.fb)
136+
.metadata(Arc::new(metadata))
137+
.build();
138+
139+
session_container.new_context(app.logger().clone(), scuba)
140+
}

eden/mononoke/modern_sync/src/commands/sync_once.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ pub struct CommandArgs {
3232
pub async fn run(app: MononokeApp, args: CommandArgs) -> Result<()> {
3333
let app = Arc::new(app);
3434
let app_args = &app.args::<ModernSyncArgs>()?;
35-
let (source_repo_args, dest_repo_name) = get_unsharded_repo_args(app.clone(), app_args).await?;
35+
let (source_repo_args, _, dest_repo_name) =
36+
get_unsharded_repo_args(app.clone(), app_args).await?;
3637

3738
info!(app.logger(), "Running sync-once loop");
3839
crate::sync::sync(

eden/mononoke/modern_sync/src/sync.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -874,7 +874,7 @@ fn classify_entries(
874874
pub(crate) async fn get_unsharded_repo_args(
875875
app: Arc<MononokeApp>,
876876
app_args: &ModernSyncArgs,
877-
) -> Result<(SourceRepoArgs, String)> {
877+
) -> Result<(SourceRepoArgs, String, String)> {
878878
let source_repo: Repo = app.open_repo(&app_args.repo).await?;
879879
let source_repo_name = source_repo.repo_identity.name().to_string();
880880
let target_repo_name = app_args
@@ -883,7 +883,8 @@ pub(crate) async fn get_unsharded_repo_args(
883883
.unwrap_or(source_repo_name.clone());
884884

885885
Ok((
886-
SourceRepoArgs::with_name(source_repo_name),
886+
SourceRepoArgs::with_name(source_repo_name.clone()),
887+
source_repo_name,
887888
target_repo_name,
888889
))
889890
}

0 commit comments

Comments
 (0)