我有一项任务是用 C 语言为 linux 调度程序设计一个基准测试,更准确地说是“确定底层架构如何处理上下文切换,而无需查看实现的细节。”
根据我在 linux 期刊上找到的一篇文章,我设计了一个基准测试来测量生成进程 (fork/exec) 和创建线程 (fork) 所需的时间。
现在我想用sched_yield指令测试切换进程和线程所花费的时间。我想创建多个线程/进程并让它们都调用 sched_yield。调用 sched_yield 的第一个线程/进程将测量时间并将其除以进程数(我假设所有其他进程在第一个进程恢复执行之前调用 sched_yield)以获得每次上下文切换时间的近似值。
- 这个基准有意义吗?
- 研究不同线程数下每次上下文切换的时间是否有意义,或者它在理论上是恒定的吗?
- 是否有更好的方法来设计基准?
最佳答案
这是一个很好的起点:https://github.com/tsuna/contextswitch
关于linux - linux 调度程序中上下文切换的基准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20891671/