Hi Shaohua, all,
at last, I started testing your io.low limit for blk-throttle.  One of
the things I'm interested in is how good throttling is in achieving a
high throughput in the presence of realistic, variable workloads.

However, I seem to have bumped into a totally different problem.  The
io.low parameter doesn't seem to guarantee what I understand it is meant
to guarantee: minimum per-group bandwidths.  For example, with
- one group, the interfered, containing one process that does sequential
  reads with fio
- io.low set to 100MB/s for the interfered
- six other groups, the interferers, with each interferer containing one
  process doing sequential read with fio
- io.low set to 10MB/s for each interferer
- the workload executed on an SSD, with a 500MB/s of overall throughput
the interfered gets only 75MB/s.

In particular, the throughput of the interfered becomes lower and
lower as the number of interferers is increased.  So you can make it
become even much lower than the 75MB/s in the example above.  There
seems to be no control on bandwidth.

Am I doing something wrong?  Or did I simply misunderstand the goal of
io.low, and the only parameter for guaranteeing the desired bandwidth to
a group is io.max (to be used indirectly, by limiting the bandwidth of
the interferers)?

If useful for you, you can reproduce the above test very quickly, by
using the S suite [1] and typing:

cd thr-lat-with-interference
sudo ./thr-lat-with-interference.sh -b t -w 100000000 -W "10000000 10000000 
10000000 10000000 10000000 10000000" -n 6 -T "read read read read read read" -R 
"0 0 0 0 0 0"

Looking forward to your feedback,
Paolo

[1] 

Reply via email to