On 2/9/23 00:56, Jan Kara wrote:
On Wed 08-02-23 09:53:41, Bart Van Assche wrote:
The test results I shared some time ago show that IOPRIO_CLASS_NONE was the
default I/O priority two years ago (see also https://lore.kernel.org/linux-block/20210927220328.1410161-5-bvanassche@xxxxxxx/).
The none-to-rt policy increases the priority of bio's that have not been
assigned an I/O priority to RT. Does this answer your question?
Not quite. I know that historically we didn't set bio I/O priority in some
paths (but we did set it in other paths such as some (but not all) direct
IO implementations). But that was exactly a mess because how none-to-rt
actually behaved depended on the exact details of the kernel internal IO
path. So my question is: Was none-to-rt actually just a misnomer and the
intended behavior was "always override to RT"? Or what was exactly the
expectation around when IO priority is not set and should be overridden?
How should it interact with AIO submissions with IOCB_FLAG_IOPRIO? How
should it interact with task having its IO priority modified with
ioprio_set(2)? And what if task has its normal scheduling priority modified
but that translates into different IO priority (which happens in
__get_task_ioprio())?
So I think that none-to-rt is just poorly defined and if we can just get
rid of it (or redefine to promote-to-rt), that would be good. But maybe I'm
missing some intended usecase...
Hi Jan,
We have no plans to use the ioprio_set() system call since it only
affects foreground I/O and not page cache writeback.
While Android supports io_uring, there are no plans to support libaio in
the Android C library (Bionic).
Regarding __get_task_ioprio(), I haven't found any code in that function
that derives an I/O priority from the scheduling priority. Did I perhaps
overlook something?
Until recently "none-to-rt" meant "if no I/O priority has been assigned
to a task, use IOPRIO_CLASS_RT". Promoting the I/O priority to
IOPRIO_CLASS_RT works for us. I'm fine with changing the meaning of
"none-to-rt" into promoting the I/O priority class to RT. Introducing
"promote-to-rt" as a synonym of "none-to-rt" is also fine with me.
Thanks,
Bart.