Skip to content

Commit

Permalink
Merge #4624
Browse files Browse the repository at this point in the history
4624: Add "precommands" to benchmark r=dureuill a=dureuill

# Pull Request

## Related issue
Helps for #4493

## What does this PR do?
- Add support for precommands for cargo xtask bench
- update benchmark docs
- update workload files


Co-authored-by: Louis Dureuil <louis@meilisearch.com>
  • Loading branch information
meili-bors[bot] and dureuill committed May 13, 2024
2 parents 95fcd17 + 9d3ff11 commit 76bb6d5
Show file tree
Hide file tree
Showing 10 changed files with 71 additions and 24 deletions.
11 changes: 7 additions & 4 deletions BENCHMARKS.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,8 @@ They are JSON files with the following structure (comments are not actually supp
},
// Core of the workload.
// A list of commands to run sequentially.
// A command is a request to the Meilisearch instance that is executed while the profiling runs.
"commands": [
// Optional: A precommand is a request to the Meilisearch instance that is executed before the profiling runs.
"precommands": [
{
// Meilisearch route to call. `http://localhost:7700/` will be prepended.
"route": "indexes/movies/settings",
Expand Down Expand Up @@ -224,8 +224,11 @@ They are JSON files with the following structure (comments are not actually supp
// - DontWait: run the next command without waiting the response to this one.
// - WaitForResponse: run the next command as soon as the response from the server is received.
// - WaitForTask: run the next command once **all** the Meilisearch tasks created up to now have finished processing.
"synchronous": "DontWait"
},
"synchronous": "WaitForTask"
}
],
// A command is a request to the Meilisearch instance that is executed while the profiling runs.
"commands": [
{
"route": "indexes/movies/documents",
"method": "POST",
Expand Down
8 changes: 5 additions & 3 deletions workloads/hackernews.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"sha256": "27e25efd0b68b159b8b21350d9af76938710cb29ce0393fa71b41c4f3c630ffe"
}
},
"commands": [
"precommands": [
{
"route": "indexes/movies/settings",
"method": "PATCH",
Expand All @@ -78,8 +78,10 @@
]
}
},
"synchronous": "DontWait"
},
"synchronous": "WaitForTask"
}
],
"commands": [
{
"route": "indexes/movies/documents",
"method": "POST",
Expand Down
8 changes: 5 additions & 3 deletions workloads/movies-nothreads.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"sha256": "5b6e4cb660bc20327776e8a33ea197b43d9ec84856710ead1cc87ab24df77de1"
}
},
"commands": [
"precommands": [
{
"route": "indexes/movies/settings",
"method": "PATCH",
Expand All @@ -30,8 +30,10 @@
]
}
},
"synchronous": "DontWait"
},
"synchronous": "WaitForTask"
}
],
"commands": [
{
"route": "indexes/movies/documents",
"method": "POST",
Expand Down
6 changes: 4 additions & 2 deletions workloads/movies-subset-hf-embeddings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"sha256": "d215e395e4240f12f03b8f1f68901eac82d9e7ded5b462cbf4a6b8efde76c6c6"
}
},
"commands": [
"precommands": [
{
"route": "experimental-features",
"method": "PATCH",
Expand Down Expand Up @@ -55,7 +55,9 @@
}
},
"synchronous": "WaitForTask"
},
}
],
"commands": [
{
"route": "indexes/movies/documents",
"method": "POST",
Expand Down
6 changes: 4 additions & 2 deletions workloads/settings-add-embeddings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"sha256": "d215e395e4240f12f03b8f1f68901eac82d9e7ded5b462cbf4a6b8efde76c6c6"
}
},
"commands": [
"precommands": [
{
"route": "experimental-features",
"method": "PATCH",
Expand Down Expand Up @@ -49,7 +49,9 @@
"asset": "movies-100.json"
},
"synchronous": "WaitForTask"
},
}
],
"commands": [
{
"route": "indexes/movies/settings",
"method": "PATCH",
Expand Down
6 changes: 4 additions & 2 deletions workloads/settings-add-remove-filters.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"sha256": "28c359a0956958af0ba204ec11bad3045a0864a10b4838914fea25a01724f84b"
}
},
"commands": [
"precommands": [
{
"route": "indexes/peoples/settings",
"method": "PATCH",
Expand Down Expand Up @@ -59,7 +59,9 @@
"asset": "150k-people.json"
},
"synchronous": "WaitForTask"
},
}
],
"commands": [
{
"route": "indexes/peoples/settings",
"method": "PATCH",
Expand Down
6 changes: 4 additions & 2 deletions workloads/settings-proximity-precision.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"sha256": "28c359a0956958af0ba204ec11bad3045a0864a10b4838914fea25a01724f84b"
}
},
"commands": [
"precommands": [
{
"route": "indexes/peoples/settings",
"method": "PATCH",
Expand Down Expand Up @@ -61,7 +61,9 @@
"asset": "150k-people.json"
},
"synchronous": "WaitForTask"
},
}
],
"commands": [
{
"route": "indexes/peoples/settings",
"method": "PATCH",
Expand Down
6 changes: 4 additions & 2 deletions workloads/settings-remove-add-swap-searchable.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"sha256": "28c359a0956958af0ba204ec11bad3045a0864a10b4838914fea25a01724f84b"
}
},
"commands": [
"precommands": [
{
"route": "indexes/peoples/settings",
"method": "PATCH",
Expand Down Expand Up @@ -61,7 +61,9 @@
"asset": "150k-people.json"
},
"synchronous": "WaitForTask"
},
}
],
"commands": [
{
"route": "indexes/peoples/settings",
"method": "PATCH",
Expand Down
27 changes: 23 additions & 4 deletions workloads/settings-typo.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"sha256": "28c359a0956958af0ba204ec11bad3045a0864a10b4838914fea25a01724f84b"
}
},
"commands": [
"precommands": [
{
"route": "indexes/peoples/settings",
"method": "PATCH",
Expand Down Expand Up @@ -62,14 +62,18 @@
"asset": "150k-people.json"
},
"synchronous": "WaitForTask"
},
}
],
"commands": [
{
"route": "indexes/peoples/settings",
"method": "PATCH",
"body": {
"inline": {
"typoTolerance": {
"disableOnAttributes": ["featured_job_organization_name"]
"disableOnAttributes": [
"featured_job_organization_name"
]
}
}
},
Expand All @@ -93,7 +97,22 @@
"body": {
"inline": {
"typoTolerance": {
"disableOnWords": ["Ben","Elowitz","Kevin","Flaherty", "Ron", "Dustin", "Owen", "Chris", "Mark", "Matt", "Peter", "Van", "Head", "of"]
"disableOnWords": [
"Ben",
"Elowitz",
"Kevin",
"Flaherty",
"Ron",
"Dustin",
"Owen",
"Chris",
"Mark",
"Matt",
"Peter",
"Van",
"Head",
"of"
]
}
}
},
Expand Down
11 changes: 11 additions & 0 deletions xtask/src/bench/workload.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ pub struct Workload {
pub run_count: u16,
pub extra_cli_args: Vec<String>,
pub assets: BTreeMap<String, Asset>,
#[serde(default)]
pub precommands: Vec<super::command::Command>,
pub commands: Vec<super::command::Command>,
}

Expand All @@ -37,6 +39,15 @@ async fn run_commands(
let report_folder = &args.report_folder;
let workload_name = &workload.name;

for batch in workload
.precommands
.as_slice()
.split_inclusive(|command| !matches!(command.synchronous, SyncMode::DontWait))
{
super::command::run_batch(meili_client, batch, &workload.assets, &args.asset_folder)
.await?;
}

std::fs::create_dir_all(report_folder)
.with_context(|| format!("could not create report directory at {report_folder}"))?;

Expand Down

0 comments on commit 76bb6d5

Please sign in to comment.