ストレージ向けのベンチマークはいろいろあるけど、映像専用の物もあるらしい。
という事で早速入れてみたのでメモ。
1, frametestをダウンロード
2, 32Bitのglibcインストール
3, 実行
4, 結果
1, frametestをダウンロード
こちらからダウンロード
https://support.dvsus.com/hc/en-us/articles/212925466-How-to-use-frametest
ただし、64Bit版は無いようなので、32bit版を使います。
ダウンロードするとパッケージというよりは実行ファイルその物のような形でダウンロードするのでセキュリティの警告が出るけど、勿論無視。
ダウンロードしたら実行権を与えておきます。
#chmod +x frametest
2, 32Bitのglibcインストール
デフォルトのUbuntu 22.04(64Bit)のままだと32Bitプログラムなので動かない。
glibc-i686が必要と書いてありますが、Ubuntuだとピンポイントではインストール出来ないっぽい。
よって、ライブラリーごとバサッと入れちゃう。
#apt install gcc-multilib
これでOK!
3, 実行
リンクにある通りにやってみる。
実行すると連番ファイルが大量に生成されるので、テスト用のディレクトリを作った方が消すときに楽です。
Syntaxは
#./frametest [options]
Options:
-w size Perfrom write test with 'size' KB frames or "sd", "hd", "2k", "4k"
-e Perform write test with empty frames (open/close test)
-r Perform read test using existing frames (default)
-s Perform streaming test to/from a single file
-n num Number of frames to read or write (default = 1800)
-a num Use async I/O with 'num' overlapped operations (default is sync)
-t num Use multithreading I/O, with 'num' threads at one time
-o Handle completed I/Os out-of-order (not used in read and sync IO)
-f rate Limit speed to 'rate' frames per second
-q num Maximum 'num' of queued buffers before a frame is dropped
-b num Pre-buffer 'num' frames before starting "playback" (default = 5)
-v Create/access files in reverse order
-m Create/access files in a random pattern
-l num Number of frames to loop (default = 0: don't loop)
-i num Number of I/Os per frame (default = 1, ignored in async mode)
-z size Specifies a custom 'size' for read or write test in KB
-d num Use directories, with 'num' files per directory
-p secs Pause 'secs' before starting test
-c perc Crop mode, read middle 'perc'% of frame (ignored in write test)
-u secs Display update interval in seconds (default = 1s)
-h secs Histogram displays last 'secs' worth of info (default = all)
-x file Export detailed timing to a file (comma separated), append '.csv'
まずは、DPX 2Kを想定した書き込みなので、-w 2kにしてフレーム数はデフォルトは1800ですが9000枚に。
またログを取っておきたいので-x でファイル名.csvを指定。
最後に出力先で、今回はHDD x12本のSoftware RAIDをマウントしてあるディレクト先に書いてみます。
ちなみに、1回目のテストはReadが混ざるので2回目以降の方がリアルな結果になるらしい。
#mkdir /data/set1
#./frametest -w 2k -t 4 -n 9000 -x DPX_write.csv /data/set1
Test parameters: -w12512 -n9000 -t4
Test duration: 142 secs
Frames transferred: 8977 (109687.719 MB)
Fastest frame: 8.324 ms (1467.96 MB/s)
Slowest frame: 650.225 ms (18.79 MB/s)
Averaged details:
Open I/O Frame Data rate Frame rate
Last 1s: 0.033 ms 66.82 ms 17.24 ms 708.67 MB/s 58.0 fps
5s: 0.026 ms 62.94 ms 16.85 ms 725.22 MB/s 59.4 fps
30s: 0.026 ms 60.36 ms 16.54 ms 738.95 MB/s 60.5 fps
Overall: 0.028 ms 57.67 ms 15.86 ms 770.21 MB/s 63.0 fps
Histogram of frame completion times:
20% |
| *
| **
| ***
| ****
| *****
| ******
| ********
| ********** **
| ********************* ****
+|----|-----|----|----|-----|----|----|-----|----|----|-----|----|
ms <0.1 .2 .5 1 2 5 10 20 50 100 200 500 >1s
Overall frame rate .... 63.12 fps (808663695 bytes/s)
Average file time ...... 57.630 ms
Shortest file time ..... 8.324 ms
Longest file time ...... 650.225 ms
Average create time .... 0.028 ms
Shortest create time ... 0.004 ms
Longest create time .... 5.511 ms
Average write time ..... 57.6 ms
Shortest write time .... 8.3 ms
Longest write time ..... 650.2 ms
Average close time .... 0.008 ms
Shortest close time ... 0.001 ms
Longest close time .... 0.409 ms
Writing log file...
4, 結果
なんかクリスマスツリーみたいでかわいいけど、これはレイテンシーの分布ですね。
スループットは 770.21 MB/sで、フレームレートは63.0 fps。
良いのか悪いのか判断が解りませんが、連番で60fps出てるよって事かな。だとしたらGoodだと思いたい。
連番ではなくシングルファイルの時は以下のようにシンプルに。
書き込み
#./frametest -s -w 8192 /data/set1/testfile1
読み出し
#./frametest -s -z 8192 -r /data/set1/testfile1
以上、まずは簡単にやってみたレベルですが、いつか誰かの役に立ちますように。