CPU 占用率无法达到 100%的问题~ () - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
y3y
V2EX    程序员

CPU 占用率无法达到 100%的问题~ ()

  •  
  •   y3y 2018-04-09 10:41:38 +08:00 6648 次点击
    这是一个创建于 2794 天前的主题,其中的信息可能已经有所发展或是发生改变。
    加密并行处理运算在本地电脑( i5-6400 )上可以达到 100%,在服务器上( e5-2620 16 内核 32 个逻辑处理器)无论增加多少线程都只有 30%~40%。有什么方法可以提高 CPU 利用率吗~
    25 条回复    2018-04-10 11:35:29 +08:00
    vincenttone
        1
    vincenttone  
       2018-04-09 11:03:45 +08:00
    python?
    hmzt
        2
    hmzt  
       2018-04-09 11:05:41 +08:00
    多进程啊,mpi
    dychenyi
        3
    dychenyi  
       2018-04-09 11:07:37 +08:00
    没有真正并行吧,运算里面有锁?
    y3y
        4
    y3y  
    OP
       2018-04-09 11:09:01 +08:00
    @vincenttone 用了 C#的 task 和 parallel,都是上面那个情况诶
    y3y
        5
    y3y  
    OP
       2018-04-09 11:12:38 +08:00
    @dychenyi 就是一个 SM2 的签名,里面应该没锁吧。
    dychenyi
        6
    dychenyi  
       2018-04-09 11:33:50 +08:00
    @y3y 必定有什么不能并行。 写个测试线程,丢个死循环,弄他几十个线程。看看,占用率
    vincenttone
        7
    vincenttone  
       2018-04-09 11:36:12 +08:00
    @y3y 看起来是基于线程池的,如果没有锁的话,会不是是有频繁的 IO 操作呢?
    owenliang
        8
    owenliang  
       2018-04-09 11:41:26 +08:00
    小哥是不是开了节能?
    y3y
        9
    y3y  
    OP
       2018-04-09 11:59:50 +08:00
    @dychenyi @vincenttone 写死循环 CPU 确实可以达到 100%,请问 SM2 签名里椭圆坐标大数运算有什么是会造成死锁或者频繁 IO 操作的吗
    rrfeng
        10
    rrfeng  
       2018-04-09 12:07:27 +08:00 via Android
    无责任瞎猜,这个运算是不是有随机数?可能随机数性能不够...
    vincenttone
        11
    vincenttone  
       2018-04-09 12:08:08 +08:00
    @y3y 就俺就不知道了。。。只是感觉如果 cpu 资源没到 100%,应该是某些逻辑限制了到达 100%的能力,那么可能是因为锁或者其他系统资源的限制,所以如果没有锁的话,会不会是因为系统资源问题,比如 IO。可以看一下机器的资源利用情况。
    vincenttone
        12
    vincenttone  
       2018-04-09 12:10:42 +08:00   1
    @y3y 而且感觉签名算法应该不会包含 IO 操作,很多都是类似于 hash 算法和非对称加密算法?对这块了解的不多。
    y3y
        13
    y3y  
    OP
       2018-04-09 14:17:01 +08:00
    @hmzt 试了你的说 mpi,还是没有解决。还是感谢()
    mengzhuo
        14
    mengzhuo  
       2018-04-09 14:44:29 +08:00
    一般是 CPU 比 IO 快导致的,你试试把源数据放到 ramdisk 里。
    y3y
        15
    y3y  
    OP
       2018-04-09 14:57:01 +08:00
    @mengzhuo 参数都是在程序里写死的,应该和硬盘没有关系吧。
    mengzhuo
        16
    mengzhuo  
       2018-04-09 15:05:18 +08:00
    @y3y #15 有关系,很简单。

    例如一个算法在机器上吞吐量有 8Gb/s,而你的外部存储 IO 只有 200Mb/s,那大部分时间都是 CPU 在等外存读写。
    ( 8GB/s 是 2.4GHz 的 arm64 跑 AES 硬件加密都可以轻易达到,更不用说变态的 x86 架构了……
    y3y
        17
    y3y  
    OP
       2018-04-09 15:17:30 +08:00
    @mengzhuo 谢谢你的回答~不过数据来源都是写死在程序里的变量,没有其他数据来源,程序涉及的运算主要是大数运算和椭圆曲线点乘算法诶!!
    mengzhuo
        18
    mengzhuo  
       2018-04-09 15:21:58 +08:00
    我看 sm2 依赖随机数,楼上有人说了可能是随机数速度跟不上。
    具体可以 strace, 实在不行就 linux perf 看看咯
    y3y
        19
    y3y  
    OP
       2018-04-09 15:37:39 +08:00
    @mengzhuo 谢谢啦 o( ̄ ̄)d
    for4die
        20
    for4die  
       2018-04-09 16:10:27 +08:00 via Android
    我用 cpu 挖坑的时候,用没有超线程的 cpu 可以跑到 100%,有超线程的 cpu 看起来跑不满
    nullen
        21
    nullen  
       2018-04-09 16:46:28 +08:00
    cpu affinity 了解一下。
    nullen
        22
    strong>nullen  
       2018-04-09 16:47:23 +08:00
    @y3y 你这个是在操作生成比特币 or 以太坊钱包吗? 随机数是瓶颈。
    y3y
        23
    y3y  
    OP
       2018-04-09 17:20:59 +08:00
    @nullen 不是哦,SM2 生成签名。
    breeswish
        24
    breeswish  
       2018-04-09 17:30:58 +08:00
    off-cpu 火焰图看一下
    realpg
        25
    realpg  
    PRO
       2018-04-10 11:35:29 +08:00
    @y3y #23
    检查算法
    你只是引用了一个库计算,想要看为啥卡 IO,解析你用的库源代码找 IO 瓶颈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     891 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:12 PVG 05:12 LAX 13:12 JFK 16:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86