ファイルシステムの性能ベンチマーク
ファイルシステムのパフォーマンスは、GitLab全体のパフォーマンス、特にGitリポジトリを読み書きするアクションに大きな影響を与えます。この情報は、ファイルシステムのパフォーマンスを、現実世界の既知の良いシステムと悪いシステムに対してベンチマークするのに役立ちます。
ファイルシステムのパフォーマンスについて語るとき、最大の関心事はネットワークファイルシステムです(NFS) 。しかし、ローカルのディスクでさえもI/Oが遅いことがあります。このページの情報は、どちらのシナリオにも使用できます。
ベンチマークの実行
ベンチマークfio
Fioを使用してI/Oパフォーマンスをテストする必要があります。このテストは、NFSサーバと、NFSサーバと通信するアプリケーション・ノードの両方で実行する必要があります。
インストールするには
- Ubuntuの場合:
apt install fio
. -
yum
-管理環境:yum install fio
.
次に以下を実行してください:
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --bs=4k --iodepth=64 --readwrite=randrw --rwmixread=75 --size=4G --filename=/path/to/git-data/testfile
これは、/path/to/git-data/testfile
に4GBのファイルを作成します。ファイル内の75%/25%の分割を使用して、一度に64オペレーションを実行し、4KBの読み取りと書き込みを実行します。テストが完了したら、必ずファイルを削除してください。
出力はfio
インストールされている fio
バージョンによって異なります。fio
以下は fio
、ネットワーク接続されたソリッドステートドライブ上のv2.2.fio
10からの出力例 fio
です(SSD):
test: (g=0): rw=randrw, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64
fio-2.2.10
Starting 1 process
test: Laying out IO file(s) (1 file(s) / 1024MB)
Jobs: 1 (f=1): [m(1)] [100.0% done] [131.4MB/44868KB/0KB /s] [33.7K/11.3K/0 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=10287: Sat Feb 2 17:40:10 2019
read : io=784996KB, bw=133662KB/s, iops=33415, runt= 5873msec
write: io=263580KB, bw=44880KB/s, iops=11219, runt= 5873msec
cpu : usr=6.56%, sys=23.11%, ctx=266267, majf=0, minf=8
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
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 : total=r=196249/w=65895/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=64
Run status group 0 (all jobs):
READ: io=784996KB, aggrb=133661KB/s, minb=133661KB/s, maxb=133661KB/s, mint=5873msec, maxt=5873msec
WRITE: io=263580KB, aggrb=44879KB/s, minb=44879KB/s, maxb=44879KB/s, mint=5873msec, maxt=5873msec
この出力のiops
の値に注目してください。この例では、SSDは毎秒33,415回の読み取りオペレーションと毎秒11,219回の書き込みオペレーションを実行しました。回転ディスクでは、1秒あたり2,000回の読み取りオペレーションと700回の書き込みオペレーションが行われます。
簡単なベンチマーク
fio
がシステムで利用できない場合に使用できます。このテストでは良い結果が得られても、読み込み速度やその他のさまざまな要因でパフォーマンスが低下することがあります。以下の1行コマンドは、ファイルシステムの書き込みと読み取りのパフォーマンスの簡単なベンチマークを提供します。これは、実行されたディレクトリに1,000個の小さなファイルを書き込み、同じ1,000個のファイルを読み取ります。
- 適切なリポジトリストレージパスのルートに変更してください。
-
後で削除できるように、テスト用の一時ディレクトリを作成します:
mkdir test; cd test
-
コマンドを実行してください:
time for i in {0..1000}; do echo 'test' > "test${i}.txt"; done
-
読み取り性能をベンチマークするには、コマンドを実行します:
time for i in {0..1000}; do cat "test${i}.txt" > /dev/null; done
- テスト・ファイルを削除します:
cd ../; rm -rf test
time for ...
コマンドの出力は以下のようになります。重要なメトリクスはreal
。
$ time for i in {0..1000}; do echo 'test' > "test${i}.txt"; done
real 0m0.116s
user 0m0.025s
sys 0m0.091s
$ time for i in {0..1000}; do cat "test${i}.txt" > /dev/null; done
real 0m3.118s
user 0m1.267s
sys 0m1.663s
複数の顧客との経験から、このタスクにかかる時間は、ファイルシステムのパフォーマンスが良好であることを示す10秒未満であるべきです。