Update iai-callgrind requirement from 0.11.0 to 0.14.0
Updates the requirements on iai-callgrind to permit the latest version.
Release notes
Sourced from iai-callgrind's releases.
v0.14.0
[0.14.0] - 2024-10-04
This release adds full support for multi-threaded and multi-process applications.
When upgrading from a previous release of Iai-Callgrind you might experience changes in the metrics without having changed the benchmarks themselves. The
summaryline in callgrind output files turned out to be buggy and unreliable if client requests are used, so Iai-Callgrind now parses thetotalsinstead. Thetotalsmight differ slightly from thesummaryand cause the difference in the displayed metrics. You might also see changes in the metrics because of the changed default values for some of the valgrind arguments. Iai-Callgrind changed the following default valgrind/callgrind arguments for each benchmark run:
--separate-threads=no->--separate-threads=yes--trace-children=no->--trace-children=yes--fair-sched=no->--fair-sched=tryYou can now run the
setupin binary benchmarks in parallel to theCommandfor flexible benchmarking of client/server architectures.The MSRV has changed from
1.66.0->1.67.1.If not stated otherwise the changes below were introduced in #263.
Added
- Support for benchmarks of multi-threading and multi-process applications by implementing the correct handling of the valgrind
--trace-childrenand callgrind--separate-threadscommand line options. Per default only the total over all subprocesses and threads is calculated and shown. But, each thread and subprocess can be displayed with the newOutputFormat::show_intermediateoption.- Support for the callgrind command line arguments
--dump-every-bb,--dump-before,--dump-afterwhich create parts. These parts are now correctly summarized in the total and the metrics of each part can be shown withOutputFormat::show_intermediate.- Added
OutputFormatwhich can be used inLibraryBenchmarkConfig::output_formatandBinaryBenchmarkConfig::output_formatto change some of the behaviour of the default terminal output (but not json output)- Sometimes callgrind creates empty files, so we're cleaning them up now after each benchmark run.
- (#256) and (#279): Support running setup in parallel and add possibility to delay the
Command. Thanks to@hargutfor #256- (#288): Added an option
OutputFormat::show_gridto show grid/guiding lines which can help reading the terminal output if running benchmarks with multiple threads/subprocesses/tools.- The method
BinaryBenchmarkConfig::with_callgrind_argswas added to match the constructors of theLibraryBenchmarkConfig.- The methods
BinaryBenchmarkConfig::valgrind_argsandLibraryBenchmarkConfig::valgrind_argsare introduced to be able to pass valgrind core arguments to all tools.Changed
- All tools are now per default run with
--trace-children=yesand--fair-sched=try. In addition, callgrind is run with--separate-threads=yes. These default arguments can be changed inTool::argsorLibraryBenchmarkConfig::callgrind_args,BinaryBenchmarkConfig::callgrind_args.- The file naming scheme was adjusted to include the pids in case of multi-process benchmarks, the parts in case of callgrind command-line arguments which create multiple parts and threads in case of multiple threads. This change is backwards compatible to the file naming scheme of previous Iai-Callgrind releases for all tools but
exp-bbv.- Error metrics from tools like drd, helgrind and memcheck are now listed and compared like the other metrics in a vertical format. For example
======= DRD =============================================================== Errors: 0|0 (No change) Contexts: 0|0 (No change) Suppressed Errors: 0|0 (No change) Suppressed Contexts: 0|0 (No change)- (#263) and (#288): Increase the field width by 3 bytes and the space for metrics by 5 on each side of the comparison so that the value of
u64::MAXfits into the terminal output without messing up the side-by-side layout.- The
LibraryBenchmarkConfig::truncate_description,BinaryBenchmarkConfig::truncate_descriptionmethods have been moved toOutputFormat::truncate_description- In the presence of multiple processes the DHAT metrics are now summarized and shown in a total in the same way as the metrics of callgrind and the other tools.
- Bump the summary json schema to v3 in
iai-callgrind-runner/schemas/summary.v3.schema.json- Various prs: Update locked direct dependencies:
anyhow-> 1.0.89cc-> 1.1.25indexmap-> 2.6.0itertools-> 0.13.0
... (truncated)
Changelog
Sourced from iai-callgrind's changelog.
[0.14.0] - 2024-10-04
This release adds full support for multi-threaded and multi-process applications.
When upgrading from a previous release of Iai-Callgrind you might experience changes in the metrics without having changed the benchmarks themselves. The
summaryline in callgrind output files turned out to be buggy and unreliable if client requests are used, so Iai-Callgrind now parses thetotalsinstead. Thetotalsmight differ slightly from thesummaryand cause the difference in the displayed metrics. You might also see changes in the metrics because of the changed default values for some of the valgrind arguments. Iai-Callgrind changed the following default valgrind/callgrind arguments for each benchmark run:
--separate-threads=no->--separate-threads=yes--trace-children=no->--trace-children=yes--fair-sched=no->--fair-sched=tryYou can now run the
setupin binary benchmarks in parallel to theCommandfor flexible benchmarking of client/server architectures.The MSRV has changed from
1.66.0->1.67.1.If not stated otherwise the changes below were introduced in #263.
Added
- Support for benchmarks of multi-threading and multi-process applications by implementing the correct handling of the valgrind
--trace-childrenand callgrind--separate-threadscommand line options. Per default only the total over all subprocesses and threads is calculated and shown. But, each thread and subprocess can be displayed with the newOutputFormat::show_intermediateoption.- Support for the callgrind command line arguments
--dump-every-bb,--dump-before,--dump-afterwhich create parts. These parts are now correctly summarized in the total and the metrics of each part can be shown withOutputFormat::show_intermediate.- Added
OutputFormatwhich can be used inLibraryBenchmarkConfig::output_formatandBinaryBenchmarkConfig::output_formatto change some of the behaviour of the default terminal output (but not json output)- Sometimes callgrind creates empty files, so we're cleaning them up now after each benchmark run.
- (#256) and (#279): Support running setup in parallel and add possibility to delay the
Command. Thanks to@hargutfor #256- (#288): Added an
... (truncated)
Commits
83522cdMerge branch 'release'76cd7b2Update CHANGELOGda7550ccicd: Fix /usr/bin/ld: final link failed: No space left on deviceac024e1Bump version v0.13.4 -> v0.14.029826bcBump iai-callgrind-macros version v0.4.1 -> v0.5.051f2a71Update CHANGELOGd0bf688chore: Update locked dependencieseca0b9echore(deps): Use indexmap2 in schemars. Remove duplicate dependency on indexmapd6f534dchore(deps): Remove default features from rstest to pass minimal-versionscf8a039Update CONTRIBUTING- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bencher Report
| Branch | 87/merge |
| Testbed | localhost |
⚠️ WARNING: The following Measures do not have a Threshold. Without a Threshold, no Alerts will ever be generated!
Click here to create a new Threshold
For more information, see the Threshold documentation.
To only post results if a Threshold exists, set the--ci-only-thresholdsCLI flag.
Click to view all benchmark results
| Benchmark | Estimated Cycles | estimated cycles | Instructions | instructions | L1 Hits | hits | L2 Hits | hits | RAM Hits | hits | Total read+write | reads/writes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ci_bench::ci::reader read:setup_video("big_buck_bunny_1080p_24fps_h264.h264"... | 📈 view plot ⚠️ NO THRESHOLD | 16,716,500.00 | 📈 view plot ⚠️ NO THRESHOLD | 8,236,453.00 | 📈 view plot ⚠️ NO THRESHOLD | 10,846,620.00 | 📈 view plot ⚠️ NO THRESHOLD | 15,049.00 | 📈 view plot ⚠️ NO THRESHOLD | 165,561.00 | 📈 view plot ⚠️ NO THRESHOLD | 11,027,230.00 |
@dependabot rebase