这次我们对加密卡进行性能对比测试,通过在不同场景下,对比BC库软算法以及加密卡的表现,来看加密卡的实际运用情况如何。
调用代码不做任何额外优化,均使用JCE方式来调用相关处理过程。
测试环境:
加密卡:SJK1828 服务器:Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz *2 40线程;32GB内存 |
模拟任务:SM2加签,数据长度4800字节。
实现 | 并发线程数 | 任务总数 | 任务间延迟 | 执行时间(ms) | CPU占用率 | TPS |
BC库软算法 | 1 | 50000 | 0 | 43616 | 3.5% | 1146 |
BC库软算法 | 100 | 50000 | 15 | 8438 | 20% | 5925 |
BC库软算法 | 100 | 100000 | 0 | 8570 | 80% | 11668 |
加密卡 | 1 | 50000 | 0 | 8429 | 2% | 5931 |
加密卡 | 100 | 50000 | 15 | 7744 | 4.7% | 6456 |
加密卡 | 100 | 100000 | 0 | 4860 | 7% | 20576 |
分别用几组模拟任务进行对比。其中CPU占用率为top命令直接观察记录,可能略有偏差,为瞬时值。任务执行前,会进行预热一轮。
通过对比数据,我们可以发现如下几点:
1、单线程下,加密卡性能就可以跑到约6000TPS。而用CPU跑BC库软算法,只能到1100TPS。
2、100线程,带任务间延迟15毫秒,加密卡与BC库软算法,均跑到约6000TPS。但是CPU占用率差别巨大。加密卡场景下,CPU几乎空载。
3、100线程,不带任务间延迟,加密卡跑出20000TPS,BC库软算法抛出12000TPS。但是CPU差距明显,加密卡场景,依然维持CPU空载,而BC库场景下,CPU占用80%,已经几乎满载。
该加密卡标称的SM2的2万TPS得以验证,没有问题的。
另外加密卡对于CPU负载的卸载效果非常好,几乎可以让CPU完全空下来,而且延迟很低。