Messages in this thread | | | Date | Sat, 26 Jun 2010 12:05:26 +0200 | From | Christoph Hellwig <> | Subject | Re: trying to understand READ_META, READ_SYNC, WRITE_SYNC & co |
| |
On Fri, Jun 25, 2010 at 11:35:10PM -0400, Vivek Goyal wrote: > This logic was introduced by corrado to ensure WRITE_SYNC does not > lose fair share. Now we are back to the same question, what is the workload > which does that. > > 8e55063 cfq-iosched: fix corner cases in idling logic > > Before this patch, we will simply not do any idling on WRITE_SYNC. That > means no idling on O_SYNC/fsync paths but still idle on direct IO > WRITE_SYNC. Which is a bit of discrepancy.
Corrado, can you explain what workloads you doing that commit for? The commit message doesn't really given any useful information.
> - Stop idling on all the WRITE_SYNC IO. There is no reasonable way to > tell whether there will be more IO or not from applicatoin. This will > impact direct writes, O_SYNC writes and fsync(). > > If direct IO application is submitting writes with a delay in between > it can be starved out in presnce of competing workloads.
So what application does this?
> - Do idling by default on WRITE_SYNC path. Implement Jeff's queue yielding > patches. That way O_SYNC/fsyn path will call blk_yield() and stop idling. > Direct IO write path will stil continue to idle (I think if file has already > been laid out?).
I don't think this makes much sense. And O_SYNC write / fsync are defined to not return before the I/O makes it to disk, and for any sane filesystem end with a WRITE_BARRIER request because of that. So we end these with an explicit unplug anyway, no need for idling logic.
| |