From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752753AbcAVMPx (ORCPT ); Fri, 22 Jan 2016 07:15:53 -0500 Received: from szxga03-in.huawei.com ([119.145.14.66]:31731 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753434AbcAVMPb (ORCPT ); Fri, 22 Jan 2016 07:15:31 -0500 From: Wang Nan To: , , CC: , Wang Nan , He Kuang , Alexei Starovoitov , "Arnaldo Carvalho de Melo" , Brendan Gregg , "Jiri Olsa" , Masami Hiramatsu , Namhyung Kim , Zefan Li , Subject: [PATCH 0/6] perf core: Read from overwrite ring buffer Date: Fri, 22 Jan 2016 12:13:48 +0000 Message-ID: <1453464834-233200-1-git-send-email-wangnan0@huawei.com> X-Mailer: git-send-email 1.8.3.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.107.193.248] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020205.56A21D16.005B,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 53e9e9adce75b23109d3d3bd86ad2420 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is v2 of this series. Compare with v1: Fixes several bugs in v1. Corresponsing perf has finished and can be found from: https://git.kernel.org/cgit/linux/kernel/git/pi3orama/linux.git/ branch: perf/overwrite-benchmark Some benchmarking results can be found from [1]. Summary: On a PC with Intel E5-2640 0 @ 2.50GHz CPU, execute close(-1) 3000000 times, capture raw_syscalls:* with perf into overwrite ring buffer, check total time (in us): MEAN STDVAR BASE : 879870.81 11913.13 RAWPERF : 2603854.7 706658.4 WRTBKWRD : 2313301.220 6727.957 TAILSIZE : 2383051.860 5248.061 RAWOVWRT : 2315273.180 5221.025 RAWOVWRT*: 2323970.45 5103.39 Where: BASE: don't use perf at all. RAWPERF: use non-overwrite ring buffer, perf collects all data, write to /dev/null WRTBKWRD: Use backward writing ring buffer, write from tail to head, never wakeup perf, collect data when exiting. TAILSIZE: Use tailsize ring buffer, pad 8 bytes for the size of the record for each event, never wakeup perf, collect data when exiting. RAWOVWRT: Use raw overwrite ring buffer, never wakeup perf, don't collect data at all. RAWOVWRT*: Same as RAWOVWRT, without this patchset. The benchmarking results shows WRTBKWRD is good enough. I suggest not to implement TAILSIZE and tail-header ring buffer. I will post the result on a smartphone next week. [1] http://lkml.kernel.org/g/56A07FF3.2090009@huawei.com Wang Nan (6): perf core: Introduce new ioctl options to pause and resume ring buffer perf core: Set event's default overflow_handler perf core: Prepare writing into ring buffer from end perf core: Add backward attribute to perf event perf core: Reduce perf event output overhead by setting overwrite handler perf core: Put size of a sample at the end of it by PERF_SAMPLE_TAILSIZE include/linux/perf_event.h | 39 +++++++--- include/uapi/linux/perf_event.h | 7 +- kernel/events/core.c | 155 +++++++++++++++++++++++++++++++--------- kernel/events/internal.h | 11 +++ kernel/events/ring_buffer.c | 70 +++++++++++++++--- 5 files changed, 228 insertions(+), 54 deletions(-) Signed-off-by: Wang Nan Cc: He Kuang Cc: Alexei Starovoitov Cc: Arnaldo Carvalho de Melo Cc: Brendan Gregg Cc: Jiri Olsa Cc: Masami Hiramatsu Cc: Namhyung Kim Cc: Peter Zijlstra Cc: Zefan Li Cc: pi3orama@163.com -- 1.8.3.4