17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NFS接続で I/Oスループット 100Gbps チャレンジしてみてみた

Last updated at Posted at 2024-09-17

Oracle Cloud Infrastructure (OCI) Compute BM.Standard.E5 で超高パフォーマンス・ボリューム(UHP)のストレージを使用して I/Oスループットが 100Gbpsでることを前回確認しました。
今回このコンピュートを2つ用意して NFSサーバー/クライアントをインストールおよび構成して fio で NFS I/Oスループット測定してみてみます。

■ 構成図

構成図.png

■ NFS Server 設定

● NFS Server インストール

nfs-utils パッケージは、カーネル NFS (ネットワーク ファイル システム) サーバーおよび関連ツール用のデーモンを提供し、従来の Linux NFS サーバーよりも優れたパフォーマンスを提供します。

1) Install nfs-utils
サーバー・インスタンスに接続し、NFSユーティリティーパッケージをインストール

[root@bm-e5-server ~]# dnf install nfs-utils
	Last metadata expiration check: 1 day, 15:21:37 ago on Tue 03 Sep 2024 01:24:20 PM GMT.
	Package nfs-utils-1:2.5.4-25.0.2.el9.x86_64 is already installed.
	Dependencies resolved.
	Nothing to do.
	Complete!

2) conf ファイル設定
nfsd のスレッド数を増加させます (デフォルトは 8)
性能の向上のために、NFS サーバーを設定する際には、必ず NFS スレッドを設定します。スレッド 1 つは、NFS 要求を 1 つ処理することができます。スレッドプールを大きくすることにより、サーバーは複数の NFS 要求を並行して処理することができます。プロセッサ数とネットワーク数に従って、このデフォルト値を大きくします。

[root@bm-e5-server ~]#vi /etc/nfs.conf
[nfsd]
threads=160

3) 設定反映

[root@bm-e5-server ~]# systemctl daemon-reload
[root@bm-e5-server ~]# systemctl restart nfs-mountd

4) 設定反映確認
 ・ カーネル・パラメータ確認

[root@bm-e5 ~]# cat /proc/fs/nfsd/threads
    160

 ・ プロセス確認

[root@bm-e5-server ~]# ps -ef | grep nfs
	root        5368       1  0 Sep19 ?        00:00:00 /usr/sbin/nfsdcld
	root        8308    8292  0 Sep19 ?        00:00:00 /usr/bin/python3 /var/lib/pcp/pmdas/nfsclient/pmdanfsclient.python
	root      240391       2  0 11:08 ?        00:00:00 [nfsd]
	root      240392       2  0 11:08 ?        00:00:00 [nfsd]
	root      240393       2  0 11:08 ?        00:00:00 [nfsd]
	root      240394       2  0 11:08 ?        00:00:00 [nfsd]
	root      240395       2  0 11:08 ?        00:00:00 [nfsd]
	root      240396       2  0 11:08 ?        00:00:00 [nfsd]
	root      240397       2  0 11:08 ?        00:00:00 [nfsd]
	root      240398       2  0 11:08 ?        00:00:00 [nfsd]
	root      240399       2  0 11:08 ?        00:00:00 [nfsd]
	root      240400       2  0 11:08 ?        00:00:00 [nfsd]
	root      240401       2  0 11:08 ?        00:00:00 [nfsd]
	root      240402       2  0 11:08 ?        00:00:00 [nfsd]
	root      240403       2  0 11:08 ?        00:00:00 [nfsd]
	root      240404       2  0 11:08 ?        00:00:00 [nfsd]
	root      240405       2  0 11:08 ?        00:00:00 [nfsd]
	root      240406       2  0 11:08 ?        00:00:00 [nfsd]
	root      240407       2  0 11:08 ?        00:00:00 [nfsd]
	root      240408       2  0 11:08 ?        00:00:00 [nfsd]
	root      240409       2  0 11:08 ?        00:00:00 [nfsd]
	root      240410       2  0 11:08 ?        00:00:00 [nfsd]
	root      240411       2  0 11:08 ?        00:00:00 [nfsd]
	root      240412       2  0 11:08 ?        00:00:00 [nfsd]
	root      240413       2  0 11:08 ?        00:00:00 [nfsd]
	root      240414       2  0 11:08 ?        00:00:00 [nfsd]
	root      240415       2  0 11:08 ?        00:00:00 [nfsd]
	root      240416       2  0 11:08 ?        00:00:00 [nfsd]
	root      240417       2  0 11:08 ?        00:00:00 [nfsd]
	root      240418       2  0 11:08 ?        00:00:00 [nfsd]
	root      240419       2  0 11:08 ?        00:00:00 [nfsd]
	root      240420       2  0 11:08 ?        00:00:00 [nfsd]
	root      240421       2  0 11:08 ?        00:00:00 [nfsd]
	root      240422       2  0 11:08 ?        00:00:00 [nfsd]
	root      240423       2  0 11:08 ?        00:00:00 [nfsd]
	root      240424       2  0 11:08 ?        00:00:00 [nfsd]
	root      240425       2  0 11:08 ?        00:00:00 [nfsd]
	root      240426       2  0 11:08 ?        00:00:00 [nfsd]
	root      240427       2  0 11:08 ?        00:00:00 [nfsd]
	root      240428       2  0 11:08 ?        00:00:00 [nfsd]
	root      240429       2  0 11:08 ?        00:00:00 [nfsd]
	root      240430       2  0 11:08 ?        00:00:00 [nfsd]
	root      240431       2  0 11:08 ?        00:00:00 [nfsd]
	root      240432       2  0 11:08 ?        00:00:00 [nfsd]
	root      240433       2  0 11:08 ?        00:00:00 [nfsd]
	root      240434       2  0 11:08 ?        00:00:00 [nfsd]
	root      240435       2  0 11:08 ?        00:00:00 [nfsd]
	root      240436       2  0 11:08 ?        00:00:00 [nfsd]
	root      240437       2  0 11:08 ?        00:00:00 [nfsd]
	root      240438       2  0 11:08 ?        00:00:00 [nfsd]
	root      240439       2  0 11:08 ?        00:00:00 [nfsd]
	root      240440       2  0 11:08 ?        00:00:00 [nfsd]
	root      240441       2  0 11:08 ?        00:00:00 [nfsd]
	root      240442       2  0 11:08 ?        00:00:00 [nfsd]
	root      240443       2  0 11:08 ?        00:00:00 [nfsd]
	root      240444       2  0 11:08 ?        00:00:00 [nfsd]
	root      240445       2  0 11:08 ?        00:00:00 [nfsd]
	root      240446       2  0 11:08 ?        00:00:00 [nfsd]
	root      240447       2  0 11:08 ?        00:00:00 [nfsd]
	root      240448       2  0 11:08 ?        00:00:00 [nfsd]
	root      240449       2  0 11:08 ?        00:00:00 [nfsd]
	root      240450       2  0 11:08 ?        00:00:00 [nfsd]
	root      240451       2  0 11:08 ?        00:00:00 [nfsd]
	root      240452       2  0 11:08 ?        00:00:00 [nfsd]
	root      240453       2  0 11:08 ?        00:00:00 [nfsd]
	root      240454       2  0 11:08 ?        00:00:00 [nfsd]
	root      240455       2  0 11:08 ?        00:00:00 [nfsd]
	root      240456       2  0 11:08 ?        00:00:00 [nfsd]
	root      240457       2  0 11:08 ?        00:00:00 [nfsd]
	root      240458       2  0 11:08 ?        00:00:00 [nfsd]
	root      240459       2  0 11:08 ?        00:00:00 [nfsd]
	root      240460       2  0 11:08 ?        00:00:00 [nfsd]
	root      240461       2  0 11:08 ?        00:00:00 [nfsd]
	root      240462       2  0 11:08 ?        00:00:00 [nfsd]
	root      240463       2  0 11:08 ?        00:00:00 [nfsd]
	root      240464       2  0 11:08 ?        00:00:00 [nfsd]
	root      240465       2  0 11:08 ?        00:00:00 [nfsd]
	root      240466       2  0 11:08 ?        00:00:00 [nfsd]
	root      240467       2  0 11:08 ?        00:00:00 [nfsd]
	root      240468       2  0 11:08 ?        00:00:00 [nfsd]
	root      240469       2  0 11:08 ?        00:00:00 [nfsd]
	root      240470       2  0 11:08 ?        00:00:00 [nfsd]
	root      240471       2  0 11:08 ?        00:00:00 [nfsd]
	root      240472       2  0 11:08 ?        00:00:00 [nfsd]
	root      240473       2  0 11:08 ?        00:00:00 [nfsd]
	root      240474       2  0 11:08 ?        00:00:00 [nfsd]
	root      240475       2  0 11:08 ?        00:00:00 [nfsd]
	root      240476       2  0 11:08 ?        00:00:00 [nfsd]
	root      240477       2  0 11:08 ?        00:00:00 [nfsd]
	root      240478       2  0 11:08 ?        00:00:00 [nfsd]
	root      240479       2  0 11:08 ?        00:00:00 [nfsd]
	root      240480       2  0 11:08 ?        00:00:00 [nfsd]
	root      240481       2  0 11:08 ?        00:00:00 [nfsd]
	root      240482       2  0 11:08 ?        00:00:00 [nfsd]
	root      240483       2  0 11:08 ?        00:00:00 [nfsd]
	root      240484       2  0 11:08 ?        00:00:00 [nfsd]
	root      240485       2  0 11:08 ?        00:00:00 [nfsd]
	root      240486       2  0 11:08 ?        00:00:00 [nfsd]
	root      240487       2  0 11:08 ?        00:00:00 [nfsd]
	root      240488       2  0 11:08 ?        00:00:00 [nfsd]
	root      240489       2  0 11:08 ?        00:00:00 [nfsd]
	root      240490       2  0 11:08 ?        00:00:00 [nfsd]
	root      240491       2  0 11:08 ?        00:00:00 [nfsd]
	root      240492       2  0 11:08 ?        00:00:00 [nfsd]
	root      240493       2  0 11:08 ?        00:00:00 [nfsd]
	root      240494       2  0 11:08 ?        00:00:00 [nfsd]
	root      240495       2  0 11:08 ?        00:00:00 [nfsd]
	root      240496       2  0 11:08 ?        00:00:00 [nfsd]
	root      240497       2  0 11:08 ?        00:00:00 [nfsd]
	root      240498       2  0 11:08 ?        00:00:00 [nfsd]
	root      240499       2  0 11:08 ?        00:00:00 [nfsd]
	root      240500       2  0 11:08 ?        00:00:00 [nfsd]
	root      240501       2  0 11:08 ?        00:00:00 [nfsd]
	root      240502       2  0 11:08 ?        00:00:00 [nfsd]
	root      240503       2  0 11:08 ?        00:00:00 [nfsd]
	root      240504       2  0 11:08 ?        00:00:00 [nfsd]
	root      240505       2  0 11:08 ?        00:00:00 [nfsd]
	root      240506       2  0 11:08 ?        00:00:00 [nfsd]
	root      240507       2  0 11:08 ?        00:00:00 [nfsd]
	root      240508       2  0 11:08 ?        00:00:00 [nfsd]
	root      240509       2  0 11:08 ?        00:00:00 [nfsd]
	root      240510       2  0 11:08 ?        00:00:00 [nfsd]
	root      240511       2  0 11:08 ?        00:00:00 [nfsd]
	root      240512       2  0 11:08 ?        00:00:00 [nfsd]
	root      240513       2  0 11:08 ?        00:00:00 [nfsd]
	root      240514       2  0 11:08 ?        00:00:00 [nfsd]
	root      240515       2  0 11:08 ?        00:00:00 [nfsd]
	root      240516       2  0 11:08 ?        00:00:00 [nfsd]
	root      240517       2  0 11:08 ?        00:00:00 [nfsd]
	root      240518       2  0 11:08 ?        00:00:00 [nfsd]
	root      240519       2  0 11:08 ?        00:00:00 [nfsd]
	root      240520       2  0 11:08 ?        00:00:00 [nfsd]
	root      240521       2  0 11:08 ?        00:00:00 [nfsd]
	root      240522       2  0 11:08 ?        00:00:00 [nfsd]
	root      240523       2  0 11:08 ?        00:00:00 [nfsd]
	root      240524       2  0 11:08 ?        00:00:00 [nfsd]
	root      240525       2  0 11:08 ?        00:00:00 [nfsd]
	root      240526       2  0 11:08 ?        00:00:00 [nfsd]
	root      240527       2  0 11:08 ?        00:00:00 [nfsd]
	root      240528       2  0 11:08 ?        00:00:00 [nfsd]
	root      240529       2  0 11:08 ?        00:00:00 [nfsd]
	root      240530       2  0 11:08 ?        00:00:00 [nfsd]
	root      240531       2  0 11:08 ?        00:00:00 [nfsd]
	root      240532       2  0 11:08 ?        00:00:00 [nfsd]
	root      240533       2  0 11:08 ?        00:00:00 [nfsd]
	root      240534       2  0 11:08 ?        00:00:00 [nfsd]
	root      240535       2  0 11:08 ?        00:00:00 [nfsd]
	root      240536       2  0 11:08 ?        00:00:00 [nfsd]
	root      240537       2  0 11:08 ?        00:00:00 [nfsd]
	root      240538       2  0 11:08 ?        00:00:00 [nfsd]
	root      240539       2  0 11:08 ?        00:00:00 [nfsd]
	root      240540       2  0 11:08 ?        00:00:00 [nfsd]
	root      240541       2  0 11:08 ?        00:00:00 [nfsd]
	root      240542       2  0 11:08 ?        00:00:00 [nfsd]
	root      240543       2  0 11:08 ?        00:00:00 [nfsd]
	root      240544       2  0 11:08 ?        00:00:00 [nfsd]
	root      240545       2  0 11:08 ?        00:00:00 [nfsd]
	root      240546       2  0 11:08 ?        00:00:00 [nfsd]
	root      240547       2  0 11:08 ?        00:00:00 [nfsd]
	root      240548       2  0 11:08 ?        00:00:00 [nfsd]
	root      240549       2  0 11:08 ?        00:00:00 [nfsd]
	root      240550       2  0 11:08 ?        00:00:00 [nfsd]
	root      240561  237828  0 11:08 pts/0    00:00:00 grep --color=auto nfs

● NFS 共有ストレージ作成

前回作成した LVM へ ファイルシステムを作成し、NFS用ディレクトリへマウントします。

1) LVM 確認

lvs コマンドを使って論理ボリュームを確認

[root@bm-e5-server ~]# lvscan
  ACTIVE            '/dev/ocivolume/oled' [10.00 GiB] inherit
  ACTIVE            '/dev/ocivolume/root' [35.50 GiB] inherit
  ACTIVE            '/dev/volgroup01/striped_logical_volume' [<14.65 TiB] inherit

2) ファイルシステム作成
ファイルシステムを striped_logical_volume 論理ボリューム上に作成

[root@bm-e5-server ~]# mkfs.xfs /dev/volgroup01/striped_logical_volume
meta-data=/dev/volgroup01/striped_logical_volume isize=512    agcount=15, agsize=268435455 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=3932149760, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.

3) Directory 作成と権限設定
ここでは、NFS共有ディレクトリを/nfs/export1として設定します。
ファイルの権限は、簡単にするために chmod -R 777を使用して、すべてのユーザーに対してローカル・ファイル権限を読取り/書込み/実行に設定します。これにより、クライアント・ユーザーのUID/GUIDがサーバーと一致せず、サーバーのnobodyアカウントがデフォルトで設定される、この演習での追加のNFS共有オプションの必要性が最小限になります。

[root@bm-e5-server ~] mkdir /nfs/export1
[root@bm-e5-server ~] chmod 2770 /nfs/export1
[root@bm-e5-server ~] chgrp opc /nfs/export1
[root@bm-e5-server ~] ls -la /nfs/export1
	total 0
	drwxrws---. 2 root opc   6 Sep  5 04:49 .
	drwxr-xr-x. 4 root root 31 Sep  5 04:49 ..

4) ファイルシステムをマウント

[root@bm-e5-server ~]# mount /dev/volgroup01/striped_logical_volume /nfs/export1

5) ファイルシステムをマウント確認

[root@bm-e5-server ~]# mount | grep export1
    /dev/mapper/volgroup01-striped_logical_volume on /nfs/export1 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)

[root@bm-e5-server ~]# df -hT | grep export1
    /dev/mapper/volgroup01-striped_logical_volume xfs        15T  105G   15T   1% /nfs/export1

3) NFS エクスポート設定
/etc/exportsで共有を定義します。

[root@bm-e5-server ~] vi /etc/exports
[root@bm-e5-server ~] cat /etc/exports
    /nfs/export1 *(rw,no_root_squash)

3) 設定反映と確認

[root@bm-e5-server ~] exportfs -ar
[root@bm-e5-server ~] exportfs -v
/nfs/export1  	<world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,no_root_squash,no_all_squash)

● NFS server 起動

1) nfs-serverステータス確認

[root@bm-e5-server ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

2) nfs-server 起動

[root@bm-e5-server ~]# systemctl start nfs-server.service

3) nfs-server 起動ステータス確認

[root@bm-e5-server ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Thu 2024-09-05 05:03:12 GMT; 5s ago
  Process: 10259 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (>
  Process: 10243 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  Process: 10240 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 10259 (code=exited, status=0/SUCCESS)

Sep 05 05:03:12 vm-optimized3 systemd[1]: Starting NFS server and services...
Sep 05 05:03:12 vm-optimized3 systemd[1]: Started NFS server and services.

4) nfs-server 起動ステータス確認
showmountコマンドは、NFSサーバーを使用して使用可能な共有を表示

[root@bm-e5-server ~]# showmount -e
    Export list for bm-e5:
    /nfs/export1 *

● NFS server 自動起動設定

[root@bm-e5-server ~]# systemctl enable --now nfs-server
	Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
[root@bm-e5-server ~]# systemctl is-enabled nfs-server
	enabled

● Firewalld 設定

NFSトラフィックを許可するようにファイアウォールを設定

[root@bm-e5-server ~] firewall-cmd --permanent --add-service nfs
	success
[root@bm-e5-server ~] firewall-cmd --reload
	success
[root@bm-e5-server ~]#  firewall-cmd --list-all | grep nfs
  services: dhcpv6-client nfs ssh vnc-server

■ NFS Client 設定

クライアント・インスタンスに接続し、NFSユーティリティーパッケージをインストール

⚫︎ nfs-utils インストール

1) Install the nfs-utils package:

[root@bm-e5-client ~]# dnf install nfs-utils
	Ksplice for Oracle Linux 8 (x86_64)                                                                                         46 MB/s | 8.6 MB     00:00
	MySQL 8.0 for Oracle Linux 8 (x86_64)                                                                                       67 MB/s | 4.0 MB     00:00
	MySQL 8.0 Tools Community for Oracle Linux 8 (x86_64)                                                                       19 MB/s | 805 kB     00:00
	MySQL 8.0 Connectors Community for Oracle Linux 8 (x86_64)                                                                 906 kB/s |  34 kB     00:00
	Oracle Software for OCI users on Oracle Linux 8 (x86_64)                                                                    75 MB/s | 151 MB     00:02
	Oracle Linux 8 BaseOS Latest (x86_64)                                                                                      185 MB/s |  79 MB     00:00
	Oracle Linux 8 Application Stream (x86_64)                                                                                 177 MB/s |  63 MB     00:00
	Oracle Linux 8 Addons (x86_64)                                                                                             140 MB/s |  19 MB     00:00
	Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)                                                 169 MB/s |  41 MB     00:00
	Package nfs-utils-1:2.3.3-59.0.1.el8.x86_64 is already installed.
	Dependencies resolved.
	Nothing to do.
	Complete!

⚫︎ NFS 共有ディレクトリ・マウント

BM.E5シェイプの 100Gbps読取りスループットを最大限に活用するために、Linuxカーネルバージョン5.3以降から使用できる nconnect=16 マウントオプションを使用します。
nconnect を使用すると、より少ないクライアント マシンを使用して大規模にパフォーマンスを向上させ、総保有コスト (TCO) を削減できます。 Nconnect は、単一または複数のクライアントを使用して、1 つまたは複数の NIC で複数の TCP チャネルを使用することで、パフォーマンスを向上させます。

1) NFSマウント・ディレクトリ作成

[root@bm-e5-client ~]# mkdir /mnt/nfs
[root@bm-e5-client ~]# ls -la /mnt/nfs/
 total 0
 drwxr-xr-x. 2 root root  6 Jan 28 06:54 .
 drwxr-xr-x. 3 root root 17 Jan 28 06:54 ..

2) NFSマウント

[root@bm-e5-client ~]# mount -t nfs -o rw,nconnect=16 10.10.1.133:/nfs/export1 /mnt/nfs

3) NFSマウント確認

[root@bm-e5-client ~]# mount | grep 10.10.0.22
	10.10.0.22:/nfs/export1 on /mnt/nfs type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,nconnect=16,timeo=600,retrans=2,sec=sys,clientaddr=10.10.0.23,local_lock=none,addr=10.10.0.22)

4) NFS マウント・ディレクトリ確認

[root@bm-e5-client ~]# df -hT | grep nfs
    10.10.0.22:/nfs/export1 nfs4       15T  4.9T  9.8T  34% /mnt/nfs

5) NFS マウント・プロセス確認
nconnect=16 マウントオプションでプロセスが16個起動していることを確認

[root@bm-e5-client ~]# netstat -an |grep 2049
    tcp        0      0 10.10.0.23:928          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:915          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:762          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:974          10.10.0.22:2049         TIME_WAIT
    tcp        0      0 10.10.0.23:963          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:926          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:1007         10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:861          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:745          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:777          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:958          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:933          10.10.0.22:2049         ESTABLISHED
    tcp        0      0 10.10.0.23:673          10.10.0.22:2049         ESTABLISHED

■ FIO コマンド使用して スループット・パフォーマンス・テスト

Linuxベース・インスタンスでブロック・ボリューム・パフォーマンス・テストを行うためのサンプルFIOコマンドを参照して FIOコマンドで IOPSとスループットのパフォーマンス・テストをします。
テストするには、次のFIOサンプル・コマンドを使用します。コマンドを直接実行することも、コマンドを使用してジョブ・ファイルを作成してからそのジョブ・ファイルを実行することもできます。

● 順次読取りのテスト

・順次読取りのテスト実行

データベース・ワークロードなど、順次アクセス・パターンを利用できるワークロードに対しては、順次読取りをテストすることにより、このパターンのパフォーマンスを確認できます。
順次読取りをテストするには、次のコマンドを実行します。
Client側 OSキャッシュを使用しない --direct=1 を使用します。
ただし、初回実行時は、NFS Server 側にキャッシュが無い状態なので純粋な測定値が出ます。
2回目以降は、NFS Server 側でキャッシュされたデータが使用されるためより高速な測定値が出ます。

- 1回目(Non Cache)

[root@bm-e5-client ~]# fio --name=read_throughput --directory=/mnt/nfs --size=10g --rw=read --bs=1m --numjobs=200 --iodepth=64 --ioengine=libaio --time_based --runtime=120 --direct=1 --group_reporting --eta-newline=1 --readonly
read_throughput: (g=0): rw=read, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=libaio, iodepth=64
...
fio-3.19
Starting 200 processes
Jobs: 200 (f=200): [R(200)][2.5%][r=4491MiB/s][r=4490 IOPS][eta 01m:58s]
Jobs: 200 (f=200): [R(200)][3.3%][r=4281MiB/s][r=4280 IOPS][eta 01m:57s]
Jobs: 200 (f=200): [R(200)][4.1%][r=4240MiB/s][r=4239 IOPS][eta 01m:56s]
Jobs: 200 (f=200): [R(200)][5.0%][r=4206MiB/s][r=4205 IOPS][eta 01m:55s]
Jobs: 200 (f=200): [R(200)][5.8%][r=4154MiB/s][r=4153 IOPS][eta 01m:54s]
Jobs: 200 (f=200): [R(200)][6.6%][r=4184MiB/s][r=4183 IOPS][eta 01m:53s]
Jobs: 200 (f=200): [R(200)][7.4%][r=4148MiB/s][r=4147 IOPS][eta 01m:52s]
Jobs: 200 (f=200): [R(200)][8.3%][r=3895MiB/s][r=3895 IOPS][eta 01m:51s]
Jobs: 200 (f=200): [R(200)][9.1%][r=4130MiB/s][r=4129 IOPS][eta 01m:50s]
Jobs: 200 (f=200): [R(200)][9.9%][r=3878MiB/s][r=3878 IOPS][eta 01m:49s]
Jobs: 200 (f=200): [R(200)][10.7%][r=4069MiB/s][r=4068 IOPS][eta 01m:48s]
Jobs: 200 (f=200): [R(200)][11.6%][r=4163MiB/s][r=4162 IOPS][eta 01m:47s]
Jobs: 200 (f=200): [R(200)][12.4%][r=4127MiB/s][r=4126 IOPS][eta 01m:46s]
Jobs: 200 (f=200): [R(200)][13.2%][r=4211MiB/s][r=4210 IOPS][eta 01m:45s]
Jobs: 200 (f=200): [R(200)][14.0%][r=4145MiB/s][r=4144 IOPS][eta 01m:44s]
Jobs: 200 (f=200): [R(200)][14.9%][r=4160MiB/s][r=4159 IOPS][eta 01m:43s]
Jobs: 200 (f=200): [R(200)][15.7%][r=4131MiB/s][r=4130 IOPS][eta 01m:42s]
Jobs: 200 (f=200): [R(200)][16.5%][r=4101MiB/s][r=4100 IOPS][eta 01m:41s]
Jobs: 200 (f=200): [R(200)][17.4%][r=4109MiB/s][r=4108 IOPS][eta 01m:40s]
Jobs: 200 (f=200): [R(200)][18.2%][r=4062MiB/s][r=4061 IOPS][eta 01m:39s]
Jobs: 200 (f=200): [R(200)][19.0%][r=4123MiB/s][r=4122 IOPS][eta 01m:38s]
Jobs: 200 (f=200): [R(200)][19.8%][r=4145MiB/s][r=4144 IOPS][eta 01m:37s]
Jobs: 200 (f=200): [R(200)][20.7%][r=4116MiB/s][r=4115 IOPS][eta 01m:36s]
Jobs: 200 (f=200): [R(200)][21.5%][r=4130MiB/s][r=4129 IOPS][eta 01m:35s]
Jobs: 200 (f=200): [R(200)][22.3%][r=4127MiB/s][r=4126 IOPS][eta 01m:34s]
Jobs: 200 (f=200): [R(200)][23.1%][r=3981MiB/s][r=3981 IOPS][eta 01m:33s]
Jobs: 200 (f=200): [R(200)][24.0%][r=4092MiB/s][r=4091 IOPS][eta 01m:32s]
Jobs: 200 (f=200): [R(200)][24.8%][r=4001MiB/s][r=4000 IOPS][eta 01m:31s]
Jobs: 200 (f=200): [R(200)][25.6%][r=4104MiB/s][r=4103 IOPS][eta 01m:30s]
Jobs: 200 (f=200): [R(200)][26.4%][r=4096MiB/s][r=4095 IOPS][eta 01m:29s]
Jobs: 200 (f=200): [R(200)][27.3%][r=4109MiB/s][r=4108 IOPS][eta 01m:28s]
Jobs: 200 (f=200): [R(200)][28.1%][r=4066MiB/s][r=4065 IOPS][eta 01m:27s]
Jobs: 200 (f=200): [R(200)][28.9%][r=4066MiB/s][r=4065 IOPS][eta 01m:26s]
Jobs: 200 (f=200): [R(200)][29.8%][r=4074MiB/s][r=4073 IOPS][eta 01m:25s]
Jobs: 200 (f=200): [R(200)][30.6%][r=4080MiB/s][r=4079 IOPS][eta 01m:24s]
Jobs: 200 (f=200): [R(200)][31.4%][r=4174MiB/s][r=4173 IOPS][eta 01m:23s]
Jobs: 200 (f=200): [R(200)][32.2%][r=4143MiB/s][r=4142 IOPS][eta 01m:22s]
Jobs: 200 (f=200): [R(200)][33.1%][r=4142MiB/s][r=4141 IOPS][eta 01m:21s]
Jobs: 200 (f=200): [R(200)][33.9%][r=4131MiB/s][r=4130 IOPS][eta 01m:20s]
Jobs: 200 (f=200): [R(200)][34.7%][r=4071MiB/s][r=4070 IOPS][eta 01m:19s]
Jobs: 200 (f=200): [R(200)][35.5%][r=4133MiB/s][r=4132 IOPS][eta 01m:18s]
Jobs: 200 (f=200): [R(200)][36.4%][r=4145MiB/s][r=4144 IOPS][eta 01m:17s]
Jobs: 200 (f=200): [R(200)][37.2%][r=4083MiB/s][r=4082 IOPS][eta 01m:16s]
Jobs: 200 (f=200): [R(200)][38.0%][r=4054MiB/s][r=4053 IOPS][eta 01m:15s]
Jobs: 200 (f=200): [R(200)][38.8%][r=4077MiB/s][r=4076 IOPS][eta 01m:14s]
Jobs: 200 (f=200): [R(200)][39.7%][r=4125MiB/s][r=4124 IOPS][eta 01m:13s]
Jobs: 200 (f=200): [R(200)][40.5%][r=4071MiB/s][r=4070 IOPS][eta 01m:12s]
Jobs: 200 (f=200): [R(200)][41.3%][r=4120MiB/s][r=4119 IOPS][eta 01m:11s]
Jobs: 200 (f=200): [R(200)][42.1%][r=4111MiB/s][r=4110 IOPS][eta 01m:10s]
Jobs: 200 (f=200): [R(200)][43.0%][r=4163MiB/s][r=4162 IOPS][eta 01m:09s]
Jobs: 200 (f=200): [R(200)][43.8%][r=3968MiB/s][r=3968 IOPS][eta 01m:08s]
Jobs: 200 (f=200): [R(200)][44.6%][r=4105MiB/s][r=4104 IOPS][eta 01m:07s]
Jobs: 200 (f=200): [R(200)][45.5%][r=3900MiB/s][r=3900 IOPS][eta 01m:06s]
Jobs: 200 (f=200): [R(200)][46.3%][r=3516MiB/s][r=3516 IOPS][eta 01m:05s]
Jobs: 200 (f=200): [R(200)][47.1%][r=3247MiB/s][r=3246 IOPS][eta 01m:04s]
Jobs: 200 (f=200): [R(200)][47.9%][r=3112MiB/s][r=3111 IOPS][eta 01m:03s]
Jobs: 200 (f=200): [R(200)][48.8%][r=3442MiB/s][r=3441 IOPS][eta 01m:02s]
Jobs: 200 (f=200): [R(200)][49.6%][r=3641MiB/s][r=3641 IOPS][eta 01m:01s]
Jobs: 200 (f=200): [R(200)][50.4%][r=3552MiB/s][r=3552 IOPS][eta 01m:00s]
Jobs: 200 (f=200): [R(200)][51.2%][r=3482MiB/s][r=3481 IOPS][eta 00m:59s]
Jobs: 200 (f=200): [R(200)][52.1%][r=3443MiB/s][r=3442 IOPS][eta 00m:58s]
Jobs: 200 (f=200): [R(200)][52.9%][r=3690MiB/s][r=3690 IOPS][eta 00m:57s]
Jobs: 200 (f=200): [R(200)][53.7%][r=3692MiB/s][r=3692 IOPS][eta 00m:56s]
Jobs: 200 (f=200): [R(200)][54.5%][r=3593MiB/s][r=3593 IOPS][eta 00m:55s]
Jobs: 200 (f=200): [R(200)][55.4%][r=3754MiB/s][r=3754 IOPS][eta 00m:54s]
Jobs: 200 (f=200): [R(200)][56.2%][r=3773MiB/s][r=3773 IOPS][eta 00m:53s]
Jobs: 200 (f=200): [R(200)][57.0%][r=3722MiB/s][r=3722 IOPS][eta 00m:52s]
Jobs: 200 (f=200): [R(200)][57.9%][r=3845MiB/s][r=3845 IOPS][eta 00m:51s]
Jobs: 200 (f=200): [R(200)][58.7%][r=3798MiB/s][r=3798 IOPS][eta 00m:50s]
Jobs: 200 (f=200): [R(200)][59.5%][r=3578MiB/s][r=3578 IOPS][eta 00m:49s]
Jobs: 200 (f=200): [R(200)][60.3%][r=3750MiB/s][r=3750 IOPS][eta 00m:48s]
Jobs: 200 (f=200): [R(200)][61.2%][r=3702MiB/s][r=3702 IOPS][eta 00m:47s]
Jobs: 200 (f=200): [R(200)][62.0%][r=3621MiB/s][r=3621 IOPS][eta 00m:46s]
Jobs: 200 (f=200): [R(200)][62.8%][r=3917MiB/s][r=3917 IOPS][eta 00m:45s]
Jobs: 200 (f=200): [R(200)][63.6%][r=3931MiB/s][r=3931 IOPS][eta 00m:44s]
Jobs: 200 (f=200): [R(200)][64.5%][r=3992MiB/s][r=3992 IOPS][eta 00m:43s]
Jobs: 200 (f=200): [R(200)][65.3%][r=4027MiB/s][r=4026 IOPS][eta 00m:42s]
Jobs: 200 (f=200): [R(200)][66.1%][r=4075MiB/s][r=4074 IOPS][eta 00m:41s]
Jobs: 200 (f=200): [R(200)][66.9%][r=4141MiB/s][r=4140 IOPS][eta 00m:40s]
Jobs: 200 (f=200): [R(200)][67.8%][r=4169MiB/s][r=4168 IOPS][eta 00m:39s]
Jobs: 200 (f=200): [R(200)][68.6%][r=4183MiB/s][r=4182 IOPS][eta 00m:38s]
Jobs: 200 (f=200): [R(200)][69.4%][r=4132MiB/s][r=4131 IOPS][eta 00m:37s]
Jobs: 200 (f=200): [R(200)][70.2%][r=4078MiB/s][r=4077 IOPS][eta 00m:36s]
Jobs: 200 (f=200): [R(200)][71.1%][r=4186MiB/s][r=4185 IOPS][eta 00m:35s]
Jobs: 200 (f=200): [R(200)][71.9%][r=4174MiB/s][r=4173 IOPS][eta 00m:34s]
Jobs: 200 (f=200): [R(200)][72.7%][r=4124MiB/s][r=4123 IOPS][eta 00m:33s]
Jobs: 200 (f=200): [R(200)][73.6%][r=3995MiB/s][r=3995 IOPS][eta 00m:32s]
Jobs: 200 (f=200): [R(200)][74.4%][r=3978MiB/s][r=3978 IOPS][eta 00m:31s]
Jobs: 200 (f=200): [R(200)][75.2%][r=4106MiB/s][r=4105 IOPS][eta 00m:30s]
Jobs: 200 (f=200): [R(200)][76.0%][r=4118MiB/s][r=4117 IOPS][eta 00m:29s]
Jobs: 200 (f=200): [R(200)][76.9%][r=4149MiB/s][r=4148 IOPS][eta 00m:28s]
Jobs: 200 (f=200): [R(200)][77.7%][r=4099MiB/s][r=4098 IOPS][eta 00m:27s]
Jobs: 200 (f=200): [R(200)][78.5%][r=4089MiB/s][r=4088 IOPS][eta 00m:26s]
Jobs: 200 (f=200): [R(200)][79.3%][r=3984MiB/s][r=3984 IOPS][eta 00m:25s]
Jobs: 200 (f=200): [R(200)][80.2%][r=4090MiB/s][r=4089 IOPS][eta 00m:24s]
Jobs: 200 (f=200): [R(200)][81.0%][r=4143MiB/s][r=4142 IOPS][eta 00m:23s]
Jobs: 200 (f=200): [R(200)][81.8%][r=4131MiB/s][r=4130 IOPS][eta 00m:22s]
Jobs: 200 (f=200): [R(200)][82.6%][r=4109MiB/s][r=4108 IOPS][eta 00m:21s]
Jobs: 200 (f=200): [R(200)][83.5%][r=4112MiB/s][r=4111 IOPS][eta 00m:20s]
Jobs: 200 (f=200): [R(200)][84.3%][r=4082MiB/s][r=4081 IOPS][eta 00m:19s]
Jobs: 200 (f=200): [R(200)][85.1%][r=4134MiB/s][r=4133 IOPS][eta 00m:18s]
Jobs: 200 (f=200): [R(200)][86.0%][r=4061MiB/s][r=4060 IOPS][eta 00m:17s]
Jobs: 200 (f=200): [R(200)][86.8%][r=3959MiB/s][r=3959 IOPS][eta 00m:16s]
Jobs: 200 (f=200): [R(200)][87.6%][r=3902MiB/s][r=3902 IOPS][eta 00m:15s]
Jobs: 200 (f=200): [R(200)][88.4%][r=3949MiB/s][r=3949 IOPS][eta 00m:14s]
Jobs: 200 (f=200): [R(200)][89.3%][r=4132MiB/s][r=4131 IOPS][eta 00m:13s]
Jobs: 200 (f=200): [R(200)][90.1%][r=4100MiB/s][r=4099 IOPS][eta 00m:12s]
Jobs: 200 (f=200): [R(200)][90.9%][r=4069MiB/s][r=4068 IOPS][eta 00m:11s]
Jobs: 200 (f=200): [R(200)][91.7%][r=4091MiB/s][r=4090 IOPS][eta 00m:10s]
Jobs: 200 (f=200): [R(200)][92.6%][r=4056MiB/s][r=4055 IOPS][eta 00m:09s]
Jobs: 200 (f=200): [R(200)][93.4%][r=4198MiB/s][r=4197 IOPS][eta 00m:08s]
Jobs: 200 (f=200): [R(200)][94.2%][r=4126MiB/s][r=4125 IOPS][eta 00m:07s]
Jobs: 200 (f=200): [R(200)][95.0%][r=4134MiB/s][r=4133 IOPS][eta 00m:06s]
Jobs: 200 (f=200): [R(200)][95.9%][r=4157MiB/s][r=4156 IOPS][eta 00m:05s]
Jobs: 200 (f=200): [R(200)][96.7%][r=4180MiB/s][r=4179 IOPS][eta 00m:04s]
Jobs: 200 (f=200): [R(200)][97.5%][r=4160MiB/s][r=4159 IOPS][eta 00m:03s]
Jobs: 200 (f=200): [R(200)][98.3%][r=4099MiB/s][r=4098 IOPS][eta 00m:02s]
Jobs: 200 (f=200): [R(200)][99.2%][r=4121MiB/s][r=4120 IOPS][eta 00m:01s]
Jobs: 200 (f=200): [R(200)][100.0%][r=4121MiB/s][r=4120 IOPS][eta 00m:00s]
Jobs: 200 (f=200): [R(200)][23.7%][r=386MiB/s][r=385 IOPS][eta 06m:33s]
Jobs: 200 (f=200): [R(200)][23.7%][eta 06m:36s]
Jobs: 200 (f=200): [R(200)][23.7%][eta 06m:39s]
read_throughput: (groupid=0, jobs=200): err= 0: pid=13728: Wed Jan 29 06:20:28 2025
  read: IOPS=4017, BW=4017MiB/s (4213MB/s)(483GiB/123113msec)
    slat (usec): min=56, max=3338, avg=90.15, stdev=85.74
    clat (msec): min=14, max=6128, avg=3182.36, stdev=436.99
     lat (msec): min=14, max=6129, avg=3182.45, stdev=436.95
    clat percentiles (msec):
     |  1.00th=[ 1133],  5.00th=[ 3037], 10.00th=[ 3071], 20.00th=[ 3104],
     | 30.00th=[ 3104], 40.00th=[ 3104], 50.00th=[ 3138], 60.00th=[ 3138],
     | 70.00th=[ 3171], 80.00th=[ 3239], 90.00th=[ 3473], 95.00th=[ 3675],
     | 99.00th=[ 4933], 99.50th=[ 5537], 99.90th=[ 6007], 99.95th=[ 6074],
     | 99.99th=[ 6074]
   bw (  MiB/s): min= 2796, max= 4720, per=99.95%, avg=4015.46, stdev= 1.50, samples=48000
   iops        : min= 2796, max= 4718, avg=4012.52, stdev= 1.50, samples=48000
  lat (msec)   : 20=0.01%, 50=0.01%, 100=0.04%, 250=0.12%, 500=0.24%
  lat (msec)   : 750=0.24%, 1000=0.24%, 2000=0.90%, >=2000=98.21%
  cpu          : usr=0.01%, sys=0.19%, ctx=499327, majf=6, minf=111583
  IO depths    : 1=0.1%, 2=0.1%, 4=0.2%, 8=0.3%, 16=0.6%, 32=1.3%, >=64=97.5%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=494590,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=4017MiB/s (4213MB/s), 4017MiB/s-4017MiB/s (4213MB/s-4213MB/s), io=483GiB (519GB), run=123113-123113msec

- 2回目(Cached)

[root@bm-e5-client ~]# fio --name=read_throughput --directory=/mnt/nfs --size=10g --rw=read --bs=1m --numjobs=200 --iodepth=64 --ioengine=libaio --time_based --runtime=120 --direct=1 --group_reporting --eta-newline=1 --readonly
read_throughput: (g=0): rw=read, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=libaio, iodepth=64
...
fio-3.19
Starting 200 processes
Jobs: 200 (f=200): [R(200)][2.5%][r=8061MiB/s][r=8060 IOPS][eta 01m:58s]
Jobs: 200 (f=200): [R(200)][3.3%][r=8785MiB/s][r=8785 IOPS][eta 01m:57s]
Jobs: 200 (f=200): [R(200)][4.1%][r=8920MiB/s][r=8920 IOPS][eta 01m:56s]
Jobs: 200 (f=200): [R(200)][5.0%][r=10.5GiB/s][r=10.8k IOPS][eta 01m:55s]
Jobs: 200 (f=200): [R(200)][5.8%][r=10.2GiB/s][r=10.4k IOPS][eta 01m:54s]
Jobs: 200 (f=200): [R(200)][6.6%][r=10.0GiB/s][r=10.3k IOPS][eta 01m:53s]
Jobs: 200 (f=200): [R(200)][7.4%][r=10.3GiB/s][r=10.6k IOPS][eta 01m:52s]
Jobs: 200 (f=200): [R(200)][8.3%][r=9387MiB/s][r=9386 IOPS][eta 01m:51s]
Jobs: 200 (f=200): [R(200)][9.1%][r=8875MiB/s][r=8875 IOPS][eta 01m:50s]
Jobs: 200 (f=200): [R(200)][9.9%][r=8955MiB/s][r=8955 IOPS][eta 01m:49s]
Jobs: 200 (f=200): [R(200)][10.7%][r=9612MiB/s][r=9612 IOPS][eta 01m:48s]
Jobs: 200 (f=200): [R(200)][11.6%][r=9177MiB/s][r=9176 IOPS][eta 01m:47s]
Jobs: 200 (f=200): [R(200)][12.4%][r=8584MiB/s][r=8584 IOPS][eta 01m:46s]
Jobs: 200 (f=200): [R(200)][13.2%][r=9551MiB/s][r=9551 IOPS][eta 01m:45s]
Jobs: 200 (f=200): [R(200)][14.0%][r=8527MiB/s][r=8527 IOPS][eta 01m:44s]
Jobs: 200 (f=200): [R(200)][14.9%][r=9497MiB/s][r=9496 IOPS][eta 01m:43s]
Jobs: 200 (f=200): [R(200)][15.7%][r=9113MiB/s][r=9112 IOPS][eta 01m:42s]
Jobs: 200 (f=200): [R(200)][16.5%][r=8266MiB/s][r=8265 IOPS][eta 01m:41s]
Jobs: 200 (f=200): [R(200)][17.4%][r=9828MiB/s][r=9828 IOPS][eta 01m:40s]
Jobs: 200 (f=200): [R(200)][18.2%][r=8698MiB/s][r=8698 IOPS][eta 01m:39s]
Jobs: 200 (f=200): [R(200)][19.0%][r=9049MiB/s][r=9048 IOPS][eta 01m:38s]
Jobs: 200 (f=200): [R(200)][19.8%][r=8784MiB/s][r=8784 IOPS][eta 01m:37s]
Jobs: 200 (f=200): [R(200)][20.7%][r=9796MiB/s][r=9796 IOPS][eta 01m:36s]
Jobs: 200 (f=200): [R(200)][21.5%][r=7888MiB/s][r=7888 IOPS][eta 01m:35s]
Jobs: 200 (f=200): [R(200)][22.3%][r=10.1GiB/s][r=10.4k IOPS][eta 01m:34s]
Jobs: 200 (f=200): [R(200)][23.1%][r=8623MiB/s][r=8623 IOPS][eta 01m:33s]
Jobs: 200 (f=200): [R(200)][24.0%][r=10.2GiB/s][r=10.5k IOPS][eta 01m:32s]
Jobs: 200 (f=200): [R(200)][24.8%][r=9838MiB/s][r=9838 IOPS][eta 01m:31s]
Jobs: 200 (f=200): [R(200)][25.6%][r=10.8GiB/s][r=11.0k IOPS][eta 01m:30s]
Jobs: 200 (f=200): [R(200)][26.4%][r=9587MiB/s][r=9587 IOPS][eta 01m:29s]
Jobs: 200 (f=200): [R(200)][27.3%][r=9201MiB/s][r=9200 IOPS][eta 01m:28s]
Jobs: 200 (f=200): [R(200)][28.1%][r=8385MiB/s][r=8384 IOPS][eta 01m:27s]
Jobs: 200 (f=200): [R(200)][28.9%][r=8936MiB/s][r=8936 IOPS][eta 01m:26s]
Jobs: 200 (f=200): [R(200)][29.8%][r=8193MiB/s][r=8192 IOPS][eta 01m:25s]
Jobs: 200 (f=200): [R(200)][30.6%][r=9583MiB/s][r=9583 IOPS][eta 01m:24s]
Jobs: 200 (f=200): [R(200)][31.4%][r=9779MiB/s][r=9779 IOPS][eta 01m:23s]
Jobs: 200 (f=200): [R(200)][32.2%][r=9424MiB/s][r=9423 IOPS][eta 01m:22s]
Jobs: 200 (f=200): [R(200)][33.1%][r=9221MiB/s][r=9220 IOPS][eta 01m:21s]
Jobs: 200 (f=200): [R(200)][33.9%][r=9772MiB/s][r=9772 IOPS][eta 01m:20s]
Jobs: 200 (f=200): [R(200)][34.7%][r=7570MiB/s][r=7570 IOPS][eta 01m:19s]
Jobs: 200 (f=200): [R(200)][35.5%][r=8686MiB/s][r=8686 IOPS][eta 01m:18s]
Jobs: 200 (f=200): [R(200)][36.4%][r=9591MiB/s][r=9591 IOPS][eta 01m:17s]
Jobs: 200 (f=200): [R(200)][37.2%][r=9597MiB/s][r=9597 IOPS][eta 01m:16s]
Jobs: 200 (f=200): [R(200)][38.0%][r=9327MiB/s][r=9326 IOPS][eta 01m:15s]
Jobs: 200 (f=200): [R(200)][38.8%][r=9229MiB/s][r=9228 IOPS][eta 01m:14s]
Jobs: 200 (f=200): [R(200)][39.7%][r=8392MiB/s][r=8391 IOPS][eta 01m:13s]
Jobs: 200 (f=200): [R(200)][40.5%][r=8716MiB/s][r=8716 IOPS][eta 01m:12s]
Jobs: 200 (f=200): [R(200)][41.3%][r=10.4GiB/s][r=10.7k IOPS][eta 01m:11s]
Jobs: 200 (f=200): [R(200)][42.1%][r=9.82GiB/s][r=10.1k IOPS][eta 01m:10s]
Jobs: 200 (f=200): [R(200)][43.0%][r=10.1GiB/s][r=10.4k IOPS][eta 01m:09s]
Jobs: 200 (f=200): [R(200)][43.8%][r=9446MiB/s][r=9445 IOPS][eta 01m:08s]
Jobs: 200 (f=200): [R(200)][44.6%][r=9155MiB/s][r=9154 IOPS][eta 01m:07s]
Jobs: 200 (f=200): [R(200)][45.5%][r=8840MiB/s][r=8840 IOPS][eta 01m:06s]
Jobs: 200 (f=200): [R(200)][46.3%][r=8911MiB/s][r=8911 IOPS][eta 01m:05s]
Jobs: 200 (f=200): [R(200)][47.1%][r=8457MiB/s][r=8456 IOPS][eta 01m:04s]
Jobs: 200 (f=200): [R(200)][47.9%][r=9334MiB/s][r=9333 IOPS][eta 01m:03s]
Jobs: 200 (f=200): [R(200)][48.8%][r=8777MiB/s][r=8777 IOPS][eta 01m:02s]
Jobs: 200 (f=200): [R(200)][49.6%][r=8082MiB/s][r=8081 IOPS][eta 01m:01s]
Jobs: 200 (f=200): [R(200)][50.4%][r=10.2GiB/s][r=10.4k IOPS][eta 01m:00s]
Jobs: 200 (f=200): [R(200)][51.2%][r=11.0GiB/s][r=11.3k IOPS][eta 00m:59s]
Jobs: 200 (f=200): [R(200)][52.1%][r=8522MiB/s][r=8522 IOPS][eta 00m:58s]
Jobs: 200 (f=200): [R(200)][52.9%][r=8892MiB/s][r=8892 IOPS][eta 00m:57s]
Jobs: 200 (f=200): [R(200)][53.7%][r=7874MiB/s][r=7874 IOPS][eta 00m:56s]
Jobs: 200 (f=200): [R(200)][54.5%][r=9.85GiB/s][r=10.1k IOPS][eta 00m:55s]
Jobs: 200 (f=200): [R(200)][55.4%][r=9958MiB/s][r=9958 IOPS][eta 00m:54s]
Jobs: 200 (f=200): [R(200)][56.2%][r=7622MiB/s][r=7622 IOPS][eta 00m:53s]
Jobs: 200 (f=200): [R(200)][57.0%][r=7918MiB/s][r=7918 IOPS][eta 00m:52s]
Jobs: 200 (f=200): [R(200)][57.9%][r=9118MiB/s][r=9117 IOPS][eta 00m:51s]
Jobs: 200 (f=200): [R(200)][58.7%][r=9053MiB/s][r=9052 IOPS][eta 00m:50s]
Jobs: 200 (f=200): [R(200)][59.5%][r=9300MiB/s][r=9299 IOPS][eta 00m:49s]
Jobs: 200 (f=200): [R(200)][60.3%][r=8864MiB/s][r=8864 IOPS][eta 00m:48s]
Jobs: 200 (f=200): [R(200)][61.2%][r=9.81GiB/s][r=10.0k IOPS][eta 00m:47s]
Jobs: 200 (f=200): [R(200)][62.0%][r=9528MiB/s][r=9528 IOPS][eta 00m:46s]
Jobs: 200 (f=200): [R(200)][62.8%][r=9506MiB/s][r=9506 IOPS][eta 00m:45s]
Jobs: 200 (f=200): [R(200)][63.6%][r=11.3GiB/s][r=11.6k IOPS][eta 00m:44s]
Jobs: 200 (f=200): [R(200)][64.5%][r=8846MiB/s][r=8846 IOPS][eta 00m:43s]
Jobs: 200 (f=200): [R(200)][65.3%][r=9292MiB/s][r=9291 IOPS][eta 00m:42s]
Jobs: 200 (f=200): [R(200)][66.1%][r=8727MiB/s][r=8727 IOPS][eta 00m:41s]
Jobs: 200 (f=200): [R(200)][66.9%][r=10.4GiB/s][r=10.7k IOPS][eta 00m:40s]
Jobs: 200 (f=200): [R(200)][67.8%][r=10.7GiB/s][r=10.9k IOPS][eta 00m:39s]
Jobs: 200 (f=200): [R(200)][68.6%][r=10.8GiB/s][r=11.1k IOPS][eta 00m:38s]
Jobs: 200 (f=200): [R(200)][69.4%][r=10.5GiB/s][r=10.8k IOPS][eta 00m:37s]
Jobs: 200 (f=200): [R(200)][70.2%][r=8535MiB/s][r=8535 IOPS][eta 00m:36s]
Jobs: 200 (f=200): [R(200)][71.1%][r=9654MiB/s][r=9654 IOPS][eta 00m:35s]
Jobs: 200 (f=200): [R(200)][71.9%][r=10.5GiB/s][r=10.7k IOPS][eta 00m:34s]
Jobs: 200 (f=200): [R(200)][72.7%][r=8782MiB/s][r=8782 IOPS][eta 00m:33s]
Jobs: 200 (f=200): [R(200)][73.6%][r=8771MiB/s][r=8771 IOPS][eta 00m:32s]
Jobs: 200 (f=200): [R(200)][74.4%][r=9072MiB/s][r=9071 IOPS][eta 00m:31s]
Jobs: 200 (f=200): [R(200)][75.2%][r=9973MiB/s][r=9973 IOPS][eta 00m:30s]
Jobs: 200 (f=200): [R(200)][76.0%][r=11.2GiB/s][r=11.5k IOPS][eta 00m:29s]
Jobs: 200 (f=200): [R(200)][76.9%][r=9517MiB/s][r=9517 IOPS][eta 00m:28s]
Jobs: 200 (f=200): [R(200)][77.7%][r=10.8GiB/s][r=11.0k IOPS][eta 00m:27s]
Jobs: 200 (f=200): [R(200)][78.5%][r=9889MiB/s][r=9889 IOPS][eta 00m:26s]
Jobs: 200 (f=200): [R(200)][79.3%][r=8993MiB/s][r=8993 IOPS][eta 00m:25s]
Jobs: 200 (f=200): [R(200)][80.2%][r=9453MiB/s][r=9452 IOPS][eta 00m:24s]
Jobs: 200 (f=200): [R(200)][81.0%][r=7805MiB/s][r=7805 IOPS][eta 00m:23s]
Jobs: 200 (f=200): [R(200)][81.8%][r=9.95GiB/s][r=10.2k IOPS][eta 00m:22s]
Jobs: 200 (f=200): [R(200)][82.6%][r=10.1GiB/s][r=10.4k IOPS][eta 00m:21s]
Jobs: 200 (f=200): [R(200)][83.5%][r=4258MiB/s][r=4257 IOPS][eta 00m:20s]
Jobs: 200 (f=200): [R(200)][84.3%][r=4267MiB/s][r=4266 IOPS][eta 00m:19s]
Jobs: 200 (f=200): [R(200)][85.1%][r=4225MiB/s][r=4224 IOPS][eta 00m:18s]
Jobs: 200 (f=200): [R(200)][86.0%][r=4184MiB/s][r=4183 IOPS][eta 00m:17s]
Jobs: 200 (f=200): [R(200)][86.8%][r=4166MiB/s][r=4165 IOPS][eta 00m:16s]
Jobs: 200 (f=200): [R(200)][87.6%][r=4162MiB/s][r=4161 IOPS][eta 00m:15s]
Jobs: 200 (f=200): [R(200)][88.4%][r=4104MiB/s][r=4103 IOPS][eta 00m:14s]
Jobs: 200 (f=200): [R(200)][89.3%][r=4026MiB/s][r=4025 IOPS][eta 00m:13s]
Jobs: 200 (f=200): [R(200)][90.1%][r=4196MiB/s][r=4195 IOPS][eta 00m:12s]
Jobs: 200 (f=200): [R(200)][90.9%][r=4208MiB/s][r=4207 IOPS][eta 00m:11s]
Jobs: 200 (f=200): [R(200)][91.7%][r=4143MiB/s][r=4142 IOPS][eta 00m:10s]
Jobs: 200 (f=200): [R(200)][92.6%][r=4119MiB/s][r=4118 IOPS][eta 00m:09s]
Jobs: 200 (f=200): [R(200)][93.4%][r=4204MiB/s][r=4203 IOPS][eta 00m:08s]
Jobs: 200 (f=200): [R(200)][94.2%][r=4141MiB/s][r=4140 IOPS][eta 00m:07s]
Jobs: 200 (f=200): [R(200)][95.0%][r=4171MiB/s][r=4170 IOPS][eta 00m:06s]
Jobs: 200 (f=200): [R(200)][95.9%][r=4217MiB/s][r=4216 IOPS][eta 00m:05s]
Jobs: 200 (f=200): [R(200)][96.7%][r=4133MiB/s][r=4132 IOPS][eta 00m:04s]
Jobs: 200 (f=200): [R(200)][97.5%][r=4140MiB/s][r=4139 IOPS][eta 00m:03s]
Jobs: 200 (f=200): [R(200)][98.3%][r=4186MiB/s][r=4185 IOPS][eta 00m:02s]
Jobs: 200 (f=200): [R(200)][99.2%][r=4209MiB/s][r=4208 IOPS][eta 00m:01s]
Jobs: 200 (f=200): [R(200)][100.0%][r=4211MiB/s][r=4210 IOPS][eta 00m:00s]
Jobs: 200 (f=200): [R(200)][50.0%][r=322MiB/s][r=321 IOPS][eta 02m:02s]
Jobs: 200 (f=200): [R(200)][50.0%][eta 02m:03s]
Jobs: 200 (f=200): [R(200)][50.0%][eta 02m:04s]
read_throughput: (groupid=0, jobs=200): err= 0: pid=16892: Wed Jan 29 06:40:26 2025
  read: IOPS=8363, BW=8364MiB/s (8770MB/s)(1005GiB/123088msec)
    slat (usec): min=56, max=14594, avg=92.13, stdev=86.18
    clat (msec): min=9, max=6045, avg=1529.04, stdev=591.74
     lat (msec): min=10, max=6045, avg=1529.14, stdev=591.73
    clat percentiles (msec):
     |  1.00th=[ 1083],  5.00th=[ 1167], 10.00th=[ 1200], 20.00th=[ 1267],
     | 30.00th=[ 1301], 40.00th=[ 1351], 50.00th=[ 1385], 60.00th=[ 1418],
     | 70.00th=[ 1452], 80.00th=[ 1502], 90.00th=[ 1636], 95.00th=[ 3071],
     | 99.00th=[ 3608], 99.50th=[ 4866], 99.90th=[ 5805], 99.95th=[ 5940],
     | 99.99th=[ 6074]
   bw (  MiB/s): min= 2770, max=11950, per=100.00%, avg=8472.20, stdev=11.44, samples=48000
   iops        : min= 2770, max=11950, avg=8471.71, stdev=11.44, samples=48000
  lat (msec)   : 10=0.01%, 50=0.01%, 100=0.03%, 250=0.11%, 500=0.29%
  lat (msec)   : 750=0.21%, 1000=0.19%, 2000=89.94%, >=2000=9.23%
  cpu          : usr=0.02%, sys=0.41%, ctx=1037454, majf=2, minf=111844
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.2%, 16=0.3%, 32=0.6%, >=64=98.8%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=1029474,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=8364MiB/s (8770MB/s), 8364MiB/s-8364MiB/s (8770MB/s-8770MB/s), io=1005GiB (1079GB), run=123088-123088msec

・順次読取りのテスト結果

  • 1回目の NFS Server で Cache されてない状態のスループット・パフォーマンスは、次の bw 行を見ると、max= 4720 (MiB/s) = 39.594 Gbps であることを確認できます。
bw行
   bw (  MiB/s): min= 2796, max= 4720, per=99.95%, avg=4015.46, stdev= 1.50, samples=48000
  • 2回目の NFS Server で Cache された、スループット・パフォーマンスは、次の bw 行を見ると、max= 11950 (MiB/s) = 100.243 Gbps であることを確認できます。
bw行
   bw (  MiB/s): min= 2770, max=11950, per=100.00%, avg=8472.20, stdev=11.44, samples=48000

■ 参考

 ・ Oracle LinuxでのNFSサーバーの作成
 ・ Sample FIO Commands for Block Volume Performance Tests on Linux-based Instances
 ・ fio - Flexible I/O tester
 ・ Package nfs-utils
 ・ nconnectを使用してNFSのパフォーマンスを簡単に向上させる
 ・ NFS スレッド数の設定

17
6
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
17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?