Linux中的上下文切换需要多长时间?

4

我很好奇在Linux中切换上下文需要多少个周期。 我特别使用的是E5405 Xeon(x64),但我也想看看它与其他平台相比如何。

3个回答

8

有一个免费的应用程序叫做LMBench,由Larry McVoy和他的朋友编写。它提供了一堆操作系统和硬件基准测试。

其中一个测试被称为lat_ctx,它测量上下文切换延迟。

在Google上搜索lmbench并在自己的硬件上检查,这是获得对你有意义的数字的唯一方法。

Gilad


读者应该注意,LMBench需要安装非免费软件BitKeeper。 - Shantanu Kumar
@ShantanuKumar,那简直是不正确的:http://www.bitmover.com/lmbench/get_lmbench.html - gby
当我尝试运行LMBench时,我一直遇到以下错误: “make [1]:进入目录/home/shantanu/app/src/lmbench3/src' make [1]:***没有规则可以制作目标../SCCS/s.ChangeSet',需要bk.ver'。 停止。 make [1]:离开目录/home/shantanu/app/src/lmbench3/src' make:*** [lmbench] 错误2” 这让我想到了什么。 - Shantanu Kumar
编写LMbench的人是许多年后创建BitKeeper的同一批人,但这只是一个构建失败,而不是对BitKeeper的依赖。 - gby
我承认我的错误。然而,我还没有让LMBench工作起来。如果有人知道,请告诉我。 - Shantanu Kumar
1
@Shantanu Kumar - 你可能已经解决了,但是你可以使用touch命令创建“缺失”的文件,这样代码就能构建了。 - RichardBruce

3
在需要大量上下文切换的情况下在计算机上运行vmstat命令。它不能告诉你实际切换所需的时间,但它会告诉你每秒钟进行多少次切换。
然后,您必须估计每个时间片花费多少时间执行实际代码,相比之下上下文切换。也许是100:1或其他数字?我不知道。1000:1?
我的一台机器现在大约每秒进行3000次切换,即每个时间片需要0.3毫秒。如果比率为100:1,则实际切换需要0.003毫秒。
但是,由于有多个核心、线程让出执行等等,我不会从这样的猜测中得出任何结论 :)

-1
我已经编写了能够以每秒200,000个数据包的速度回显(小型)UDP数据包的代码。
这表明在不超过2.5微秒的时间内可能进行上下文切换,实际上下文切换所需的时间可能会更短。

1
你确定你正在切换上下文,而不是一次从操作系统获取多个UDP数据包吗? - Judge Maygarden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接