From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12698 invoked by alias); 18 May 2010 20:07:29 -0000 Received: (qmail 12687 invoked by uid 22791); 18 May 2010 20:07:28 -0000 X-SWARE-Spam-Status: No, hits=-5.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 18 May 2010 20:07:22 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o4IK7Jdk022281 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 18 May 2010 16:07:19 -0400 Received: from localhost6.localdomain6 (dhcp-100-3-156.bos.redhat.com [10.16.3.156]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o4IK7Hwo016733; Tue, 18 May 2010 16:07:17 -0400 From: Masami Hiramatsu Subject: [PATCH -tip v2 0/5] kprobes: batch (un)optimization support To: Ingo Molnar , lkml Cc: Ananth N Mavinakayanahalli , Ingo Molnar , Jim Keniston , Jason Baron , Mathieu Desnoyers , systemtap, DLE Date: Tue, 18 May 2010 20:08:00 -0000 Message-ID: <20100518201244.6058.73083.stgit@localhost6.localdomain6> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2010-q2/txt/msg00377.txt.bz2 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