mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 06:02:38 +00:00
871751e25d
Implement /proc/slab_allocators. It produces output like: idr_layer_cache: 80 idr_pre_get+0x33/0x4e buffer_head: 2555 alloc_buffer_head+0x20/0x75 mm_struct: 9 mm_alloc+0x1e/0x42 mm_struct: 20 dup_mm+0x36/0x370 vm_area_struct: 384 dup_mm+0x18f/0x370 vm_area_struct: 151 do_mmap_pgoff+0x2e0/0x7c3 vm_area_struct: 1 split_vma+0x5a/0x10e vm_area_struct: 11 do_brk+0x206/0x2e2 vm_area_struct: 2 copy_vma+0xda/0x142 vm_area_struct: 9 setup_arg_pages+0x99/0x214 fs_cache: 8 copy_fs_struct+0x21/0x133 fs_cache: 29 copy_process+0xf38/0x10e3 files_cache: 30 alloc_files+0x1b/0xcf signal_cache: 81 copy_process+0xbaa/0x10e3 sighand_cache: 77 copy_process+0xe65/0x10e3 sighand_cache: 1 de_thread+0x4d/0x5f8 anon_vma: 241 anon_vma_prepare+0xd9/0xf3 size-2048: 1 add_sect_attrs+0x5f/0x145 size-2048: 2 journal_init_revoke+0x99/0x302 size-2048: 2 journal_init_revoke+0x137/0x302 size-2048: 2 journal_init_inode+0xf9/0x1c4 Cc: Manfred Spraul <manfred@colorfullife.com> Cc: Alexander Nyberg <alexn@telia.com> Cc: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Christoph Lameter <clameter@engr.sgi.com> Cc: Ravikiran Thirumalai <kiran@scalex86.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> DESC slab-leaks3-locking-fix EDESC From: Andrew Morton <akpm@osdl.org> Update for slab-remove-cachep-spinlock.patch Cc: Al Viro <viro@ftp.linux.org.uk> Cc: Manfred Spraul <manfred@colorfullife.com> Cc: Alexander Nyberg <alexn@telia.com> Cc: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Christoph Lameter <clameter@engr.sgi.com> Cc: Ravikiran Thirumalai <kiran@scalex86.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
240 lines
8.2 KiB
Plaintext
240 lines
8.2 KiB
Plaintext
|
|
config PRINTK_TIME
|
|
bool "Show timing information on printks"
|
|
help
|
|
Selecting this option causes timing information to be
|
|
included in printk output. This allows you to measure
|
|
the interval between kernel operations, including bootup
|
|
operations. This is useful for identifying long delays
|
|
in kernel startup.
|
|
|
|
|
|
config MAGIC_SYSRQ
|
|
bool "Magic SysRq key"
|
|
depends on !UML
|
|
help
|
|
If you say Y here, you will have some control over the system even
|
|
if the system crashes for example during kernel debugging (e.g., you
|
|
will be able to flush the buffer cache to disk, reboot the system
|
|
immediately or dump some status information). This is accomplished
|
|
by pressing various keys while holding SysRq (Alt+PrintScreen). It
|
|
also works on a serial console (on PC hardware at least), if you
|
|
send a BREAK and then within 5 seconds a command keypress. The
|
|
keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
|
|
unless you really know what this hack does.
|
|
|
|
config DEBUG_KERNEL
|
|
bool "Kernel debugging"
|
|
help
|
|
Say Y here if you are developing drivers or trying to debug and
|
|
identify kernel problems.
|
|
|
|
config LOG_BUF_SHIFT
|
|
int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" if DEBUG_KERNEL
|
|
range 12 21
|
|
default 17 if S390
|
|
default 16 if X86_NUMAQ || IA64
|
|
default 15 if SMP
|
|
default 14
|
|
help
|
|
Select kernel log buffer size as a power of 2.
|
|
Defaults and Examples:
|
|
17 => 128 KB for S/390
|
|
16 => 64 KB for x86 NUMAQ or IA-64
|
|
15 => 32 KB for SMP
|
|
14 => 16 KB for uniprocessor
|
|
13 => 8 KB
|
|
12 => 4 KB
|
|
|
|
config DETECT_SOFTLOCKUP
|
|
bool "Detect Soft Lockups"
|
|
depends on DEBUG_KERNEL
|
|
default y
|
|
help
|
|
Say Y here to enable the kernel to detect "soft lockups",
|
|
which are bugs that cause the kernel to loop in kernel
|
|
mode for more than 10 seconds, without giving other tasks a
|
|
chance to run.
|
|
|
|
When a soft-lockup is detected, the kernel will print the
|
|
current stack trace (which you should report), but the
|
|
system will stay locked up. This feature has negligible
|
|
overhead.
|
|
|
|
(Note that "hard lockups" are separate type of bugs that
|
|
can be detected via the NMI-watchdog, on platforms that
|
|
support it.)
|
|
|
|
config SCHEDSTATS
|
|
bool "Collect scheduler statistics"
|
|
depends on DEBUG_KERNEL && PROC_FS
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
scheduler and related routines to collect statistics about
|
|
scheduler behavior and provide them in /proc/schedstat. These
|
|
stats may be useful for both tuning and debugging the scheduler
|
|
If you aren't debugging the scheduler or trying to tune a specific
|
|
application, you can say N to avoid the very slight overhead
|
|
this adds.
|
|
|
|
config DEBUG_SLAB
|
|
bool "Debug memory allocations"
|
|
depends on DEBUG_KERNEL && SLAB
|
|
help
|
|
Say Y here to have the kernel do limited verification on memory
|
|
allocation as well as poisoning memory on free to catch use of freed
|
|
memory. This can make kmalloc/kfree-intensive workloads much slower.
|
|
|
|
config DEBUG_SLAB_LEAK
|
|
bool "Memory leak debugging"
|
|
depends on DEBUG_SLAB
|
|
|
|
config DEBUG_PREEMPT
|
|
bool "Debug preemptible kernel"
|
|
depends on DEBUG_KERNEL && PREEMPT
|
|
default y
|
|
help
|
|
If you say Y here then the kernel will use a debug variant of the
|
|
commonly used smp_processor_id() function and will print warnings
|
|
if kernel code uses it in a preemption-unsafe way. Also, the kernel
|
|
will detect preemption count underflows.
|
|
|
|
config DEBUG_MUTEXES
|
|
bool "Mutex debugging, deadlock detection"
|
|
default y
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
This allows mutex semantics violations and mutex related deadlocks
|
|
(lockups) to be detected and reported automatically.
|
|
|
|
config DEBUG_SPINLOCK
|
|
bool "Spinlock debugging"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Say Y here and build SMP to catch missing spinlock initialization
|
|
and certain other kinds of spinlock errors commonly made. This is
|
|
best used in conjunction with the NMI watchdog so that spinlock
|
|
deadlocks are also debuggable.
|
|
|
|
config DEBUG_SPINLOCK_SLEEP
|
|
bool "Sleep-inside-spinlock checking"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here, various routines which may sleep will become very
|
|
noisy if they are called with a spinlock held.
|
|
|
|
config DEBUG_KOBJECT
|
|
bool "kobject debugging"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here, some extra kobject debugging messages will be sent
|
|
to the syslog.
|
|
|
|
config DEBUG_HIGHMEM
|
|
bool "Highmem debugging"
|
|
depends on DEBUG_KERNEL && HIGHMEM
|
|
help
|
|
This options enables addition error checking for high memory systems.
|
|
Disable for production systems.
|
|
|
|
config DEBUG_BUGVERBOSE
|
|
bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EMBEDDED
|
|
depends on BUG
|
|
depends on ARM || ARM26 || M32R || M68K || SPARC32 || SPARC64 || X86_32 || FRV
|
|
default !EMBEDDED
|
|
help
|
|
Say Y here to make BUG() panics output the file name and line number
|
|
of the BUG call as well as the EIP and oops trace. This aids
|
|
debugging but costs about 70-100K of memory.
|
|
|
|
config DEBUG_INFO
|
|
bool "Compile the kernel with debug info"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here the resulting kernel image will include
|
|
debugging info resulting in a larger kernel image.
|
|
Say Y here only if you plan to debug the kernel.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_IOREMAP
|
|
bool "Enable ioremap() debugging"
|
|
depends on DEBUG_KERNEL && PARISC
|
|
help
|
|
Enabling this option will cause the kernel to distinguish between
|
|
ioremapped and physical addresses. It will print a backtrace (at
|
|
most one every 10 seconds), hopefully allowing you to see which
|
|
drivers need work. Fixing all these problems is a prerequisite
|
|
for turning on USE_HPPA_IOREMAP. The warnings are harmless;
|
|
the kernel has enough information to fix the broken drivers
|
|
automatically, but we'd like to make it more efficient by not
|
|
having to do that.
|
|
|
|
config DEBUG_FS
|
|
bool "Debug Filesystem"
|
|
depends on DEBUG_KERNEL && SYSFS
|
|
help
|
|
debugfs is a virtual file system that kernel developers use to put
|
|
debugging files into. Enable this option to be able to read and
|
|
write to these files.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_VM
|
|
bool "Debug VM"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on extended checks in the virtual-memory system
|
|
that may impact performance.
|
|
|
|
If unsure, say N.
|
|
|
|
config FRAME_POINTER
|
|
bool "Compile the kernel with frame pointers"
|
|
depends on DEBUG_KERNEL && (X86 || CRIS || M68K || M68KNOMMU || FRV || UML)
|
|
default y if DEBUG_INFO && UML
|
|
help
|
|
If you say Y here the resulting kernel image will be slightly larger
|
|
and slower, but it might give very useful debugging information on
|
|
some architectures or if you use external debuggers.
|
|
If you don't debug the kernel, you can say N.
|
|
|
|
config UNWIND_INFO
|
|
bool "Compile the kernel with frame unwind information"
|
|
depends on !IA64
|
|
depends on !MODULES || !(MIPS || PARISC || PPC || SUPERH || SPARC64 || V850)
|
|
default DEBUG_KERNEL
|
|
help
|
|
If you say Y here the resulting kernel image will be slightly larger
|
|
but not slower, and it will give very useful debugging information.
|
|
If you don't debug the kernel, you can say N, but we may not be able
|
|
to solve problems without frame unwind information or frame pointers.
|
|
|
|
config FORCED_INLINING
|
|
bool "Force gcc to inline functions marked 'inline'"
|
|
depends on DEBUG_KERNEL
|
|
default y
|
|
help
|
|
This option determines if the kernel forces gcc to inline the functions
|
|
developers have marked 'inline'. Doing so takes away freedom from gcc to
|
|
do what it thinks is best, which is desirable for the gcc 3.x series of
|
|
compilers. The gcc 4.x series have a rewritten inlining algorithm and
|
|
disabling this option will generate a smaller kernel there. Hopefully
|
|
this algorithm is so good that allowing gcc4 to make the decision can
|
|
become the default in the future, until then this option is there to
|
|
test gcc for this.
|
|
|
|
config RCU_TORTURE_TEST
|
|
tristate "torture tests for RCU"
|
|
depends on DEBUG_KERNEL
|
|
default n
|
|
help
|
|
This option provides a kernel module that runs torture tests
|
|
on the RCU infrastructure. The kernel module may be built
|
|
after the fact on the running kernel to be tested, if desired.
|
|
|
|
Say Y here if you want RCU torture tests to start automatically
|
|
at boot time (you probably don't).
|
|
Say M if you want the RCU torture tests to build as a module.
|
|
Say N if you are unsure.
|