Tier1-CNAF

Istituto Nazionale di Fisica Nucleare · Huawei OceanStor · 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.

This storage cluster was used for data processing of LHC experiments at CERN as TIER 1 site of Worldwide LHC Computing Grid (WLCG)

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.

The system was deployed during the period of December 2018 to February 2019, and was in production from March 2019 to December 2024. 
Access to the storage was granted to users of LHC experiments.

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).

The software used is Spectrum Scale from IBM, which is commercially available. We made a single filesystem of about 11PiB, divided into multiple filesets pointing to two different storage pools, one with 60 SSDs and another with 2412 HDDs.
This specific submission refers to the pool with SSDs only. 


The benchmark was executed using openmpi version 5.0.7

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.

[root@xs-403 ~]# mmlsconfig
Configuration data for cluster io500.cr.cnaf.infn.it:
-----------------------------------------------------
clusterName io500.cr.cnaf.infn.it
clusterId 16723997371215827715
dmapiFileHandleSize 32
minReleaseLevel 5.1.9.0
tscCmdAllowRemoteConnections no
ccrEnabled yes
cipherList AUTHONLY
sdrNotifyAuthEnabled yes
verbsPorts mlx5_0/1 mlx5_1/1
nsdThreadsPerQueue 12
maxFilesToCache 200000
nsdMaxWorkerThreads 512
ioHistorySize 512
maxMBpS 32000
maxInodeDeallocPrefetch 128
prefetchLargeBlockThreshold 4194304
linuxStatfsUnits subblocks
workerThreads 512
prefetchThreads 256
verbsRdmaSend yes
autoload yes
prefetchPct 60
pagepool 96G
maxStatCache 800000
nsdSmallThreadRatio 2
verbsRdma enable
[common]
adminMode central

File systems in cluster io500.cr.cnaf.infn.it:
----------------------------------------------
/dev/gpfs_test


[root@xs-403 ~]# mmlsfileset gpfs_test
Filesets in file system 'gpfs_test':
Name                     Status    Path
root                     Linked    /gpfs/gpfs_test
ssd                      Linked    /gpfs/gpfs_test/ssd

[root@xs-403 ~]# mmlspolicy gpfs_test -L
RULE 'SSD' SET POOL data FOR FILESET ('ssd')
RULE 'DEFAULT' SET POOL 'data2'


[root@xs-403 ~]# mmlspool gpfs_test
Storage pools in file system at '/gpfs/gpfs_test':
Name                    Id   BlkSize Data Meta Total Data in (KB)   Free Data in (KB)   Total Meta in (KB)    Free Meta in (KB)
system                   0      4 MB   no  yes              0              0 (  0%)     7914651648     5452574720 ( 69%)
data                 65537      4 MB  yes   no    67203301376    63312744448 ( 94%)              0              0 (  0%)
data2                65538      4 MB  yes   no 11521494253568 11510959566848 (100%)              0              0 (  0%)





[root@xs-403 schema-tools]# mmlscluster

GPFS cluster information
========================
  GPFS cluster name:         io500.cr.cnaf.infn.it
  GPFS cluster id:           16723997371215827715
  GPFS UID domain:           io500.cr.cnaf.infn.it
  Remote shell command:      /usr/bin/ssh
  Remote file copy command:  /usr/bin/scp
  Repository type:           CCR

Node  Daemon node name        IP address       Admin node name         Designation
------------------------------------------------------------------------------------
   1   xs-201.cr.cnaf.infn.it  131.154.130.152  xs-201.cr.cnaf.infn.it  quorum-manager
   2   xs-301.cr.cnaf.infn.it  131.154.130.156  xs-301.cr.cnaf.infn.it  quorum-manager
   3   xs-401.cr.cnaf.infn.it  131.154.130.160  xs-401.cr.cnaf.infn.it  quorum-manager
   4   xs-203.cr.cnaf.infn.it  131.154.130.154  xs-203.cr.cnaf.infn.it  manager
   5   xs-302.cr.cnaf.infn.it  131.154.130.157  xs-302.cr.cnaf.infn.it  manager
   6   xs-303.cr.cnaf.infn.it  131.154.130.158  xs-303.cr.cnaf.infn.it  manager
   7   xs-402.cr.cnaf.infn.it  131.154.130.161  xs-402.cr.cnaf.infn.it  manager
   8   xs-403.cr.cnaf.infn.it  131.154.130.162  xs-403.cr.cnaf.infn.it  manager
   9   xs-404.cr.cnaf.infn.it  131.154.130.163  xs-404.cr.cnaf.infn.it  manager
  10   xs-004.cr.cnaf.infn.it  131.154.130.144  xs-004.cr.cnaf.infn.it  manager


[root@xs-403 ~]#  mmlsfs gpfs_test
flag                value                    description
------------------- ------------------------ -----------------------------------
 -f                 8192                     Minimum fragment (subblock) size in bytes
 -i                 4096                     Inode size in bytes
 -I                 32768                    Indirect block size in bytes
 -m                 1                        Default number of metadata replicas
 -M                 2                        Maximum number of metadata replicas
 -r                 1                        Default number of data replicas
 -R                 2                        Maximum number of data replicas
 -j                 cluster                  Block allocation type
 -D                 nfs4                     File locking semantics in effect
 -k                 all                      ACL semantics in effect
 -n                 32                       Estimated number of nodes that will mount file system
 -B                 4194304                  Block size
 -Q                 none                     Quotas accounting enabled
                    none                     Quotas enforced
                    none                     Default quotas enabled
 --perfileset-quota No                       Per-fileset quota enforcement
 --filesetdf        No                       Fileset df enabled?
 -V                 33.00 (5.1.9.0)          File system version
 --create-time      Tue Apr  1 16:30:33 2025 File system creation time
 -z                 No                       Is DMAPI enabled?
 -L                 33554432                 Logfile size
 -E                 No                       Exact mtime mount option
 -S                 Yes                      Suppress atime mount option
 -K                 whenpossible             Strict replica allocation option
 --fastea           Yes                      Fast external attributes enabled?
 --encryption       No                       Encryption enabled?
 --inode-limit      576716800                Maximum number of inodes
 --uid              98829A83:67EBF889        File system UID
 --log-replicas     0                        Number of log replicas
 --is4KAligned      Yes                      is4KAligned?
 --rapid-repair     Yes                      rapidRepair enabled?
 --write-cache-threshold 0                   HAWC Threshold (max 65536)
 --subblocks-per-full-block 512              Number of subblocks per full block
 -P                 system;data;data2        Disk storage pools in file system
 --file-audit-log   No                       File Audit Logging enabled?
 --maintenance-mode No                       Maintenance Mode enabled?
 --flush-on-close   No                       flush cache on file close enabled?
 --auto-inode-limit No                       Increase maximum number of inodes per inode space automatically?
 --nfs4-owner-write-acl Yes                  NFSv4 implicit owner WRITE_ACL permission enabled?
 -d                 os18k4_ssd01;os18k5_ssd04;os18k5_ssd03;os18k5_ssd02;os18k5_ssd01;os18k3_ssd04;os18k3_ssd03;os18k3_ssd02;os18k3_ssd01;os18k4_ssd04;os18k4_ssd03;os18k4_ssd02;os18k3_sas01;
 -d                 os18k3_sas02;os18k3_sas03;os18k3_sas04;os18k3_sas05;os18k3_sas06;os18k3_sas07;os18k3_sas08;os18k3_sas09;os18k3_sas10;os18k3_sas11;os18k3_sas12;os18k3_sas13;os18k3_sas14;
 -d                 os18k3_sas15;os18k3_sas16;os18k3_sas17;os18k3_sas18;os18k3_sas19;os18k3_sas20;os18k3_sas21;os18k3_sas22;os18k3_sas23;os18k3_sas24;os18k3_sas25;os18k3_sas26;os18k3_sas27;
 -d                 os18k3_sas28;os18k3_sas29;os18k3_sas30;os18k3_sas31;os18k3_sas32;os18k3_sas33;os18k3_sas34;os18k3_sas35;os18k3_sas36;os18k3_sas37;os18k3_sas38;os18k3_sas39;os18k3_sas40;
 -d                 os18k3_sas41;os18k3_sas42;os18k3_sas43;os18k3_sas44;os18k3_sas45;os18k3_sas46;os18k3_sas47;os18k3_sas48;os18k4_sas01;os18k4_sas02;os18k4_sas03;os18k4_sas04;os18k4_sas05;
 -d                 os18k4_sas06;os18k4_sas07;os18k4_sas08;os18k4_sas09;os18k4_sas10;os18k4_sas11;os18k4_sas12;os18k4_sas13;os18k4_sas14;os18k4_sas15;os18k4_sas16;os18k4_sas17;os18k4_sas18;
 -d                 os18k4_sas19;os18k4_sas20;os18k4_sas21;os18k4_sas22;os18k4_sas23;os18k4_sas24;os18k4_sas25;os18k4_sas26;os18k4_sas27;os18k4_sas28;os18k4_sas29;os18k4_sas30;os18k4_sas31;
 -d                 os18k4_sas32;os18k4_sas33;os18k4_sas34;os18k4_sas35;os18k4_sas36;os18k4_sas37;os18k4_sas38;os18k4_sas39;os18k4_sas40;os18k4_sas41;os18k4_sas42;os18k4_sas43;os18k4_sas44;
 -d                 os18k4_sas45;os18k4_sas46;os18k4_sas47;os18k4_sas48;os18k5_sas01;os18k5_sas02;os18k5_sas03;os18k5_sas04;os18k5_sas05;os18k5_sas06;os18k5_sas07;os18k5_sas08;os18k5_sas09;
 -d                 os18k5_sas10;os18k5_sas11;os18k5_sas12;os18k5_sas13;os18k5_sas14;os18k5_sas15;os18k5_sas16;os18k5_sas17;os18k5_sas18;os18k5_sas19;os18k5_sas20;os18k5_sas21;os18k5_sas22;
 -d                 os18k5_sas23;os18k5_sas24;os18k5_sas25;os18k5_sas26;os18k5_sas27;os18k5_sas28;os18k5_sas29;os18k5_sas30;os18k5_sas31;os18k5_sas32;os18k5_sas33;os18k5_sas34;os18k5_sas35;
 -d                 os18k5_sas36;os18k5_sas37;os18k5_sas38;os18k5_sas39;os18k5_sas40;os18k5_sas41;os18k5_sas42;os18k5_sas43;os18k5_sas44;os18k5_sas45;os18k5_sas46;os18k5_sas47;os18k5_sas48  Disks in file system
 -A                 yes                      Automatic mount option
 -o                 none                     Additional mount options
 -T                 /gpfs/gpfs_test          Default mount point
 --mount-priority   0                        Mount priority

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.

Everything is redundant.

The storage racks are equipped with 2 PDU, powerd by independant sources and backed UPS + generator. The storage subsystems have redundant PSU, each PSU is connected to a different PDU, as a consequence the failure of a PSU, PDU or the UPS would not bring down the storage system.

The Huawei system storage are also dual controllers, each controller has 2 dual port NIC and each NIC is connected to 2 different switches, allowing the storage to remain available in case of failure of a controller, NIC, cable, or switch.

Disk are configured in 16+2 RAID6 over groups of 67 HDDs, and 8+2 RAID6 over groups of 20 SSDs.

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 after decomissioning as a production system, so no other jobs were running at the same time, and the system and storage were entirely dedicated to running the benchmark.

The benchmark was executed using the provided io500.sh script using openmpi and 10 computing nodes. 

Changes to the default script were:
io500_mpirun="mpiexec --map-by socket"
io500_mpiargs="--allow-run-as-root -mca pml ucx -x UCX_NET_DEVICES=mlx5_0:1,mlx5_1:1 -host xs-201.cr.cnaf.infn.it:10,xs-403.cr.cnaf.infn.it:10,xs-301.cr.cnaf.infn.it:10,xs-401.cr.cnaf.infn.it:10,xs-203.cr.cnaf.infn.it:10,xs-302.cr.cnaf.infn.it:10,xs-303.cr.cnaf.infn.it:10,xs-402.cr.cnaf.infn.it:10,xs-404.cr.cnaf.infn.it:10,xs-004.cr.cnaf.infn.it:10 -np 100"

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

We set up a 96GB pagepool on the GPFS clients and dedicating 60% of that to prefetching.

Storage controller caching (mirrored between controllers): write-back and read-through

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.

This is a standalone storage system and for this submission we used only the SSD partition. 

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"?

We run the benchmark multiple time and the best run has been uploaded. All runs gave similar results whithin +/- 10% . 

We validated that the results of the benchmark to be within the physical capabilities of the system.

Yes, the data used by the benchmark relies on persistent storage (SSDs drives in this case), and no burst-buffer layer in use.