; Randomly read/write a block device file at queue depth 16.
[global]
filename=/dev/sda
direct=1
write_lat_log=prio-run.log
log_prio=1
rw=randrw
ioengine=libaio
iodepth=16

; Simple cmdprio_bssplit format. All non-zero percentage entries will
; use the same prio class and prio level defined by the cmdprio_class
; and cmdprio options.
[cmdprio]
; 40% of read I/Os are 64kB and 60% are 1MB. 100% of writes are 1MB.
; 100% of the 64kB reads are executed with prio class 1 and prio level 0.
; All other I/Os are executed without a priority set.
bssplit=64k/40:1024k/60,1024k/100
cmdprio_bssplit=64k/100:1024k/0,1024k/0
cmdprio_class=1
cmdprio=0

; Advanced cmdprio_bssplit format. Each non-zero percentage entry can
; use a different prio class and prio level (appended to each entry).
[cmdprio-adv]
; 40% of read I/Os are 64kB and 60% are 1MB. 100% of writes are 1MB.
; 25% of the 64kB reads are executed with prio class 1 and prio level 1,
; 75% of the 64kB reads are executed with prio class 3 and prio level 2.
; All other I/Os are executed without a priority set.
stonewall
bssplit=64k/40:1024k/60,1024k/100
cmdprio_bssplit=64k/25/1/1:64k/75/3/2:1024k/0,1024k/0

; Identical to the previous example, but with a default priority defined.
[cmdprio-adv-def]
; 40% of read I/Os are 64kB and 60% are 1MB. 100% of writes are 1MB.
; 25% of the 64kB reads are executed with prio class 1 and prio level 1,
; 75% of the 64kB reads are executed with prio class 3 and prio level 2.
; All other I/Os are executed with prio class 2 and prio level 7.
stonewall
prioclass=2
prio=7
bssplit=64k/40:1024k/60,1024k/100
cmdprio_bssplit=64k/25/1/1:64k/75/3/2:1024k/0,1024k/0

; Example of how to use cmdprio_bssplit with Command Duration Limits (CDL)
; using I/O priority hints. The drive has to support CDL, and CDL has to be
; enabled in sysfs, otherwise the hints will not be sent down to the drive.
[cmdprio-hints]
; 40% of the I/Os are 1MB reads and 60% of the I/Os are 2MB reads.
;
; 10% of the 1MB reads are executed with prio class 2 (Best Effort),
; prio level 0, and prio hint 1. Prio hint 1 means CDL descriptor 1.
; Since 40% of read I/Os are 1MB, and 10% of the 1MB I/Os use CDL desc 1,
; this means that 4% of all the issued I/O will use this configuration.
;
; 30% of the 1MB reads are executed with prio class 2 (Best Effort),
; prio level 0, and prio hint 2. Prio hint 2 means CDL descriptor 2.
; Since 40% of read I/Os are 1MB, and 30% of the 1MB I/Os use CDL desc 2,
; this means that 12% of all the issued I/O will use this configuration.
;
; 60% of the 1MB reads are executed with prio class 2 (Best Effort),
; prio level 0, and prio hint 0. Prio hint 0 means no hint.
; Since 40% of read I/Os are 1MB, and 60% of the 1MB I/Os use no hint,
; this means that 24% of all the issued I/O will use this configuration.
;
; 10% of the 2MB reads are executed with prio class 2 (Best Effort),
; prio level 0, and prio hint 3. Prio hint 3 means CDL descriptor 3.
; Since 60% of read I/Os are 2MB, and 10% of the 2MB I/Os use CDL desc 3,
; this means that 6% of all the issued I/O will use this configuration.
;
; 90% of the 2MB reads are executed with prio class 2 (Best Effort),
; prio level 0, and prio hint 0. Prio hint 0 means no hint.
; Since 60% of read I/Os are 2MB, and 90% of the 2MB I/Os use no hint,
; this means that 54% of all the issued I/O will use this configuration.
stonewall
rw=randread
bssplit=1M/40:2M/60
cmdprio_bssplit=1M/10/2/0/1:1M/30/2/0/2:1M/60/2/0/0:2M/10/2/0/3:2M/90/2/0/0
