我正在运行一些使用2个线程的控制台程序 - main和worker。主线程启动worker,等待用户输入(“按ENTER退出”),然后终止worker并退出。工作线程100%的时间处理数据。
如果从本地终端控制台运行该程序,则一切正常:
./MyProg
但如果以CPU亲和力和更高的优先级运行它会变得很奇怪:
taskset -c 8 chrt -r 20 ./MyProg
在这种情况下,终端的响应速度会明显降低,并且在一段时间(2-3分钟)后最终会挂起(停止更新屏幕并按下按键)。我的程序没有挂起,它继续正确处理数据,由于无法对用户键盘输入做出反应而无法退出。此外,没有任何其他程序在运行(除了少数终端实例)。
另一个令人尴尬的事情是所有(运行和新开的)终端都开始遇到同样的问题。同时Gnome GUI没有!它完美无瑕地工作,打开任何菜单/对话框/ GUI程序,没有任何明显的延迟。
所以问题是:
使用的分配是CentOS 6 x64,uname -a
结果是:
Linux leopard 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux
CPU是Intel Xeon,逻辑核心数是12。