我知道taskset可以用来强制进程在特定的cpu上运行。
我如何强制tomcat在特定的CPU上运行?
然后我想在单独的CPU上运行apache bench。
更新
我赞赏你的build议,不要这样做,但我真的在寻找如何做到这一点:)
这篇文章显示了: http : //mailinator.blogspot.com/2010/02/how-i-sped-up-my-server-by-factor-of-6.html
只是有点困惑,你怎么知道哪个CPU,它是基于hex?
大卫向你展示了火箭筒在哪里,但如果你使用它,你几乎肯定会在脚下射击自己(见我的评论)。
一般来说,你应该接受你并不比任务调度程序更聪明 – 许多非常聪明的人在这方面做了很多工作,他们做了很好的工作,确保把最大计算次数限制在最小量时间。 除非你有非常明确和明确的理由来解决它(例如,“我确切知道内核中发生了什么,为什么,而我希望它做到这一点 ”),你应该相信调度器,让它做它的事情。
请参阅taskset命令。 请注意,这几乎总会对性能产生显着的负面影响。
看来,除非你打算做以下的一个:
制作你自己的任务调度程序。 有apache使用主要将其他人也轮stream使用它。
我会build议只为它获得一个专用的服务器。 缺less对内核的深入修改,或者对于所有使用taskset的系统任务绕过调度器的头痛。
根据taskset的手册页,CPU被指定为位掩码。 所以CPU0是0x01,CPU1是0x02,CPU2是0x04,CPU3是0x08。 如果你想在一个以上的CPU上运行一个进程,你可以把它们加在一起。 (例如,0x03是CPU0和CPU1)