Java程序如何在CPU之间划分(在多CPU系统中)

时间:2010-06-29 14:55:28

标签: java multithreading cpu-usage

我在具有16个CPU的系统上启动Java my Java应用程序,但主要是在第一个CPU上加载。 这是正常的吗?如果没有,我该如何修复它?

top - 18:40:52 up 42 days, 22:18,  2 users,  load average: 8.36, 11.87, 15.61
Tasks: 214 total,   2 running, 212 sleeping,   0 stopped,   0 zombie
Cpu0  : 42.3%us,  1.7%sy,  0.0%ni, 52.0%id,  0.0%wa,  0.0%hi,  4.0%si,  0.0%st
Cpu1  :  6.3%us,  0.7%sy,  0.0%ni, 63.8%id, 29.2%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 13.0%us,  0.7%sy,  0.0%ni, 63.2%id, 23.1%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  6.6%us,  1.0%sy,  0.0%ni, 66.9%id, 25.5%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  : 14.7%us,  0.3%sy,  0.0%ni, 61.3%id, 23.7%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  7.0%us,  1.0%sy,  0.0%ni, 66.4%id, 25.6%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  : 15.3%us,  0.7%sy,  0.0%ni, 61.1%id, 22.9%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  6.0%us,  1.7%sy,  0.0%ni, 52.5%id, 39.9%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu8  : 33.2%us,  1.0%sy,  0.0%ni, 46.5%id, 19.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu9  :  6.0%us,  1.0%sy,  0.0%ni, 67.0%id, 26.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu10 : 12.3%us,  0.3%sy,  0.0%ni, 62.0%id, 25.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu11 :  6.6%us,  1.0%sy,  0.0%ni, 73.4%id, 18.9%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu12 : 15.9%us,  0.7%sy,  0.0%ni, 60.8%id, 22.6%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu13 :  8.0%us,  1.0%sy,  0.0%ni, 61.8%id, 29.2%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu14 : 10.6%us,  0.3%sy,  0.0%ni, 65.9%id, 23.2%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu15 :  3.0%us,  1.0%sy,  0.0%ni, 70.4%id, 25.6%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4037612k total,  4020856k used,    16756k free,    13164k buffers
Swap:  5859064k total,      260k used,  5858804k free,  2275596k cached

谢谢!

2 个答案:

答案 0 :(得分:2)

您的应用程序是否是单线程的?如果是这样,您将需要重新设计应用程序以使用额外的CPU。

答案 1 :(得分:0)

其他CPU的%wa值非常高,这可能表明某些磁盘访问或类似问题是瓶颈。您需要提供有关您的应用程序的更多详细信息...