V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
ZhaoBryant
V2EX  ›  Linux

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

  •  
  •   ZhaoBryant · 2017-08-17 12:12:33 +08:00 · 4049 次点击
    这是一个创建于 2659 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在应用场景如下:

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

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

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

    11 条回复    2017-08-17 18:42:14 +08:00
    snail1988
        1
    snail1988  
       2017-08-17 12:24:43 +08:00
    什么语言写的服务?如果是 Python 之类的,因为 GIL 的存在,多线程并不能并行,也只能利用一个核心
    hjc4869
        2
    hjc4869  
       2017-08-17 12:30:13 +08:00
    @snail1988 楼主都说了 JDK,Websphere ……
    snail1988
        3
    snail1988  
       2017-08-17 12:32:26 +08:00
    @hjc4869 sorry 没看仔细,websphere 没用过,不了解了
    上面的回答请楼主忽略
    wwqgtxx
        4
    wwqgtxx  
       2017-08-17 12:33:02 +08:00 via iPhone
    估计是什么地方上了个全局锁吧
    kaneg
        5
    kaneg  
       2017-08-17 13:31:14 +08:00 via iPhone
    十几年前的 jdk1.4, 那个时候还没有多核的概念,所以 jvm 估计不能把多线程分配到多核。
    wekw
        6
    wekw  
       2017-08-17 13:36:53 +08:00 via Android
    1.4 好古老呀…
    wayslog
        7
    wayslog  
       2017-08-17 13:48:40 +08:00
    1.4.。。。。
    ixiaohei
        8
    ixiaohei  
       2017-08-17 13:58:58 +08:00
    先升级 jdk 试试吧
    zhuyie
        9
    zhuyie  
       2017-08-17 14:17:51 +08:00
    查查是否设置了 CPU 亲和性,将进程绑到某一个 CPU 核上了。
    ZhaoBryant
        11
    ZhaoBryant  
    OP
       2017-08-17 18:42:14 +08:00
    好的,谢谢各位,我先升级一下 jdk 版本,再试试!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1179 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:31 · PVG 02:31 · LAX 10:31 · JFK 13:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.