[LWN Logo]
[LWN.net]
From:	 Andrew Morton <akpm@zip.com.au>
To:	 lkml <linux-kernel@vger.kernel.org>
Subject: -aa VM splitup
Date:	 Tue, 19 Mar 2002 19:53:17 -0800


I've been crunching on Andrea's 10_vm-32 patch for a number of days
with a view to getting it into the main tree.

At http://www.zip.com.au/~akpm/linux/patches/2.4/2.4.19-pre3/aa/ are 24
separate patches - the sum of all these is basically identical to
10_vm-32.  Note that the commentary in some of those patches is not
completely accurate.

Linus reviewed those patches over the weekend.  As a result of that and
some of my own work, we're down to 16 patches.  They are at

http://www.zip.com.au/~akpm/linux/patches/2.4/2.4.19-pre3/aa2/

I'll be feeding those 16 patches onto this mailing list for review. 
Here's a summary:

aa-010-show_stack.patch
	Sort-of provides an arch-independent show_stack() API.

aa-020-sync_buffers.patch
	writeback changes.

aa-030-writeout_scheduling.patch
	More writeback changes.

aa-040-touch_buffer.patch
	Buffer page aging changes.

aa-050-page_virtual.patch
        Linus said: "it just makes a micro-optimization to
        "page_address()" for the case where there is only one mem_map. 
        In my book, it only makes the thing more unreadable."

        Not included in aa2.

aa-060-start_aggressive_readahead.patch
        This was patch leakage from the XFS tree.  Not included in aa2

aa-070-exclusive_swap_page.patch
	Linus says this was addressed by other means.  Not included.

aa-080-async_swap_speedup.patch
        Linus said "The other part (that allows async swapins)
        was dangerous in my testing (it's originally from me): it
        allows a process that has a big dirty footprint to keep on to
        its pages without ever waiting for their dirty writeback.  I
        ended up reverting it because it allowed hoggers to make for
        worse interactive behaviour, but it definitely improves
        throughput."

        Not included.

aa-090-zone_watermarks.patch
        "I think the same problem got fixed with a simple
        one-liner in my 2.4.17 or something: make the "pages_low"
        requirement add up over all zones you go through."

        Not included.

aa-093-vm_tunables.patch
        Adds /proc tunables

aa-096-swap_out.patch
        Changes to the swap_out logic.  With this patch the VM
        becomes *totally* unusable.  It needs the changes in aa-110 as
        well.

aa-100-local_pages.patch
        This was some code which added a memclass check to the
        local_pages logic.  After examination I decided that there was
        tons more code in there than we actually needed, so I stripped
        this down to just a single process-local page.  Which is
        basically all that the code ever did.

aa-110-zone_accounting.patch
        Adds all the instrumentation which aa-096 needs.  'fraid I got those patches
        backwards.

        Andrea had implemented this as lots of macros in
        swap.h.  Linus' said "but should be cleaned up to use real
        functions instead of those macros from hell.  So I did that.

aa-120-try_to_free_pages_nozone.patch
        Support function needed by buffer.c

aa-140-misc_junk.patch
        Random little stuff

aa-150-read_write_tweaks.patch
        Little changes to pagefault and write(2) code.

aa-160-lru_release_check.patch
        Hugh's famous BUG() check in free_pages.

aa-170-drain_cpu_caches.patch
        microoptimisation

aa-180-activate_page_cleanup.patch
        Code cleanup

aa-190-block_flushpage_check.patch
        BUG check

aa-200-active_page_swapout.patch
        Remove dead code (I think)

aa-210-tlb_flush_speedup.patch
        microoptimisation

aa-230-free_zone_bhs.patch
        Prevent ZONE_NORMAL from getting clogged with
        buffer_heads.  Everyone agrees that this is a pretty ugly hack.
         I'm not proposing it for inclusion at this time, but the diff
        is there, and it is stable.

aa-240-page_table_hash.patch
        This is the patch which changes Bill Irwin's hashing
        scheme for per-page waitqueues.  I'm not proposing it for
        merging at this time - I think that more discussion and
        evaluation is needed to justify such action.  But the patch is
        there, and is stable.


For a merging plan I'd propose that the patches be considered in three
groups.  Maybe split across three kernel releases.

writeback changes:
	aa-010-show_stack.patch
	aa-020-sync_buffers.patch
	aa-030-writeout_scheduling.patch
	aa-040-touch_buffer.patch

VM changes:
	aa-093-vm_tunables.patch
	aa-096-swap_out.patch
	aa-100-local_pages.patch
	aa-110-zone_accounting.patch
	aa-120-try_to_free_pages_nozone.patch

The rest:
	aa-140-misc_junk.patch
	aa-150-read_write_tweaks.patch
	aa-160-lru_release_check.patch
	aa-170-drain_cpu_caches.patch
	aa-180-activate_page_cleanup.patch
	aa-190-block_flushpage_check.patch
	aa-200-active_page_swapout.patch

There are still a few areas which need more work, but they're not
critical.  They're highlighted in the commentary against the individual
patches.

-
-
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/