The patch titled Subject: idr: reduce the number of bits per level from 8 to 6 has been added to the -mm tree. Its filename is idr-reduce-the-number-of-bits-per-level-from-8-to-6.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/idr-reduce-the-number-of-bits-per-level-from-8-to-6.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/idr-reduce-the-number-of-bits-per-level-from-8-to-6.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Matthew Wilcox <willy@xxxxxxxxxxxxxxx> Subject: idr: reduce the number of bits per level from 8 to 6 In preparation for merging the IDR and radix tree, reduce the fanout at each level from 256 to 64. If this causes a performance problem then a bisect will point to this commit, and we'll have a better idea about what we might do to fix it. Link: http://lkml.kernel.org/r/1480369871-5271-66-git-send-email-mawilcox@xxxxxxxxxxxxxxxxx Signed-off-by: Matthew Wilcox <willy@xxxxxxxxxxxxxxx> Tested-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> Cc: Konstantin Khlebnikov <koct9i@xxxxxxxxx> Cc: Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/idr.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff -puN include/linux/idr.h~idr-reduce-the-number-of-bits-per-level-from-8-to-6 include/linux/idr.h --- a/include/linux/idr.h~idr-reduce-the-number-of-bits-per-level-from-8-to-6 +++ a/include/linux/idr.h @@ -18,12 +18,11 @@ #include <linux/rcupdate.h> /* - * We want shallower trees and thus more bits covered at each layer. 8 - * bits gives us large enough first layer for most use cases and maximum - * tree depth of 4. Each idr_layer is slightly larger than 2k on 64bit and - * 1k on 32bit. + * Using 6 bits at each layer allows us to allocate 7 layers out of each page. + * 8 bits only gave us 3 layers out of every pair of pages, which is less + * efficient except for trees with a largest element between 192-255 inclusive. */ -#define IDR_BITS 8 +#define IDR_BITS 6 #define IDR_SIZE (1 << IDR_BITS) #define IDR_MASK ((1 << IDR_BITS)-1) _ Patches currently in -mm which might be from willy@xxxxxxxxxxxxxxx are tools-add-warn_on_once.patch radix-tree-test-suite-allow-gfp_atomic-allocations-to-fail.patch tools-add-more-bitmap-functions.patch radix-tree-test-suite-use-common-find-bit-code.patch radix-tree-fix-typo.patch radix-tree-create-node_tag_set.patch radix-tree-make-radix_tree_find_next_bit-more-useful.patch radix-tree-add-radix_tree_join.patch radix-tree-add-radix_tree_split.patch radix-tree-add-radix_tree_split_preload.patch idr-add-ida_is_empty.patch idr-reduce-the-number-of-bits-per-level-from-8-to-6.patch radix-tree-test-suite-add-some-more-functionality.patch reimplement-idr-and-ida-using-the-radix-tree.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html