Re: 3.10.9: kmemleak disables all CPUs except CPU0
From: Catalin Marinas
Date: Mon Sep 02 2013 - 12:09:40 EST
On Mon, Sep 02, 2013 at 04:51:17PM +0100, Martin MOKREJÅ wrote:
> Catalin Marinas wrote:
> > On Mon, Sep 02, 2013 at 04:44:52PM +0100, Max Filippov wrote:
> >> On Mon, Sep 2, 2013 at 7:31 PM, Catalin Marinas <catalin.marinas@xxxxxxx> wrote:
> >>> On 31 August 2013 14:35, Martin MOKREJÅ <mmokrejs@xxxxxxxxx> wrote:
> >>>> never realized that my CPUs are gone if I compile into kernel kmemleak.
> >>>> Is that really the aim?
> >>>>
> >>>> CONFIG_HAVE_DEBUG_KMEMLEAK=y
> >>>> CONFIG_DEBUG_KMEMLEAK=y
> >>>> CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=400
> >>>> # CONFIG_DEBUG_KMEMLEAK_TEST is not set
> >>>> # CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF is not set
> >>>>
> >>>> 1. Why isn't there /sys/devices/system/cpu/cpu0/online file?
> >>>> Does not matter if it contains 0 or 1. It just should exist.
> >>>
> >>> I can't really see how kmemleak would do this, maybe other config
> >>> options that get set/cleared in the process of selecting kmemleak. Can
> >>
> >> Seems to be kmemcheck: from arch/x86/mm/kmemcheck/kmemcheck.c:
> >>
> >> int __init kmemcheck_init(void)
> >> {
> >> #ifdef CONFIG_SMP
> >> /*
> >> * Limit SMP to use a single CPU. We rely on the fact that this code
> >> * runs before SMP is set up.
> >> */
> >> if (setup_max_cpus > 1) {
> >> printk(KERN_INFO
> >> "kmemcheck: Limiting number of CPUs to 1.\n");
> >> setup_max_cpus = 1;
> >> }
> >> #endif
> >
> > Ah, ok, not my problem then ;)
>
> Fine, so would somebody please update the help text accessible in "menuconfig"
> for this entry? It should be clear that it has a huge performance impact if enabled.
> And, by compiling in it is enabled by default.
Otherwise, of no-one volunteers, please feel free to send a patch ;)
--
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/