Andres, Great job. Looking through the emails and thinking about why this works I think this patch should significantly speedup 8.4 on most any file system(obviously some more than others) unless the system has significantly reduced memory or a slow single core. On a Celeron with 256 memory I suspect it'll crash out or just hit the swap and be a worse bottleneck. Anyone have something like this to test on? -Michael
On Mon, Dec 28, 2009 at 9:05 PM, Andres Freund <and...@anarazel.de> wrote: > On Tuesday 29 December 2009 01:46:21 Greg Smith wrote: > > Andres Freund wrote: > > > As I said the real benefit only occurred after adding posix_fadvise(.., > > > FADV_DONTNEED) which is somewhat plausible, because i.e. the directory > > > entries don't need to get scheduled for every file and because the > kernel > > > can reorder a whole directory nearly sequentially. Without the advice > it > > > the kernel doesn't know in time that it should write that data back and > > > it wont do it for 5 seconds by default on linux or such... > > It would be interesting to graph the "Dirty" and "Writeback" figures in > > /proc/meminfo over time with and without this patch in place. That > > should make it obvious what the kernel is doing differently in the two > > cases. > I did some analysis using blktrace (usefull tool btw) and the results show > that > the io pattern is *significantly* different. > > For one with the direct fsyncing nearly no hardware queuing is used and for > another nearly no requests are merged on software side. > > Short stats: > > OLD: > > Total (8,0): > Reads Queued: 2, 8KiB Writes Queued: 7854, > 29672KiB > Read Dispatches: 2, 8KiB Write Dispatches: 1926, > 29672KiB > Reads Requeued: 0 Writes Requeued: 0 > Reads Completed: 2, 8KiB Writes Completed: 2362, > 29672KiB > Read Merges: 0, 0KiB Write Merges: 5492, > 21968KiB > PC Reads Queued: 0, 0KiB PC Writes Queued: 0, > 0KiB > PC Read Disp.: 436, 0KiB PC Write Disp.: 0, > 0KiB > PC Reads Req.: 0 PC Writes Req.: 0 > PC Reads Compl.: 0 PC Writes Compl.: 2362 > IO unplugs: 2395 Timer unplugs: 557 > > > New: > > Total (8,0): > Reads Queued: 0, 0KiB Writes Queued: 1716, > 5960KiB > Read Dispatches: 0, 0KiB Write Dispatches: 324, > 5960KiB > Reads Requeued: 0 Writes Requeued: 0 > Reads Completed: 0, 0KiB Writes Completed: 550, > 5960KiB > Read Merges: 0, 0KiB Write Merges: 1166, > 4664KiB > PC Reads Queued: 0, 0KiB PC Writes Queued: 0, > 0KiB > PC Read Disp.: 226, 0KiB PC Write Disp.: 0, > 0KiB > PC Reads Req.: 0 PC Writes Req.: 0 > PC Reads Compl.: 0 PC Writes Compl.: 550 > IO unplugs: 503 Timer unplugs: 30 > > > Andres >