Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759183AbZCPRv4 (ORCPT ); Mon, 16 Mar 2009 13:51:56 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755871AbZCPRv0 (ORCPT ); Mon, 16 Mar 2009 13:51:26 -0400 Received: from gir.skynet.ie ([193.1.99.77]:51124 "EHLO gir.skynet.ie" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755218AbZCPRvZ (ORCPT ); Mon, 16 Mar 2009 13:51:25 -0400 From: Mel Gorman To: Mel Gorman , Linux Memory Management List Cc: Pekka Enberg , Rik van Riel , KOSAKI Motohiro , Christoph Lameter , Johannes Weiner , Nick Piggin , Linux Kernel Mailing List , Lin Ming , Zhang Yanmin , Peter Zijlstra Subject: [PATCH 00/26] Cleanup and optimise the page allocator V4 Date: Mon, 16 Mar 2009 17:53:14 +0000 Message-Id: <1237226020-14057-1-git-send-email-mel@csn.ul.ie> X-Mailer: git-send-email 1.5.6.5 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2818 Lines: 53 Here is V4 of the cleanup and optimisation of the page allocator and it should be ready for general testing. The main difference from V3 is that the controversial patches have been dropped and I'll revisit them later. Tests are currently running to I have exact figures of how things stand on the test machines I used but I think this can be considered a merge candidate, possibly for 2.6.30 depending on how reviews and wider testing goes. Changes since V3 o Drop the more controversial patches for now and focus on the "obvious win" material o Add reviewed-by notes o Fix changelog entry to say __rmqueue_fallback instead __rmqueue o Add unlikely() for the clearMlocked check o Change where PGFREE is accounted in free_hot_cold_page() to have symmetry with __free_pages_ok() Changes since V2 o Remove brances by treating watermark flags as array indices o Remove branch by assuming __GFP_HIGH == ALLOC_HIGH o Do not check for compound on every page free o Remove branch by always ensuring the migratetype is known on free o Simplify buffered_rmqueue further o Reintroduce improved version of batched bulk free of pcp pages o Use allocation flags as an index to zone watermarks o Work out __GFP_COLD only once o Reduce the number of times zone stats are updated o Do not dump reserve pages back into the allocator. Instead treat them as MOVABLE so that MIGRATE_RESERVE gets used on the max-order-overlapped boundaries without causing trouble o Allow pages up to PAGE_ALLOC_COSTLY_ORDER to use the per-cpu allocator. order-1 allocations are frequently enough in particular to justify this o Rearrange inlining such that the hot-path is inlined but not in a way that increases the text size of the page allocator o Make the check for needing additional zonelist filtering due to NUMA or cpusets as light as possible o Do not destroy compound pages going to the PCP lists o Delay the merging of buddies until a high-order allocation needs them or anti-fragmentation is being forced to fallback Changes since V1 o Remove the ifdef CONFIG_CPUSETS from inside get_page_from_freelist() o Use non-lock bit operations for clearing the mlock flag o Factor out alloc_flags calculation so it is only done once (Peter) o Make gfp.h a bit prettier and clear-cut (Peter) o Instead of deleting a debugging check, replace page_count() in the free path with a version that does not check for compound pages (Nick) o Drop the alteration for hot/cold page freeing until we know if it helps or not -- 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/