Пример #1
0
	while (!dt_stat_stable(s)) { \
		T_STAT_MEASURE(s) { \
			err = posix_spawn(&pid, args[0], NULL, NULL, args, NULL); \
		} \
		if (err) { \
			T_FAIL("posix_spawn returned %d", err); \
		} \
		waitpid(pid, &status, 0); \
		if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { \
			T_FAIL("Child process of posix_spawn failed to run"); \
		} \
	}

T_DECL(posix_spawn_platform_binary_latency, "posix_spawn platform binary latency", T_META_TYPE_PERF, T_META_CHECK_LEAKS(NO)) {
	{
		dt_stat_time_t s = dt_stat_time_create("time");
		SPAWN_MEASURE_LOOP(s);
		dt_stat_finalize(s);
	}

	{
		dt_stat_thread_cpu_time_t s = dt_stat_thread_cpu_time_create("on-cpu time");
		SPAWN_MEASURE_LOOP(s);
		dt_stat_finalize(s);
	}
}

#define FORK_MEASURE_LOOP(s) \
	pid_t pid; \
	int status; \
	while (!dt_stat_stable(s)) { \
Пример #2
0
}

static void reset_kdebug_trace(void) {
	_sysctl_reset();
}

static void test(const char* test_name, void (^pretest_setup)(void), void (*test)(dt_stat_time_t s)) {
	T_ATEND(reset_kdebug_trace);
	_sysctl_reset();
	_sysctl_setbuf(1000000);
	_sysctl_nowrap(false);
	_sysctl_setup();

	pretest_setup();

	dt_stat_time_t s = dt_stat_time_create("%s", test_name);

	test(s);

	dt_stat_finalize(s);
}

//
// Begin tests...
//

T_DECL(kdebug_trace_baseline_syscall,
       "Test the latency of a syscall while kernel tracing is disabled") {
	test("kdebug_trace_baseline_syscall", ^{ enable_tracing(false); }, loop_getppid);
}