Archive

Archive for January, 2020

测量context switch的时间

January 9th, 2020 No comments

一时间突然想到了想要测量一下context switch的时间. 于是写了一个小代码来看看机器上最简单的context switch耗时是多少.

首先准备一个leader和一个follower. 他们两个互相唤醒对方. 也就是leader->follower->leader然后一直这么循环下去.

  void runAsLeader(int count) {
    for(int loop = 0; loop < count; loop++) {
      mOther->notify();
      wait();
    }
  }

  void runAsFollower(int count) {
    for(int loop = 0; loop < count; loop++) {
      wait();
      mOther->notify();
    }
  }

剩下的就很简单了. 分别为leader和follower启动线程, 然后就按照设定的count一直跑下去. 最后测量一下运行时间. 完整的代码放在这里

在我自己的机器上跑出来的结果如下, 不过avg的时间表示的从leader到follower在回到leader. 所以单次线程切换的时间还需要除以2

17227437 micro seconds, run count 50000000
avg:0.344549

Categories: programming Tags: