Messages in this thread | | | Date | Fri, 10 Feb 2006 17:03:06 +1100 | From | Nick Piggin <> | Subject | Re: msync() behaviour broken for MS_ASYNC, revert patch? |
| |
Andrew Morton wrote: > Nick Piggin <nickpiggin@yahoo.com.au> 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |