Linuxベース・インスタンスでブロック・ボリューム・パフォーマンス・テストを行うためのサンプルFIOコマンド
このトピックでは、Linuxベース・イメージから作成されたインスタンスに対してOracle Cloud Infrastructure Block Volumeサービスのパフォーマンス・テストを実行するために使用できるサンプルFIOコマンドについて説明します。
FIOのインストール
Linuxベース・オペレーティング・システムでインスタンスにFIOをインストールして構成するには、オペレーティング・システム・バージョンに適用可能なコマンドをインスタンスに対して実行します。
Oracle LinuxまたはCentOSシステムにFIOをインストールして構成するには、次のコマンドを実行します
- Oracle Autonomous Linux 8.x、Oracle Linux 8.xおよびOracle Linux Cloud Developer 8:
sudo dnf install fio -y
- Oracle Autonomous Linux 7.x、Oracle Linux 6.x、Oracle Linux 7.x、CentOS 7およびCentOS Stream 8:
sudo yum install fio -y
UbuntuシステムにFIOをインストールして構成するには、次のコマンドを実行します:
sudo apt-get update && sudo apt-get install fio -y
これは、Ubuntu 20.04、Ubuntu 18.04およびUbuntu Minimal 18.04に適用されます。
FIOコマンド
IOPSパフォーマンス・テスト
IOPSパフォーマンスをテストするには、次のFIOサンプル・コマンドを使用します。コマンドを直接実行することも、コマンドを使用してジョブ・ファイルを作成してからそのジョブ・ファイルを実行することもできます。
ランダム読取りをテストするには、次のコマンドを直接実行します:
sudo fio --filename=device name --direct=1 --rw=randread --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1 --readonly
コマンドを直接実行せずにジョブ・ファイルを使用したほうが、結果の一貫性が高くなる場合もあります。このアプローチには次のステップを使用します。
-
次のようなジョブ・ファイル(fiorandomread.fio)を作成します:
[global] bs=4K iodepth=256 direct=1 ioengine=libaio group_reporting time_based runtime=120 numjobs=4 name=raw-randread rw=randread [job1] filename=device name
-
次のコマンドを使用してジョブを実行します:
fio randomread.fio
ファイルの読取り/書込みをテストするには、マウント・ポイントに対して次のコマンドを実行します:
sudo fio --filename=/custom mount point/file --size=500GB --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1
返された読取りIOPSと書込みIOPSの両方を追加します。
書込みワークロード(
readwrite
、randrw
、write
、trimwrite
)を使用するFIOテストを、使用中のデバイスに対して直接実行しないでください。 ランダム読取り/書込みをテストするには、次のコマンドを実行します:
sudo fio --filename=device name --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1
返された読取りIOPSと書込みIOPSの両方を追加します。
コマンドを直接実行せずにジョブ・ファイルを使用したほうが、結果の一貫性が高くなる場合もあります。このアプローチには次のステップを使用します。
-
次のようなジョブ・ファイル(fiorandomreadwrite.fio)を作成します:
[global] bs=4K iodepth=256 direct=1 ioengine=libaio group_reporting time_based runtime=120 numjobs=4 name=raw-randreadwrite rw=randrw [job1] filename=device name
-
次のコマンドを使用してジョブを実行します:
fio randomreadwrite.fio
データベース・ワークロードなど、順次アクセス・パターンを利用できるワークロードに対しては、順次読取りをテストすることにより、このパターンのパフォーマンスを確認できます。
順次読取りをテストするには、次のコマンドを実行します:
sudo fio --filename=device name --direct=1 --rw=read --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1 --readonly
コマンドを直接実行せずにジョブ・ファイルを使用したほうが、結果の一貫性が高くなる場合もあります。このアプローチには次の手順を使用します:
-
次のようなジョブ・ファイル(fioread.fio)を作成します:
[global] bs=4K iodepth=256 direct=1 ioengine=libaio group_reporting time_based runtime=120 numjobs=4 name=raw-read rw=read [job1] filename=device name
-
次のコマンドを使用してジョブを実行します:
fio read.fio
スループット・パフォーマンス・テスト
スループット・パフォーマンスをテストするには、次のFIOサンプル・コマンドを使用します。
ランダム読取りをテストするには、次のコマンドを実行します:
sudo fio --filename=device name --direct=1 --rw=randread --bs=256k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=throughput-test-job --eta-newline=1 --readonly
コマンドを直接実行せずにジョブ・ファイルを使用したほうが、結果の一貫性が高くなる場合もあります。このアプローチには次のステップを使用します。
-
次のようなジョブ・ファイル(fiorandomread.fio)を作成します:
[global] bs=256K iodepth=64 direct=1 ioengine=libaio group_reporting time_based runtime=120 numjobs=4 name=raw-randread rw=randread [job1] filename=device name
-
次のコマンドを使用してジョブを実行します:
fio randomread.fio
ファイルの読取り/書込みをテストするには、マウント・ポイントに対して次のコマンドを実行します:
sudo fio --filename=/custom mount point/file --size=500GB --direct=1 --rw=randrw --bs=64k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=throughput-test-job --eta-newline=1
返された読取りMBPと書込みMBPの両方を追加します。
書込みワークロード(
readwrite
、randrw
、write
、trimwrite
)を使用するFIOテストを、使用中のデバイスに対して直接実行しないでください。 ランダム読取り/書込みをテストするには、次のコマンドを実行します:
sudo fio --filename=device name --direct=1 --rw=randrw --bs=256k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=throughput-test-job --eta-newline=1
返された読取りMBPと書込みMBPの両方を追加します。
コマンドを直接実行せずにジョブ・ファイルを使用したほうが、結果の一貫性が高くなる場合もあります。このアプローチには次のステップを使用します。
-
次のようなジョブ・ファイル(fiorandomread.fio)を作成します:
[global] bs=256K iodepth=64 direct=1 ioengine=libaio group_reporting time_based runtime=120 numjobs=4 name=raw-randreadwrite rw=randrw [job1] filename=device name
-
次のコマンドを使用してジョブを実行します:
fio randomreadwrite.fio
データベース・ワークロードなど、順次アクセス・パターンを利用できるワークロードに対しては、順次読取りをテストすることにより、このパターンのパフォーマンスを確認できます。
順次読取りをテストするには、次のコマンドを実行します:
sudo fio --filename=device name --direct=1 --rw=read --bs=256k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=throughput-test-job --eta-newline=1 --readonly
コマンドを直接実行せずにジョブ・ファイルを使用したほうが、結果の一貫性が高くなる場合もあります。このアプローチには次のステップを使用します。
-
次のようなジョブ・ファイル(fioread.fio)を作成します:
[global] bs=256K iodepth=64 direct=1 ioengine=libaio group_reporting time_based runtime=120 numjobs=4 name=raw-read rw=read [job1] filename=device name
-
次のコマンドを使用してジョブを実行します:
fio read.fio
レイテンシ・パフォーマンス・テスト
レイテンシ・パフォーマンスをテストするには、次のFIOサンプル・コマンドを使用します。コマンドを直接実行することも、コマンドを使用してジョブ・ファイルを作成してからそのジョブ・ファイルを実行することもできます。
ランダム読取りのレイテンシをテストするには、次のコマンドを直接実行します:
sudo fio --filename=device name --direct=1 --rw=randread --bs=4k --ioengine=libaio --iodepth=1 --numjobs=1 --time_based --group_reporting --name=readlatency-test-job --runtime=120 --eta-newline=1 --readonly
コマンドを直接実行せずにジョブ・ファイルを使用したほうが、結果の一貫性が高くなる場合もあります。このアプローチには次のステップを使用します。
-
次のようなジョブ・ファイル(fiorandomreadlatency.fio)を作成します:
[global] bs=4K iodepth=1 direct=1 ioengine=libaio group_reporting time_based runtime=120 numjobs=1 name=readlatency-test-job rw=randread [job1] filename=device name
-
次のコマンドを使用してジョブを実行します:
fio fiorandomreadlatency.fio
書込みワークロード(
readwrite
、randrw
、write
、trimwrite
)を使用するFIOテストを、使用中のデバイスに対して直接実行しないでください。 ランダム読取り/書込みのレイテンシをテストするには、次のコマンドを直接実行します:
sudo fio --filename=device name --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=1 --numjobs=1 --time_based --group_reporting --name=rwlatency-test-job --runtime=120 --eta-newline=1
コマンドを直接実行せずにジョブ・ファイルを使用したほうが、結果の一貫性が高くなる場合もあります。このアプローチには次のステップを使用します。
-
次のようなジョブ・ファイル(fiorandomrwlatency.fio)を作成します:
[global] bs=4K iodepth=1 direct=1 ioengine=libaio group_reporting time_based runtime=120 numjobs=1 name=rwlatency-test-job rw=randrw [job1] filename=device name
-
次のコマンドを使用してジョブを実行します:
fio fioradomrwlatency.fio