1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Power Systems Virtual Serverのストレージ性能を実測

Last updated at Posted at 2021-10-22

Power Systems Virtual Serverのストレージには、2つのTierがあり、1GBあたりのIOPSが設定されています。ボリュームのサイズが大きくなるほどIOPS性能も上がっていく、という特徴があります。
https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-about-virtual-server#storage-tiers

Tier 1 -> 10 IOPS/GB
Tier 3 -> 3 IOPS/GB

実体としては、FS9000シリーズがファイバー接続されているというのは、こちらのハードウェア仕様を見ることで分かります。
https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-about-virtual-server#hardware-specifications

仕様通りの性能が出るかどうか、ndiskで測定してみました。結論を先に書くと、ほぼ、仕様から想定される通りの性能が出ました。
※保証値ではないため、環境やI/Oの特性により結果が異なる可能性があります。

環境

Power VS上の下記の環境で測定しました。
AIX 0.25core 2GBメモリ(Tier1)に、2TBのボリュームを1つと、100GBのボリュームを1つ、接続。

ツールを入手

今回は、nstressツールに含まれるndisk64を使います。
nstressツールは下記からダウンロードできます。ダウンロードしたtarを展開すると、ndisk64が入っており、そのまま実行できます。
https://www.ibm.com/support/pages/stress-test-your-aix-or-linux-server-nstress

ツールの実行方法は、下記を参考にしました。
https://it-memo.info/?p=1851

テスト用のファイルも上記に倣い、1GBのファイルを4つ作っています。

# ls -la /data/test
total 8388608
drwxr-xr-x    2 root     system          256 Oct 16 22:11 .
drwxr-xr-x    4 root     system          256 Oct 16 22:08 ..
-rw-r--r--    1 root     system   1073741824 Oct 21 23:46 testfile1
-rw-r--r--    1 root     system   1073741824 Oct 21 23:46 testfile2
-rw-r--r--    1 root     system   1073741824 Oct 21 23:46 testfile3
-rw-r--r--    1 root     system   1073741824 Oct 21 23:46 testfile4
# 

また、様々なパラメータが指定できますが、ブロックサイズ4KB、read/writeは50:50で測定しました。

2TBボリューム

まず、2TBのボリュームでテストします。
Tier 1(10 IOPS/GB)のストレージで2,000 GBなので、20,000 IOPSが期待される性能です。

IO/secの列のTOTALSの行で、ほぼ仕様通りの20030.0 IOPSだった事が分かります。

ランダム
# ./ndisk64 -f /data/test/testfile1:/data/test/testfile2:/data/test/testfile3:/data/test/testfile4 -R -r 50 -M 4 -b 4K -s 32M -t 60 -D
Command: ./ndisk64 -f /data/test/testfile1 /data/test/testfile2 /data/test/testfile3 /data/test/testfile4 -R -r 50 -M 4 -b 4K -s 32M -t 60 -D 
        Synchronous Disk test (regular read/write)
        No. of processes = 4 
        I/O type         = Random
        Block size       = 4096
        Read-Write       = Equal read and write
        Sync type: none  = just close the file
        File open() mode = Direct I/O mode - O_DIRECT
        Number of files  = 4
        File size        = 33554432 bytes = 32768 KB = 32 MB
        Run time         = 60 seconds
        Snooze %         = 0 percent
----> Running test with block Size=4096 (4KB) ....
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
Proc - <-----Disk IO----> | <-----Throughput------> RunTime
 Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
   1 -    300800   5013.3 |     19.58     20053.28  60.00
   2 -    300430   5007.2 |     19.56     20028.94  60.00
   3 -    300590   5009.8 |     19.57     20039.33  60.00
   4 -    299978   4999.6 |     19.53     19998.40  60.00
TOTALS   1201798  20030.0 |     78.24     80119.94
- Random procs=  4 read= 50% bs=  4KB
# 

シーケンシャルも20137.1 IOPSと、仕様から期待される通りの性能が出ています。

シーケンシャル
# ./ndisk64 -f /data/test/testfile1:/data/test/testfile2:/data/test/testfile3:/data/test/testfile4 -S -r 50 -M 4 -b 4K -s 32M -t 60 -D
Command: ./ndisk64 -f /data/test/testfile1 /data/test/testfile2 /data/test/testfile3 /data/test/testfile4 -S -r 50 -M 4 -b 4K -s 32M -t 60 -D 
        Synchronous Disk test (regular read/write)
        No. of processes = 4 
        I/O type         = Sequential
        Block size       = 4096
        Read-Write       = Equal read and write
        Sync type: none  = just close the file
        File open() mode = Direct I/O mode - O_DIRECT
        Number of files  = 4
        File size        = 33554432 bytes = 32768 KB = 32 MB
        Run time         = 60 seconds
        Snooze %         = 0 percent
----> Running test with block Size=4096 (4KB) ....
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
Proc - <-----Disk IO----> | <-----Throughput------> RunTime
 Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
   1 -    301831   5030.5 |     19.65     20122.13  60.00
   2 -    302455   5041.0 |     19.69     20163.90  60.00
   3 -    301638   5027.3 |     19.64     20109.21  60.00
   4 -    302295   5038.3 |     19.68     20153.04  60.00
TOTALS   1208219  20137.1 |     78.66     80548.28
- Seqential procs=  4 read= 50% bs=  4KB
# 

なお、プロセス数が少ないと、別の箇所がネックになるようで、ディスク性能をフルには使えていないようでした。

1プロセスの場合
# ./ndisk64 -f /data/test/testfile1 -R -r 50 -M 1 -b 4K -s 32M -t 60 -D
Command: ./ndisk64 -f /data/test/testfile1 -R -r 50 -M 1 -b 4K -s 32M -t 60 -D 
        Synchronous Disk test (regular read/write)
        No. of processes = 1 
        I/O type         = Random
        Block size       = 4096
        Read-Write       = Equal read and write
        Sync type: none  = just close the file
        File open() mode = Direct I/O mode - O_DIRECT
        Number of files  = 1
        File size        = 33554432 bytes = 32768 KB = 32 MB
        Run time         = 60 seconds
        Snooze %         = 0 percent
----> Running test with block Size=4096 (4KB) .
start randomise - bs=4096 sizeof(long)=4
stop  randomise
Proc - <-----Disk IO----> | <-----Throughput------> RunTime
 Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
   1 -    322749   5379.2 |     21.01     21516.62  60.00
#
2プロセスの場合
# ./ndisk64 -f /data/test/testfile1:/data/test/testfile2 -R -r 50 -M 2 -b 4K -s 32M -t 60 -D
Command: ./ndisk64 -f /data/test/testfile1 /data/test/testfile2 -R -r 50 -M 2 -b 4K -s 32M -t 60 -D 
        Synchronous Disk test (regular read/write)
        No. of processes = 2 
        I/O type         = Random
        Block size       = 4096
        Read-Write       = Equal read and write
        Sync type: none  = just close the file
        File open() mode = Direct I/O mode - O_DIRECT
        Number of files  = 2
        File size        = 33554432 bytes = 32768 KB = 32 MB
        Run time         = 60 seconds
        Snooze %         = 0 percent
----> Running test with block Size=4096 (4KB) ..
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
Proc - <-----Disk IO----> | <-----Throughput------> RunTime
 Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
   1 -    309330   5155.5 |     20.14     20622.03  60.00
   2 -    309387   5156.4 |     20.14     20625.78  60.00
TOTALS    618717  10312.0 |     40.28     41247.81
- Random procs=  2 read= 50% bs=  4KB
#

OSのキャッシュが有効な場合

上記は、ストレージ性能を確認するのが目的だったので、-Dオプションを付けていました。
-Dオプションを付けないとOSのキャッシュを使うようになり、ストレージ自体の性能より高い結果になります。

ランダム(キャッシュあり)
# ./ndisk64 -f /data/test/testfile1:/data/test/testfile2:/data/test/testfile3:/data/test/testfile4 -R -r 50 -M 4 -b 4K -s 32M -t 60
Command: ./ndisk64 -f /data/test/testfile1 /data/test/testfile2 /data/test/testfile3 /data/test/testfile4 -R -r 50 -M 4 -b 4K -s 32M -t 60 
        Synchronous Disk test (regular read/write)
        No. of processes = 4 
        I/O type         = Random
        Block size       = 4096
        Read-Write       = Equal read and write
        Sync type: none  = just close the file
        Number of files  = 4
        File size        = 33554432 bytes = 32768 KB = 32 MB
        Run time         = 60 seconds
        Snooze %         = 0 percent
----> Running test with block Size=4096 (4KB) ....
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
Proc - <-----Disk IO----> | <-----Throughput------> RunTime
 Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
   1 -   9758340 162640.2 |    635.31    650560.86  60.00
   2 -   9746163 162438.1 |    634.52    649752.24  60.00
   3 -   9209120 153485.9 |    599.55    613943.74  60.00
   4 -   9590731 159845.8 |    624.40    639383.02  60.00
TOTALS  38304354 638410.0 |   2493.79   2553639.85
- Random procs=  4 read= 50% bs=  4KB
# 
シーケンシャル(キャッシュあり)
# ./ndisk64 -f /data/test/testfile1:/data/test/testfile2:/data/test/testfile3:/data/test/testfile4 -S -r 50 -M 4 -b 4K -s 32M -t 60
Command: ./ndisk64 -f /data/test/testfile1 /data/test/testfile2 /data/test/testfile3 /data/test/testfile4 -S -r 50 -M 4 -b 4K -s 32M -t 60 
        Synchronous Disk test (regular read/write)
        No. of processes = 4 
        I/O type         = Sequential
        Block size       = 4096
        Read-Write       = Equal read and write
        Sync type: none  = just close the file
        Number of files  = 4
        File size        = 33554432 bytes = 32768 KB = 32 MB
        Run time         = 60 seconds
        Snooze %         = 0 percent
----> Running test with block Size=4096 (4KB) ....
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
start randomise - bs=4096 sizeof(long)=4
stop  randomise
Proc - <-----Disk IO----> | <-----Throughput------> RunTime
 Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
   1 -   1187841  19803.1 |     77.36     79212.44  59.98
   2 -   1190883  19852.0 |     77.55     79407.87  59.99
   3 -   1190368  19842.1 |     77.51     79368.26  59.99
   4 -   1112224  18493.8 |     72.24     73975.40  60.14
TOTALS   4681316  77991.0 |    304.65    311963.96
- Seqential procs=  4 read= 50% bs=  4KB
# 

100GBボリューム

100GB, Tier1のボリュームは、仕様から想定される通り、ほぼ1,000 IOPSでした。

ランダム
# /ndisk64 -f /data2/test2/testfile1 -R -r 50 -b 4K -s 32M -t 60 -D
Command: /ndisk64 -f /data2/test2/testfile1 -R -r 50 -b 4K -s 32M -t 60 -D 
        Synchronous Disk test (regular read/write)
        No. of processes = 1 
        I/O type         = Random
        Block size       = 4096
        Read-Write       = Equal read and write
        Sync type: none  = just close the file
        File open() mode = Direct I/O mode - O_DIRECT
        Number of files  = 1
        File size        = 33554432 bytes = 32768 KB = 32 MB
        Run time         = 60 seconds
        Snooze %         = 0 percent
----> Running test with block Size=4096 (4KB) .
start randomise - bs=4096 sizeof(long)=4
stop  randomise
Proc - <-----Disk IO----> | <-----Throughput------> RunTime
 Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
   1 -     60951   1015.8 |      3.97      4063.33  60.00
#
シーケンシャル
# /ndisk64 -f /data2/test2/testfile1 -S -r 50 -b 4K -s 32M -t 60 -D
Command: /ndisk64 -f /data2/test2/testfile1 -S -r 50 -b 4K -s 32M -t 60 -D 
        Synchronous Disk test (regular read/write)
        No. of processes = 1 
        I/O type         = Sequential
        Block size       = 4096
        Read-Write       = Equal read and write
        Sync type: none  = just close the file
        File open() mode = Direct I/O mode - O_DIRECT
        Number of files  = 1
        File size        = 33554432 bytes = 32768 KB = 32 MB
        Run time         = 60 seconds
        Snooze %         = 0 percent
----> Running test with block Size=4096 (4KB) .
start randomise - bs=4096 sizeof(long)=4
stop  randomise
Proc - <-----Disk IO----> | <-----Throughput------> RunTime
 Num -     TOTAL   IO/sec |    MB/sec       KB/sec  Seconds
   1 -     60952   1015.8 |      3.97      4063.38  60.00
#

以上です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?