DACH Storage Scale System 6000
IBM Ehningen System · IBM bb8nvme · Fully Reproducible
System Purpose
Question asked
Please describe the purpose and general usage of the submitted system. This would include the types of typical applications it supports (e.g., defense applications, molecular dynamics, benchmarking, system test, systems research), and the general use and purpose of the data generated by the applications running on it.
The system is primarily used for performance engineering, test, and measurements/benchmarking. An example of performance engineering work would be debugging customer reported performance issues.
Availability
Question asked
Please provide the deployment timeframe of the submitted system, or for on-demand cloud systems, the general period over which it is deployed and destroyed.
Please describe the availability of the system to users and who are its set of most regular users.
These resources are always in use and generally in the same cluster format although the Storage Scale servers may be connected in different manners (e.g. multiple building blocks of storage and the client nodes may mount other file systems for different storage servers). Various configurations of clients and servers typically last in the range of days to weeks before reconfiguration.
The system is available for team members that work on IBM Storage Scale, with the primary users being performance engineers.
Storage System Software
Question asked
How is this storage software available? (e.g., commercially, open-source, not publicly available) Note that if the storage software is not open-source or commercially available, then a general description would be requested, but this would limit the submission’s reproducibility score.
Can anyone download/purchase this software?
List either product webpage or open-source repo of the exact software used in IO500.
Give any and all additional details of this specific storage deployment: (e.g., type of storage server product such IBM ESS or DDN SFA400X2, use of Ext4 or some other file system on each storage node, dual connected storage media to storage servers).
IBM Storage Scale (the file system software) and Red Hat (the operating system) are generally commercially available.
For this submission an early version of Storage 5.2.2.0 (pre-GA) is used on the client nodes. If a customer requests this version of code, IBM intends to provide this version of code for purposes of reproducing io500 results in a non-production/test environment. (This submission is not from a production system.)
The version of software running on the Storage Scale System 6000 servers is G/A level ESS 6.2.1-0, which includes G/A Storage Scale (gpfs.base) 5.2.1.0 efix1. Regarding the specific storage deployment, this submission uses one building block of the IBM Storage Scale 6000 solution, which is described here:
https://www.ibm.com/downloads/documents/us-en/10a99803f5afd8d6
Anyone can purchase the Storage Scale software or download a limited use version (it is available commercially).
The product webpage is https://www.ibm.com/products/storage-scale
Runtime Environment
Question asked
State here that you provided all scripts/documentation that would allow someone else to reproduce your environment and attempt to achieve a similar IO500 score as the submitted system.
NOTE: provide all files/documentation/scripts that would enable a user to build your environment and deploy the custom scripts, software, or config files once they have obtained the appropriate storage system hardware and software. These may be included into the io500.tgz or into the extraCodes upload on the submission form.
Several examples include:
- Commands used to set striping information (either for the entire system or for particular directories)
- File system config and tuning information (or a reason why this is not available due to lack of root access, etc) on each node type (e.g., non-default config parameters on all three types of Lustre nodes: MDS, OSS, and client)
- Any additional scripts utilized that impact IO500 execution beyond the io500 config file. For example, with IBM Spectrum Scale, the output of mmlsconfig, mmlscluster, mmlsfs, and mmlsfileset commands (and possibly even a dump of the configuration if possible). Each file system probably has similar type of config/tuning information that would need to be shared for a user to fully reproduce the environment.
All scripts and additional documentation have been included in the 2024.11.11-00.01.32.ZIP file.
Here are details on the tuning and configuration steps used:
As noted above, the version of Storage Scale 5.2.2.0 used on the client nodes is a development early build of this mod level of software.
In the case in which a customer wants to reproduce our results, IBM intends to provide this version of code for purposes of reproducing io500 results in a non-production/test environment. (This submission is not from a production system.)
1. The exact ‘mmchconfig’ options that were tuned are included (in the mmlsconfig file) in ZIP file included. Details on how these file system configuration options are set are described in the included file: README.fs_config and the included run script wrapper(s).
2. Using the ‘mmchnode’ all nodes (clients and servers) have been defined as ‘manager’ role nodes as shown in ‘mmlscluster’ file attached
3. In this version of the Storage Scale Server The PCI tuning option PCI_WR_ORDERING has been enabled in the ESS 6.2.1-0 code.
The client nodes have manually enabled this setting using this process:
Find the MST device name of each adapter, e.g.:
mst start
mst status
/dev/mst/mt4123_pciconf0
Enable PC_WR_ORDERING for each such device, e.g.:
mlxconfig -d /dev/mst/mt4123_pciconf0 s PCI_WR_ORDERING=1
<reboot for the change to take effect>
The server nodes also have manually set INT_LOG_MAX_PAYLOAD_SIZE to the default/automatic setting as follows:
Find the MST device name of each adapter, e.g.:
mst start
mst status
/dev/mst/mt4123_pciconf0
Set INT_LOG_MAX_PAYLOAD_SIZE for each such device, e.g.:
echo y | mlxconfig -d $i -e s INT_LOG_MAX_PAYLOAD_SIZE=0
<reboot for the change to take effect>
4. As shown in the mmlsfs file attached, the file system block is 16MB (file system block size is a choice based on the use case)
5. Details on the io500 run itself are in the README.io500_config file that’s attached to the ZIP
6. The details of the external pfind script used are in the find_script directory included in the ZIP
7. The choice of erasure encoding used is 8+2P, which is a choice based on the use case (8+2P is the most common erasure encoding option used for the storage configuration)
8. The file system created for the io500 run preallocates 500M inodes and uses a file system version of 5.1.7 (--mmcrfs --inode-limit 1500M:500M --version=5.1.7)
Fault Tolerance Mechanisms
Question asked
Does your system have a single point of failure as defined by “Definition 7” of a Production System? Please describe all mechanisms that provide fault tolerance for the submitted storage system. Be specific to your submission, not general storage system capabilities.
- Power (For example, can power failure of a node or rack bring down the storage system?)
- Networking (For example, can failure of a single NIC bring down the storage system? Remember that any networking failure that brings down multiple nodes is acceptable)
- Inter storage data and metadata server (For example, what type of data protection mechanism does the storage system use to keep operating during node failures, e.g., active-active servers, client-directed RAID, declustered RAID, erasure-coding, 3-way replication)
- Intra storage data and metadata server storage media (For example, how does the storage eysstem protect against fiailure of a single storage device within a node, e.g., raid5)
Please list any additional information needed to determine whether this system has a single point of failure.
IBM Storage Scale servers are designed with power redundancy in mind.
The network switch is a single point of failure (not-dual redundant switches)
The storage subsystem employs IBM Storage Scale RAID to use 8+2 erasure encoding and, for some metadata, replication to protect file system data from hardware component failures.
Execution
Question asked
Please provide a description of how the IO500 benchmark was executed, e.g., via system scheduler (e.g., SLURM) to run a job on the compute cluster, which initially ran a setup process to configure the client and file system, and then started the full benchmark.
During the IO500 benchmark execution was the system entirely dedicated to running the benchmark or were there other jobs running in the same cluster and storage system?
The benchmark was executed directly by calling the ‘io500.jl.sh’ script (same as io500.sh with main change being to use the –ppn option to MPICH’s mpiexec)using the runio500.sh wrapper script that has been included in this submission, along with the contents of the find_script directory, to provide all details on how the benchmark was run.
Additional details on how io500 was run are included in the README.io500_config file that is attached to the ZIP.
Caching
Question asked
Please describe all caching mechanisms in client/server that were utilized during the IO500 run. This could include caching in any storage medium (e.g., SSD, RAM).
A few examples would include:
- Client data/metadata caching (in Linux page cache or in other memory cache)
- Client side NVMe read-only data cache
- Storage server metadata/data caching in RAM
- Storage controller caching
- RAID card caching
On the client side, the Storage Scale pagepool (in RAM) is used to cache data in the same manner that the Linux file cache is used to cache data with other file systems such as ext4. Data is not cached on NVMe drives on the clients as those client drives are not used in the I/O path by the Storage Scale file system.
On the server side, a portion of the servers’ Storage Scale pagepool (RAM) is also available for caching. The effect of this caching provides similar caching to that obtained using solid state drive caching systems, and the NVMe drives on the servers also provide solid state caching.
Data Source
Question asked
Is the submitted system a stand-alone storage system or an acceleration layer in front of another storage system that is the source of truth for all application data? This question relates to whether the submitted system is a burst buffer layered on primary storage or primary storage itself.
There is no burst buffer used – it is the primary storage itself. Caching on the server-side page pool is analogous to how disk drive caching works.
Trust
Question asked
Please describe any steps taken to ensure that the results are trustworthy.
- Did you run the benchmark multiple times and get similar scores?
- Did you validate the score is below the physical capabilities of the deployed hardware?
- How did you validate that the storage system follows the IO500 rules regarding persistence, which states, "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"?
Very similar scores have been achieved in several other runs of the benchmark on the same system.
We have validated that the scores achieved are within the physical capabilities of the system.