On Mon, Mar 30, 2015 at 4:37 PM, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > On Mon, 30 Mar 2015 13:32:27 -0700 Jeremy Allison <jra@xxxxxxxxx> wrote: > >> On Mon, Mar 30, 2015 at 01:26:25PM -0700, Andrew Morton wrote: >> > >> > cons: >> > >> > d) fincore() is more expensive >> > >> > e) fincore() will very occasionally block >> >> The above is the killer for Samba. If fincore >> returns true but when we schedule the pread >> we block, we're hosed. >> >> Once we block, we're done serving clients on the main >> thread until this returns. That can cause unpredictable >> response times which can cause client timeouts. >> >> A fincore+pread solution that blocks is simply unsafe >> to use for us. We'll have to stay with the threadpool :-(. > > Finally. Thanks ;) > > This implies that the samba main thread also has to avoid any memory > allocations both direct and within syscall and pagefault - those will > occasionally exhibit similar worse-case latency. Is this done now? > > It's entirely possible to have an application with a low / semi static working set, and leave lots of free memory for the kernel especially for the page cache. For example the Google want to minimize malloc(). So in tcmalloc() they grab large chunks and rarely release it to back to the OS, in fact old version never shrank it. So you can entirely avoid stalls in malloc() for many workloads. -- Milosz Tanski CTO 16 East 34th Street, 15th floor New York, NY 10016 p: 646-253-9055 e: milosz@xxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html