Re: msync() behaviour broken for MS_ASYNC, revert patch?

From: Nick Piggin
Date: Fri Feb 10 2006 - 01:01:30 EST


Andrew Morton wrote:
Nick Piggin <nickpiggin@xxxxxxxxxxxx> wrote:

But I've explained that they only matter for people using it in stupid ways.
fsync also poses a performance problem for programs that call it after every
write(2).


There's absolutely nothing stupid about

*p = <expr>
msync(p, sizeof(*p), MS_ASYNC);


There really is if you're expecting a short time later to do

*p = <expr2>

and had no need for a MS_SYNC anywhere in the meantime.
If you did have the need for MS_SYNC, then kicking off the IO
ASAP is going to be more efficient.


Is a more efficient implementation know-problematic?


It's less efficient for some things. A lot.


But only for stupid things, right?


What applications did
you observe problems with, can you remember?


Linus has some application which was doing the above. It ran extremely
slowly, so we changed MS_ASYNC (ie: made it "more efficient"...)

Can he remember what it is? It sounds like it is broken.

OTOH, it could have been blocking on pages already under writeout
but a smarter implementation could ignore those (at the cost of
worse IO efficiency in these rare cases).

--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com -
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/