Gondolkodom rajta, hogy van-e konkretan erre scriptem. Kb valami ilyesmi modon szoktam (fejbol irom, biztos van 1-2 dolog, amit elirtam vagy kihagyok, otthon majd elokeresem, ha nem felejtem el):
for ((WRITERATIO=0;WRITERATIO<=100;WRITERATIO+=10))
do
fio ioengine=libaio direct=true iodepth=1 blocksize=4096 readwrite=rw rwmixread=$((100-WRITERATIO)) rwmixwrite=${WRITERATIO} filename=/dev/nvme0n1 size=128G runtime=60s
done
A size-ot altalaban szandekosan tullovom, hogy a runtime legyen ami meghatarozza, hogy mennyit fut. (Korabban a size-ra mindenfele sajat heurisztikakat csinaltam, hogy ne legyen se tul rovid, se tul hosszu a teszt, aztan egyszer rajottem, hogy a fio-nak erre van beepitett megoldasa :D)
De kb vegtelen szamu teszttel el tudom cseszni az idot, iodepth, blocksize allitgatassal rengeteget lehet varialni es nagyon mas eredmenyek fognak kijonni. Annyi tapasztalatom meg van, hogy (ha jol emlekszem) blocksize=512k felett kezdi a kernel feldarabolni a request-eket, vagyis onnantol olyan, mintha az iodepth-et emelned.