Il 2022-01-24 22:13 Dave Chinner ha scritto:
No, the opposite. e.g. thread A does IO and then runs fsync(), which
needs to force the log, that triggers CIL push work which runs in a
different thread B. Thread A blocks waiting for the CIL push,
thread B runs immediately. Thread B then issues log IO, but the IO
from thread B is queued by CFQ because thread A's timeslice hasn't
expired. Hence log force is delayed until thread A's timeslice
expires, even though it is being done on behalf of thread A and
thread A is blocked until the IO from Thread B is scheduled and
completed.
Hi Dave,
ok, I can see now why it is so bad (especially when multiple threads are
involved).
No idea - I use noop for everything these days because IO schedulers
often cause more problems than they solve on SSDs, sparse virtual
machine images, thinly provisioned storage, etc....
Cheers,
Dave.
Right...
Thank you so much for the clear explanation.
--
Danti Gionatan
Supporto Tecnico
Assyoma S.r.l. - www.assyoma.it
email: g.danti@xxxxxxxxxx - info@xxxxxxxxxx
GPG public key ID: FF5F32A8