Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -218,16 +218,23 @@ static void ring_buffer_producer(void)
		}
		do_gettimeofday(&end_tv);

		if (consumer && !(++cnt % wakeup_interval))
		cnt++;
		if (consumer && !(cnt % wakeup_interval))
			wake_up_process(consumer);

#ifndef CONFIG_PREEMPT
		/*
		 * If we are a non preempt kernel, the 10 second run will
		 * stop everything while it runs. Instead, we will call
		 * cond_resched and also add any time that was lost by a
		 * rescedule.
		 *
		 * Do a cond resched at the same frequency we would wake up
		 * the reader.
		 */
		if (cnt % wakeup_interval)
			cond_resched();
#endif

	} while (end_tv.tv_sec < (start_tv.tv_sec + RUN_TIME) && !kill_test);
	pr_info("End ring buffer hammer\n");