This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
io500:rules:submission [2019/06/25 17:47] – [Submission Rules] john_bent | io500:rules:submission [2020/08/31 17:34] (current) – kunkel | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Submission Rules ====== | ====== Submission Rules ====== | ||
- | The following rules should ensure a fair comparison of the IO-500 | + | The following rules should ensure a fair comparison of the IO500 results between systems and configurations. They serve to reduce mistakes and improve accuracy. |
- | + | ||
- | - The latest version of io500.sh | + | - Submissions are made using the latest version of the IO500 application |
- | - All required phases must be run and in the same order as they appear in the io500.sh script. | + | - $ git clone https:// |
- | - Read-after-write semantics: The system must be able to correctly read freshly written data from a different client after the close operation on the writer has been completed. | + | - Read-after-write semantics: The system must be able to correctly read freshly written data from a different client |
- | - All create phases | + | - All create/ |
- | - For SC19: The stonewall flag must be used and must be set to 300. | + | - We defined a very high workload for all benchmarks that should satisfy this requirement but you may have to set higher values. |
- | - There can be no edits made to the script beyond changing the allowed variables and adding commands to configure the storage system (e.g. setting striping parameters). | + | - There can be no edits made to the source code including used codes such as IOR. An exception |
- | * For example, there can be no artificial delays added within the script | + | - The file names for the mdtest output files may not be pre-created. |
- | * No edits are allowed | + | - You must run all phases of the benchmark on a single storage system |
- | * You may not overwrite any parameters that are set in utilities/ | + | - There is no limitation on the number of storage nodes, the storage servers may optionally |
- | - The file names for the mdtest | + | - All data must be written to persistent storage within the measured time for the individual benchmark, e.g. if a file system caches data, it must ensure that data is persistently stored before acknowledging the close. |
- | - You must run the benchmark on a single storage system. | + | - Submitting the results must be done in accordance with the instructions on our submission page. Please verify the correctness of your submission before you submit it. |
- | - You must configure | + | - If a tool other than the included pfind is used for the find phase, then it must follow the same input and output behavior as the included pfind and the source code must be included in the submission. |
- | - All data must be written to persistent storage within the measured time for the individual benchmark, | + | - It is not required to capture the list of matched files. |
- | - Submitting the results must be done in accordance with the instructions on our submission page. | + | - Please also refer to the README documents in the GitHub |
- | - If a tool other than the included pfind is used for the find phase, then it must follow the same input and output behavior as the included pfind. | + | - Please read the CHANGELOG.md file for the new changes on the IO500 benchmark |
- | - Please also refer to the README documents in the github | + | - Only submissions using at least 10 physical client nodes are eligible to win IO500 awards and at least one benchmark process must run on each |
- | + | - We accept results on fewer nodes for documentation purposes but they cannot be awarded. | |
+ | - Virtual machines can be used but the above rule must be followed. More than one virtual machine can be run on each physical node. | ||
+ | - For the 10 node challenge, there must be exactly 10 physical client nodes and at least one benchmark process must run on each client node. | ||
+ | - The only exception to this rule is the find benchmark which may optionally use fewer nodes/ | ||
+ | - Each of the four main phases (IOR easy and hard, and mdtest easy and hard) has a subdirectory which can be precreated and tuned (e.g. using tools such as lfs_setstripe or beegfs_ctl); | ||
Please send any requests for changes to these rules or clarifying questions to our mailing list. | Please send any requests for changes to these rules or clarifying questions to our mailing list. | ||
- | |||
- | ===== Allowed modifications ===== | ||
- | |||
- | Inside the io500.sh script you can make the modifications as indicated by the script, in particular these are: | ||
- | - In the setup_directories() function, change in which directory to run and set directory options (e.g. using tools such as lfs_setstripe or beegfs_ctl to specify different stripe size for the IOR easy directory and the IOR hard directory) | ||
- | - In setup_paths() set the MPI arguments. | ||
- | - In setup_find(), | ||
- | - In extra_description(), | ||
- | - Running with a stricter semantics such as O_DIRECT is allowed. | ||
- | - In the setup_ior|mdtest_easy|hard functions you can set the arguments for running the benchmarks. Details of allowed options are provided inside the script. As a rule of thumb, the hard benchmarks tolerate only options that do not change the access pattern. The easy patterns allow more changes as the intention is to show best-case performance (without explicit caching). | ||
- | |||
- | Please email the mailing list or the steering board for any clarifications. | ||