Oracle Cloud Infrastructure (OCI) Compute BM.Standard.E5 で超高パフォーマンス・ボリューム(UHP)のストレージを使用して  I/Oスループットが 100Gbpsでることを前回確認しました。
今回このコンピュートを2つ用意して NFSサーバー/クライアントをインストールおよび構成して fio で NFS I/Oスループット測定してみてみます。
■ 構成図
■ 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とスループットのパフォーマンス・テストをします。
● 順次読取りのテスト
・順次読取りのテスト実行
データベース・ワークロードなど、順次アクセス・パターンを利用できるワークロードに対しては、順次読取りをテストすることにより、このパターンのパフォーマンスを確認できます。
順次読取りをテストするには、次のコマンドを実行します。
OSキャッシュを使用しない --direct=1 を使用します。
[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
・順次読取りのテスト結果
スループット・パフォーマンスは、次の bw 行を見ると、max= 11950 (MiB/s) = 100.243 Gbps であることを確認できます。
   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 スレッド数の設定

