|
|
|
# Filesystem Benchmarks
|
|
|
|
|
|
|
|
- [IOR](#ior)
|
|
|
|
- [Setup](#setup)
|
|
|
|
- [Running](#running)
|
|
|
|
- [IO-500](#io-500)
|
|
|
|
- [Setup](#setup-1)
|
|
|
|
- [Running](#running-1)
|
|
|
|
- [Custom image for IO500 dependencies](#custom-image-for-io500-dependencies)
|
|
|
|
- [FIO benchmark](#fio-benchmark)
|
|
|
|
- [References, graphs, and job files](#references-graphs-and-job-files)
|
|
|
|
- [Understanding IOR output](#understanding-ior-output)
|
|
|
|
**Table of contents**
|
|
|
|
<!-- vim-markdown-toc GFM -->
|
|
|
|
|
|
|
|
* [IOR](#ior)
|
|
|
|
* [Setup](#setup)
|
|
|
|
* [Running](#running)
|
|
|
|
* [IO-500](#io-500)
|
|
|
|
* [Setup](#setup-1)
|
|
|
|
* [Running](#running-1)
|
|
|
|
* [Custom image for IO500 dependencies](#custom-image-for-io500-dependencies)
|
|
|
|
* [FIO benchmark](#fio-benchmark)
|
|
|
|
* [References, graphs, and job files](#references-graphs-and-job-files)
|
|
|
|
* [Understanding IOR output](#understanding-ior-output)
|
|
|
|
* [Pleiades PBS Hello World](#pleiades-pbs-hello-world)
|
|
|
|
* [PBS Directives](#pbs-directives)
|
|
|
|
* [Hello World](#hello-world)
|
|
|
|
* [Running IOR in a PBS job](#running-ior-in-a-pbs-job)
|
|
|
|
* [Download IOR](#download-ior)
|
|
|
|
* [Preparing IOR](#preparing-ior)
|
|
|
|
* [Dependency issues](#dependency-issues)
|
|
|
|
* [Nautilus namespace and IOR units](#nautilus-namespace-and-ior-units)
|
|
|
|
* [Re-trying IOR on Pleiades](#re-trying-ior-on-pleiades)
|
|
|
|
* [Debugging in interactive mode](#debugging-in-interactive-mode)
|
|
|
|
* [Automated parameter sweeps](#automated-parameter-sweeps)
|
|
|
|
* [Parsing and graphing IOR outputs](#parsing-and-graphing-ior-outputs)
|
|
|
|
|
|
|
|
<!-- vim-markdown-toc -->
|
|
|
|
|
|
|
|
###### 03/09-03/13 2021
|
|
|
|
|
| ... | ... | @@ -711,6 +728,7 @@ PBS r301i5n3:~/ior-3.3.0> ./src/ior |
|
|
|
===================
|
|
|
|
Segmentation fault (core dumped)
|
|
|
|
```
|
|
|
|
|
|
|
|
```
|
|
|
|
PBS r301i5n3:~/ior-3.3.0/src> mpirun -n 1 ./ior
|
|
|
|
[r301i5n3:20556:0:20556] Caught signal 11 (Segmentation fault: address not mapped to object at address 0xe5)
|
| ... | ... | @@ -739,13 +757,37 @@ Looks like the abort happens due to mpirun -- but the truth of the matter is *we |
|
|
|
|
|
|
|
###### 03/27
|
|
|
|
|
|
|
|
Sweet, over the past few days I've been enable to replicate the segfault -- in other words, *IOR has been working fine as a PBS job!*
|
|
|
|
Sweet, over the past few days I've been unable to replicate the segfault -- in other words, *IOR has been working fine as a PBS job!*
|
|
|
|
|
|
|
|
Furthermore, I've gone ahead and cleaned up/commented the code *and ran it on the Lusture (/nobackup) filesystem!*
|
|
|
|
|
|
|
|
It's working great :) It's a super minimal example to just confirm it works. I'll run a slightly larger example parameter sweep as a finish that code.
|
|
|
|
It's working great :) It's a super minimal example to just confirm it works. I'll run a slightly larger example parameter sweep as I finish that code.
|
|
|
|
|
|
|
|
|
|
|
|
> ###### [ae00408](ssh///https://gitlab-ssh.nautilus.optiputer.net/30622/parkeraddison/filesystem-benchmarks/commit/ae00408b88260dd35be000cb263c924ee09f16fa)
|
|
|
|
> "Working IOR on Pleiades NFS and Lustre" | HEAD -> main | 2021-03-27
|
|
|
|
|
|
|
|
###### 03/28
|
|
|
|
|
|
|
|
There are a few things I've been working on:
|
|
|
|
1. Code to run parameter sweeps
|
|
|
|
2. Code to parse IOR outputs and graph them
|
|
|
|
3. Better installation and setup of this repository (e.g. automate downloading IOR)
|
|
|
|
|
|
|
|
## Automated parameter sweeps
|
|
|
|
|
|
|
|
There are some examples online, such as on the Lustre docs, of running parameter sweeps in a shell script. That's fine, and I've worked on one... but I can't help but feel things would be a lot easier (and more readable) to just script it in Python with some `subprocess`es and much easier iteration/logic flow.
|
|
|
|
|
|
|
|
What we can do that (I think) makes things easiest is to (1) use a shell script to submit the PBS job, load all dependencies, and load in the correct Python module then (2) call a Python script from within the PBS job which calls the IOR tests for the different parameter ranges.
|
|
|
|
|
|
|
|
Right now I have some hard-coded values in the Python script itself for the parameter sweeps... not sure if it pays to make the script read from a configuration file.
|
|
|
|
|
|
|
|
## Parsing and graphing IOR outputs
|
|
|
|
|
|
|
|
To more easily validate and see the effect of the different parameters, it would help to have code that converts the IOR outputs into tables then graphs them!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> ###### [fddf049](ssh///https://gitlab-ssh.nautilus.optiputer.net/30622/parkeraddison/filesystem-benchmarks/commit/fddf04911b8fb2af9f03f07a1a1f5c6dbd49cdc7)
|
|
|
|
> "Facilitate running IOR with a parameter sweep" | HEAD -> main | 2021-03-30
|
|
|
|
|