diff options
Diffstat (limited to 'arch/Kconfig')
-rw-r--r-- | arch/Kconfig | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index 4f55c736be11..5b448a74d0f7 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
@@ -47,18 +47,29 @@ config KPROBES | |||
47 | If in doubt, say "N". | 47 | If in doubt, say "N". |
48 | 48 | ||
49 | config JUMP_LABEL | 49 | config JUMP_LABEL |
50 | bool "Optimize trace point call sites" | 50 | bool "Optimize very unlikely/likely branches" |
51 | depends on HAVE_ARCH_JUMP_LABEL | 51 | depends on HAVE_ARCH_JUMP_LABEL |
52 | help | 52 | help |
53 | This option enables a transparent branch optimization that | ||
54 | makes certain almost-always-true or almost-always-false branch | ||
55 | conditions even cheaper to execute within the kernel. | ||
56 | |||
57 | Certain performance-sensitive kernel code, such as trace points, | ||
58 | scheduler functionality, networking code and KVM have such | ||
59 | branches and include support for this optimization technique. | ||
60 | |||
53 | If it is detected that the compiler has support for "asm goto", | 61 | If it is detected that the compiler has support for "asm goto", |
54 | the kernel will compile trace point locations with just a | 62 | the kernel will compile such branches with just a nop |
55 | nop instruction. When trace points are enabled, the nop will | 63 | instruction. When the condition flag is toggled to true, the |
56 | be converted to a jump to the trace function. This technique | 64 | nop will be converted to a jump instruction to execute the |
57 | lowers overhead and stress on the branch prediction of the | 65 | conditional block of instructions. |
58 | processor. | 66 | |
59 | 67 | This technique lowers overhead and stress on the branch prediction | |
60 | On i386, options added to the compiler flags may increase | 68 | of the processor and generally makes the kernel faster. The update |
61 | the size of the kernel slightly. | 69 | of the condition is slower, but those are always very rare. |
70 | |||
71 | ( On 32-bit x86, the necessary options added to the compiler | ||
72 | flags may increase the size of the kernel slightly. ) | ||
62 | 73 | ||
63 | config OPTPROBES | 74 | config OPTPROBES |
64 | def_bool y | 75 | def_bool y |