On Fri, Jan 22, 2016 at 12:13:48PM +0000, Wang Nan wrote: > 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.
yes. just drop patch 6. > I will post the result on a smartphone next week. great. would be interesting comparison. overall I think it looks good.