Messages in this thread | | | Subject | Re: [PATCH] perf, core: rate limit perf_sched_events jump_label patching | From | Peter Zijlstra <> | Date | Mon, 28 Nov 2011 12:18:28 +0100 |
| |
On Sun, 2011-11-27 at 17:59 +0200, Gleb Natapov wrote: > jump_lable patching is very expensive operation that involves pausing all > cpus. The patching of perf_sched_events jump_label is easily controllable > from userspace by unprivileged user. When user runs loop like this > "while true; do perf stat -e cycles true; done" the performance of my > test application that just increments a counter for one second drops by > 4%. This is on a 16 cpu box with my test application using only one of > them. An impact on a real server doing real work will be much worse. > Performance of KVM PMU drops nearly 50% due to jump_lable for "perf > record" since KVM PMU implementation creates and destroys perf event > frequently. > > This patch introduce the way to rate limit jump_label patching and uses > it to fix above problem. I believe that as jump_label use will spread > the problem will become more common and thus solving it in a generic > code is appropriate. Also fixing it in a perf code will result in moving > jump_label accounting logic to perf code with all the ifdefs in case > of JUMP_LABEL=n kernel. With this patch all details are nicely hidden > inside jump_label code.
Looks good, thanks!
Should appear in:
git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/core
at some point in the not too distant future.
| |