Linux 下多核 CPU 跑多线程的问题

2017-08-17 12:12:33 +08:00
 ZhaoBryant

现在应用场景如下:

一个 B/S 系统,用户提交请求到服务端( Linux, websphere, jdk1.4 )后,服务器开始进行计算处理,计算处理过程使用多线程实现。服务器使用的是多核 CPU ( 4 核),但是在实际测试中发现,尽管线程数已经调到很高(大于 40 个线程),但是仅仅只有 1 个 CPU 核被使用,使用率为 60%,其他 CPU 核的使用率均为 0%。

请问,如何做才能让多线程完全跑满 4 个 CPU 核??

还望大家不吝赐教,感激不尽!

4026 次点击
所在节点    Linux
11 条回复
snail1988
2017-08-17 12:24:43 +08:00
什么语言写的服务?如果是 Python 之类的,因为 GIL 的存在,多线程并不能并行,也只能利用一个核心
hjc4869
2017-08-17 12:30:13 +08:00
@snail1988 楼主都说了 JDK,Websphere ……
snail1988
2017-08-17 12:32:26 +08:00
@hjc4869 sorry 没看仔细,websphere 没用过,不了解了
上面的回答请楼主忽略
wwqgtxx
2017-08-17 12:33:02 +08:00
估计是什么地方上了个全局锁吧
kaneg
2017-08-17 13:31:14 +08:00
十几年前的 jdk1.4, 那个时候还没有多核的概念,所以 jvm 估计不能把多线程分配到多核。
wekw
2017-08-17 13:36:53 +08:00
1.4 好古老呀…
wayslog
2017-08-17 13:48:40 +08:00
1.4.。。。。
ixiaohei
2017-08-17 13:58:58 +08:00
先升级 jdk 试试吧
zhuyie
2017-08-17 14:17:51 +08:00
查查是否设置了 CPU 亲和性,将进程绑到某一个 CPU 核上了。
dbow
2017-08-17 14:22:50 +08:00
ZhaoBryant
2017-08-17 18:42:14 +08:00
好的,谢谢各位,我先升级一下 jdk 版本,再试试!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/383636

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX