Pbench Integration Update#1
Closed
Maxusmusti wants to merge 45 commits into
Closed
Conversation
c5e849c to
7d2f7d6
Compare
1b88ab2 to
1a78dd4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
COLLECTORS
Introduces the ability to run data collection tools alongside benchmark runs
For example, running pbench data collection alongside a fio or uperf benchmark
Structure:
--collectorand--collector-configoptions torun_snafu(as well as--upload)set_config_vars(config): Parses through the config file and sets any specified vars / defaults, makes sure everything that needs to be in the file is.startup(): Performs env setup and initialization of necessary processes, as well as begins any persistent data collection processes (for continuous data collection over the course of the benchmark).start_sample(): Starts a data collection sample (for sample-based data collection tools, synced with benchmark samples). Return the sample archive dir.stop_sample(): Stops a data collection sample.shutdown(): Stops persistent data collcetion and other processes, performs cleanup and any desired post-processing.upload(): Uploads a collector's archives using a specified procedure to a desired location.collector_factory,_load_collectors,__init__files, and changes toregistryhave also been maderun_snafu, if a collector has been specified with a config, it will create/initialize the desired collector class and run that startup tasks. Then, before each benchmark sample, it will start a data collection sample which will be stopped once the benchmark sample ends. After the benchmark is complete, the collector shutdown/post-process tasks are run.--uploadoption while still including collector + configupload()method and the config file.collector_namedir under the maincollectordircollector_name.pyfile that creates aCollector_nameclass based on the abstract collector.prom_extracttool as another collectorPBENCH
ISSUES/TO-DO
SAMPLE ISSUE
sample, samples are defined within the benchmark, with each benchmark having its own for-loop iterating through the number of samples and yielding results.collect()method in the benchmarks where a for-loop is run over the number of samples with each iteration yielding one sample result, simply have acollect_sample()method that collects one sample of the benchmark (essentially the same code minus the for-loop), then have that called in the new sample loop in run_snafu at each iteration instead.for data in benchmark.run():
(current indexing stuff)
...and then inside the .run() there would be a for loop
for sample in range(samples)....(code to collect sample)for sample in range(samples):
collector.start_sample()
data = benchmark.collect_sample() ...now just has (code to collect sample), no
for sample in range(samples)collector.stop_sample()
(current indexing stuff)