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

2018-04-09 10:41:38 +08:00
 y3y
加密并行处理运算在本地电脑( i5-6400 )上可以达到 100%,在服务器上( e5-2620 16 内核 32 个逻辑处理器)无论增加多少线程都只有 30%~40%。有什么方法可以提高 CPU 利用率吗~
6006 次点击
所在节点    程序员
25 条回复
vincenttone
2018-04-09 11:03:45 +08:00
python?
hmzt
2018-04-09 11:05:41 +08:00
多进程啊,mpi
dychenyi
2018-04-09 11:07:37 +08:00
没有真正并行吧,运算里面有锁?
y3y
2018-04-09 11:09:01 +08:00
@vincenttone 用了 C#的 task 和 parallel,都是上面那个情况诶
y3y
2018-04-09 11:12:38 +08:00
@dychenyi 就是一个 SM2 的签名,里面应该没锁吧。
dychenyi
2018-04-09 11:33:50 +08:00
@y3y 必定有什么不能并行。 写个测试线程,丢个死循环,弄他几十个线程。看看,占用率
vincenttone
2018-04-09 11:36:12 +08:00
@y3y 看起来是基于线程池的,如果没有锁的话,会不是是有频繁的 IO 操作呢?
owenliang
2018-04-09 11:41:26 +08:00
小哥是不是开了节能?
y3y
2018-04-09 11:59:50 +08:00
@dychenyi @vincenttone 写死循环 CPU 确实可以达到 100%,请问 SM2 签名里椭圆坐标大数运算有什么是会造成死锁或者频繁 IO 操作的吗
rrfeng
2018-04-09 12:07:27 +08:00
无责任瞎猜,这个运算是不是有随机数?可能随机数性能不够...
vincenttone
2018-04-09 12:08:08 +08:00
@y3y 就俺就不知道了。。。只是感觉如果 cpu 资源没到 100%,应该是某些逻辑限制了到达 100%的能力,那么可能是因为锁或者其他系统资源的限制,所以如果没有锁的话,会不会是因为系统资源问题,比如 IO。可以看一下机器的资源利用情况。
vincenttone
2018-04-09 12:10:42 +08:00
@y3y 而且感觉签名算法应该不会包含 IO 操作,很多都是类似于 hash 算法和非对称加密算法?对这块了解的不多。
y3y
2018-04-09 14:17:01 +08:00
@hmzt 试了你的说 mpi,还是没有解决。还是感谢(๑•ᴗ•๑)
mengzhuo
2018-04-09 14:44:29 +08:00
一般是 CPU 比 IO 快导致的,你试试把源数据放到 ramdisk 里。
y3y
2018-04-09 14:57:01 +08:00
@mengzhuo 参数都是在程序里写死的,应该和硬盘没有关系吧。
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
2018-04-09 15:17:30 +08:00
@mengzhuo 谢谢你的回答~不过数据来源都是写死在程序里的变量,没有其他数据来源,程序涉及的运算主要是大数运算和椭圆曲线点乘算法诶!!
mengzhuo
2018-04-09 15:21:58 +08:00
我看 sm2 依赖随机数,楼上有人说了可能是随机数速度跟不上。
具体可以 strace, 实在不行就 linux perf 看看咯
y3y
2018-04-09 15:37:39 +08:00
@mengzhuo 谢谢啦 o( ̄▽ ̄)d
for4die
2018-04-09 16:10:27 +08:00
我用 cpu 挖坑的时候,用没有超线程的 cpu 可以跑到 100%,有超线程的 cpu 看起来跑不满

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

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

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

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

© 2021 V2EX