I would also add what I feel the most important thing, that is
anticipatory scheduling can help decreasing a lot the latencies of
filesystem reads in presence of lots of misc I/O, by knowing which are
the read commands that are intermediate-dependent-sync, that means
knowing a new dependent read will be submitted very quickly as soon as
the current read-I/O is completed. In such a case it makes lots sense to
wait for the next read to be submitted instead of start processing
immediatly the rest of the I/O queue. This way when you read a file and
you've to walk the indirect blocks before being able to read the data,
you won't be greatly peanalized against the writes or reads that won't
need to pass through metadata I/O before being served.
This doesn't obviate the need of SFQ for the patological multimedia
cases where I/O latency is the first prio, or for workloads where
sync-write latency is the first prio.
BTW, I'm also thinking that the SFQ could be selected not system wide,
but per-process basis, with a prctl or something, so you could have all
the I/O going into the single default async-io queue, except for mplayer
that will use the SFQ queues. This may not even need to be privilegied
since SFQ is fair and if an user can write a lot it can just hurt
latency, with SFQ could hurt more but still not deadlock. This SFQ prctl
for the I/O scheduler, would be very similar to the RT policy for the
main process scheduler. Infact it maybe the best to just have SFQ always
enabled, and selectable only via the SFQ prctl, and to enable the
functionaltiy only per-process basis rather than global. We can still
add a sysctl to enable it globally despite nobody set the per-process
flag.
Andrea
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/