不直观的流程运行时间

时间:2015-10-19 12:42:44

标签: c++ c linux multithreading kernel

我测量了Ubuntu上进程的运行时间。该进程有两个线程,即主进程线程和一个子线程,它被主线程杀死并重新生成很多次。它看起来像这样:

main_thread
{
   timer=0;
   loop(N)
   {
     clock_gettime(CLOCK_MONOTONIC, &start)

     spwan_new_thread();
     do_main_thread_work();
     join_child_thread()

     clock_gettime(CLOCK_MONOTONIC, &end)
     time+=end-start
   }

   print time/N
}

new_tread()
{
   do_child_thread_work();
   return;
}

运行时结果表明,此进程在两个内核上运行速度比在三个内核上运行速度快一些。我必须提到我使用相同的系统,我只是禁用或启用核心。

两个核心配置比3核心配置快0.4毫秒,我在每个配置上执行了100次执行,以确保它不仅仅是运气。

为什么会这样? (内核调度程序?)

修改

在2个核心上循环平均执行时间:5.92587毫秒 在3个内核上循环平均执行时间:6.36628 ms

我通过使用/ sys / devices / system / cpu / cpu2 / online

等文件来禁用核心

0 个答案:

没有答案