Messages in this thread | | | From | Masami Hiramatsu <> | Subject | [PATCH -tip v2 0/5] kprobes: batch (un)optimization support | Date | Tue, 18 May 2010 16:12:44 -0400 |
| |
Hi,
Here is the 2nd version of batch optimizing patch series.
Since current kprobes jump optimization calls stop_machine() for each probe, it can make a lot latency noise when (un)registering a lot of probes (~1000) at once. For example, on 4 core Xeon, 256 probes optimization takes 770us in average (max 3.3ms). This patch series introduces batch (un)optimization which modifies code with just one stop_machine(), and it improves optimization time to 90us in average (max 330us).
- Introduce text_poke_smp_batch() which modifies multiple codes with one stop_machine(). - Limit how many probes can be (un)optimized at once. - Introduce delayed unoptimization for batch processing.
text_poke_smp_batch() also helps Jason's Jump label to reduce its overhead coming from text_poke_smp().
Changes in v2: - Add kprobes selftest bugfix patch. - Add some comments about locks according to Mathieu's comment. - Allocate working buffers when initializing kprobes, instead of using static arraies. - Merge max optimization limit patch into batch optimizing patch.
Thank you,
---
Masami Hiramatsu (5): kprobes: Support delayed unoptimization kprobes/x86: Use text_poke_smp_batch x86: Introduce text_poke_smp_batch() for batch-code modifying [CLEANUP] kprobes: Remove redundant text_mutex lock in optimize [BUGFIX] kprobes: Fix selftest to clear flags field for reusing probes
arch/x86/include/asm/alternative.h | 7 + arch/x86/include/asm/kprobes.h | 4 arch/x86/kernel/alternative.c | 49 +++- arch/x86/kernel/kprobes.c | 114 +++++++++ include/linux/kprobes.h | 4 kernel/kprobes.c | 442 ++++++++++++++++++++++++------------ kernel/test_kprobes.c | 12 + 7 files changed, 464 insertions(+), 168 deletions(-)
-- Masami Hiramatsu e-mail: mhiramat@redhat.com
| |