From: Vladimir Serbinenko Date: Mon, 18 Nov 2013 16:41:37 +0000 (+0100) Subject: * grub-core/kern/mm.c (grub_real_malloc): Decrease cut-off of moving the X-Git-Tag: grub-2.02-beta1~267 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45bf8b3a7549;p=thirdparty%2Fgrub.git * grub-core/kern/mm.c (grub_real_malloc): Decrease cut-off of moving the pointer to 32K. This is the size of cache element which is the most common allocation >1K. This way the pointer is always around blocks of 32K and so we keep performance while decreasing fragmentation. --- diff --git a/ChangeLog b/ChangeLog index ba6af6af6..6b66c8e51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-11-18 Vladimir Serbinenko + + * grub-core/kern/mm.c (grub_real_malloc): Decrease cut-off of moving the + pointer to 32K. This is the size of cache element which is the most + common allocation >1K. This way the pointer is always around blocks + of 32K and so we keep performance while decreasing fragmentation. + 2013-11-18 Vladimir Serbinenko * grub-core/kern/mm.c (grub_real_malloc): Don't update the pointer to diff --git a/grub-core/kern/mm.c b/grub-core/kern/mm.c index 53f3475f5..1c3d02388 100644 --- a/grub-core/kern/mm.c +++ b/grub-core/kern/mm.c @@ -299,7 +299,7 @@ grub_real_malloc (grub_mm_header_t *first, grub_size_t n, grub_size_t align) This will have side effect of fragmenting memory as small pieces before this will be un-used. */ /* So do it only for chunks under 64K. */ - if (n < (0x10000 >> GRUB_MM_ALIGN_LOG2) + if (n < (0x8000 >> GRUB_MM_ALIGN_LOG2) || *first == p) *first = q;