我很好奇在Linux中更改上下文需要多less周期。 我特别使用了E5405 Xeon(x64),但我很想看看它与其他平台相比如何。
有一个名叫LMBench的免费应用程序,由Larry McVoy和朋友写的。 它提供了大量的操作系统和硬件基准测试其中一个测试称为lat_ctx,它衡量的是交换机的等待时间。 Google for lmbench并在自己的硬件上检查自己。 它是唯一的方法来获得一个有意义的数字给你。
吉拉德
在执行需要大量上下文切换的事情的同时,在您的机器上运行vmstat 。 它不告诉你实际开关需要多长时间,但它会告诉你每秒有多少个开关。
然后,您必须估计每个时间片执行实际代码的花费,与切换上下文相比。 也许是100:1或者什么的? 我不知道。 1000:1?
我的一台机器现在每秒大概有3000个开关,即每个时间片0.3毫秒。 比例为100:1,这意味着实际开关需要0.003毫秒。
但是,多核心,线程产生执行等等,我不会从这样的猜测得出任何结论:)
我写的代码能够以每秒200k包的速度回显(小)UDP数据包。
这表明,在不超过2.5微秒的情况下,上下文切换是可能的,而实际的上下文切换可能会比这少一些。