ACK: [Trusty/Utopic/Vivid][SRU][RESEND PATCH] LP#1456952 -- mm/slab_common: support the slub_debug boot option on specific object size

Chris J Arges chris.j.arges at canonical.com
Fri Jun 26 13:36:19 UTC 2015


Seems like a useful tool in debugging the distro kernel.

On Fri, Jun 26, 2015 at 04:33:07PM +0800, Gavin Guo wrote:
> BugLink: http://bugs.launchpad.net/bugs/1456952
> 
> [Impact]
> 
> slub_debug cannot work for specific kmem_cache size.
> 
> e.g. slub_debug=PU,kmalloc-1024
> 
> The slub_debug is used to enable the debugging of use-after-free, poison
> overwritten, double free. And it also increases the up time of the server
> when the above mentioned errors happen instead of crashing immediately.
> 
> However, currently, there exists bug that the slub_debug cannot be applied
> for the specific object size. This is not helpful to enable the whole
> system slub_debug because the performance loss will be up to 20%~30%
> according to the customer's measurement. The patch here to limit the
> slub_debug only on the specific object size to alleviate the performance
> loss.
> 
> [Fix]
> 
> The patch is now in upstream 4066c33d0308f87e9a3b0c7fafb9141c0bfbfa77.
> 
> The slub_debug=PU,kmalloc-xx cannot work because in the
> create_kmalloc_caches() the s->name is created after the
> create_kmalloc_cache() is called.  The name is NULL in the
> create_kmalloc_cache() so the kmem_cache_flags() would not set the
> slub_debug flags to the s->flags.  The fix here set up a kmalloc_names
> string array for the initialization purpose and delete the dynamic name
> creation of kmalloc_caches.
> 
> The patch generated from git format-patch from Trusty/Utopic/Vivid/Upstream
> can't be used for each other. So, I prepared 3 patches for each release.
> 
> [Test case]
> 
> Install the patched kernel.
> sudo reboot
> 
> sudo vim /etc/default/grub
> append "slub_debug=FPZU,kmalloc-1024" to GRUB_CMDLINE_LINUX_DEFAULT
> sudo update-grub
> sudo reboot
> 
> # Check if the kmalloc-1024 debug options are enabled
> sudo cat /sys/kernel/slab/kmalloc-1024/sanity_checks
> # shoulb be 1
> sudo cat /sys/kernel/slab/kmalloc-1024/red_zone
> # shoulb be 1
> sudo cat /sys/kernel/slab/kmalloc-1024/poison
> # shoulb be 1
> 
> # Check other object size
> sudo cat /sys/kernel/slab/kmalloc-8/sanity_checks
> # shoulb be 0
> sudo cat /sys/kernel/slab/kmalloc-8/red_zone
> # shoulb be 0
> sudo cat /sys/kernel/slab/kmalloc-8/poison
> # shoulb be 0
> 
> Gavin Guo (1):
>   mm/slab_common: support the slub_debug boot option on specific object
>     size
> 
>  include/linux/slab.h | 22 +++++++++++++++++++
>  mm/slab_common.c     | 62 +++++++++++++++++++++++++++++++++-------------------
>  2 files changed, 61 insertions(+), 23 deletions(-)
> 
> -- 
> 2.0.0
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
> 




More information about the kernel-team mailing list