Commit 0574ea42 authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt

ring-buffer: only periodically call cond_resched to ring-buffer-benchmark

Calling cond_resched at every iteration of the loop adds a bit of
overhead to the benchmark.

This patch does two things.

1) only calls cond-resched when CONFIG_PREEMPT is not enabled
2) only calls cond-resched after so many traces has been performed.

[ Impact: less overhead to the ring-buffer-benchmark ]
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 65b77242
...@@ -218,16 +218,23 @@ static void ring_buffer_producer(void) ...@@ -218,16 +218,23 @@ static void ring_buffer_producer(void)
} }
do_gettimeofday(&end_tv); do_gettimeofday(&end_tv);
if (consumer && !(++cnt % wakeup_interval)) cnt++;
if (consumer && !(cnt % wakeup_interval))
wake_up_process(consumer); wake_up_process(consumer);
#ifndef CONFIG_PREEMPT
/* /*
* If we are a non preempt kernel, the 10 second run will * If we are a non preempt kernel, the 10 second run will
* stop everything while it runs. Instead, we will call * stop everything while it runs. Instead, we will call
* cond_resched and also add any time that was lost by a * cond_resched and also add any time that was lost by a
* rescedule. * rescedule.
*
* Do a cond resched at the same frequency we would wake up
* the reader.
*/ */
cond_resched(); if (cnt % wakeup_interval)
cond_resched();
#endif
} while (end_tv.tv_sec < (start_tv.tv_sec + RUN_TIME) && !kill_test); } while (end_tv.tv_sec < (start_tv.tv_sec + RUN_TIME) && !kill_test);
pr_info("End ring buffer hammer\n"); pr_info("End ring buffer hammer\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment