1
vincenttone 2018-04-09 11:03:45 +08:00
python?
|
2
hmzt 2018-04-09 11:05:41 +08:00
多进程啊,mpi
|
3
dychenyi 2018-04-09 11:07:37 +08:00
没有真正并行吧,运算里面有锁?
|
4
y3y OP @vincenttone 用了 C#的 task 和 parallel,都是上面那个情况诶
|
7
vincenttone 2018-04-09 11:36:12 +08:00
@y3y 看起来是基于线程池的,如果没有锁的话,会不是是有频繁的 IO 操作呢?
|
8
owenliang 2018-04-09 11:41:26 +08:00
小哥是不是开了节能?
|
9
y3y OP @dychenyi @vincenttone 写死循环 CPU 确实可以达到 100%,请问 SM2 签名里椭圆坐标大数运算有什么是会造成死锁或者频繁 IO 操作的吗
|
10
rrfeng 2018-04-09 12:07:27 +08:00 via Android
无责任瞎猜,这个运算是不是有随机数?可能随机数性能不够...
|
11
vincenttone 2018-04-09 12:08:08 +08:00
@y3y 就俺就不知道了。。。只是感觉如果 cpu 资源没到 100%,应该是某些逻辑限制了到达 100%的能力,那么可能是因为锁或者其他系统资源的限制,所以如果没有锁的话,会不会是因为系统资源问题,比如 IO。可以看一下机器的资源利用情况。
|
12
vincenttone 2018-04-09 12:10:42 +08:00 1
@y3y 而且感觉签名算法应该不会包含 IO 操作,很多都是类似于 hash 算法和非对称加密算法?对这块了解的不多。
|
14
mengzhuo 2018-04-09 14:44:29 +08:00
一般是 CPU 比 IO 快导致的,你试试把源数据放到 ramdisk 里。
|
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 架构了…… |
17
y3y OP @mengzhuo 谢谢你的回答~不过数据来源都是写死在程序里的变量,没有其他数据来源,程序涉及的运算主要是大数运算和椭圆曲线点乘算法诶!!
|
18
mengzhuo 2018-04-09 15:21:58 +08:00
我看 sm2 依赖随机数,楼上有人说了可能是随机数速度跟不上。
具体可以 strace, 实在不行就 linux perf 看看咯 |
20
for4die 2018-04-09 16:10:27 +08:00 via Android
我用 cpu 挖坑的时候,用没有超线程的 cpu 可以跑到 100%,有超线程的 cpu 看起来跑不满
|
21
nullen 2018-04-09 16:46:28 +08:00
cpu affinity 了解一下。
|
24
breeswish 2018-04-09 17:30:58 +08:00
off-cpu 火焰图看一下
|