start /affinity指定到第几个vCPU跑openssl speed来测试单个vCPU性能
在https://slproweb.com/products/Win32OpenSSL.html下载openssl
我下载的Win64OpenSSL-3_0_1.exe
https://slproweb.com/download/Win64OpenSSL-3_0_1.exe
这里要说明下,Windows版的openssl貌似没有多线程参数-multi(linux版的openssl有没有-multi参数你可以验证下)
安装openssl的时候全部默认的下一步 → 下一步 → ... → 直到完成,也可以试试用chocolatey安装openssl(先访问chocolatey,安装上chocolatey,然后执行choco install OpenSSL -y)
以16vCPU机器为例,执行(Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors显示16
[CPU15, CPU14, CPU13, CPU12, CPU11, CPU10, CPU9, CPU8, CPU7, CPU6, CPU5, CPU4, CPU3, CPU2, CPU1, CPU0]
start /affinity 0xffff cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed rsa -multi 16 2>&1 1>c:log.txt"
这句命令是16个vCPU跑16线程执行命令openssl.exe speed rsa -multi 16 ,正好1个vCPU跑1个线程
参考https://stackoverflow.com/questions/19187241/change-affinity-of-process-with-windows-script
在CPU0跑程序(第1个vCPU)
0000,0000,0000,0001
start /affinity 0x1 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU1跑程序(第2个vCPU)
0000,0000,0000,0010
start /affinity 0x2 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU2跑程序(第3个vCPU)
0000,0000,0000,0100
start /affinity 0x4 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU3跑程序(第4个vCPU)
0000,0000,0000,1000
start /affinity 0x8 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU4跑程序(第5个vCPU)
0000,0000,0001,0000
start /affinity 0xf cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU5跑程序(第6个vCPU)
0000,0000,0010,0000
start /affinity 0x20 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU6跑程序(第7个vCPU)
0000,0000,0100,0000
start /affinity 0x40 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU7跑程序(第8个vCPU)
0000,0000,1000,0000
start /affinity 0x80 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU8跑程序(第9个vCPU)
0000,0001,0000,0000
start /affinity 0x100 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU9跑程序(第10个vCPU)
0000,0010,0000,0000
start /affinity 0x200 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU10跑程序(第11个vCPU)
0000,0100,0000,0000
start /affinity 0x400 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU11跑程序(第12个vCPU)
0000,1000,0000,0000
start /affinity 0x800 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU12跑程序(第13个vCPU)
0001,0000,0000,0000
start /affinity 0x1000 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU13跑程序(第14个vCPU)
0010,0000,0000,0000
start /affinity 0x2000 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU14跑程序(第15个vCPU)
0100,0000,0000,0000
start /affinity 0x4000 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
在CPU15跑程序(第16个vCPU)
1000,0000,0000,0000
start /affinity 0x8000 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
不加/node、加/node 、加/b、重定向、
1、不加/node、不加/b
start /affinity 0x1 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
这句命令是在第1个逻辑处理器(vCPU0)上执行程序
不加/node是因为只有一颗CPU,所以不用加/node,当然也可以加/node 0
加/b是在后台隐藏运行(直接在当前cmd窗口显示,不会新开窗口),不加/b是在前台不隐藏运行(会新开一个cmd窗口)
2、加/node,如果有多颗CPU,需要加/node
start /node 0 /affinity 0x2 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
这句命令是在第1颗CPU(node0)的第2个逻辑处理(vCPU1)器上执行程序
3、加/node、加/b
不加/node是因为只有一颗CPU,所以不用加/node,当然也可以加/node 0
加/b是在后台隐藏运行,不加/b是在前台不隐藏运行
start /b /node 0 /affinity 0x4 cmd /c "c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt"
这句命令是在第3个逻辑处理器(vCPU2)上执行程序
4、注意尽量不要在powershell里执行openssl.exe,因为2>&1 1>c:log.txt有报错
同样的命令c:progra~1OpenSSL-Win64inopenssl.exe speed sha512,在powershell里执行和在cmd里执行,输出是一样的,但是重定向的结果是不一样的
[没有重定向]
powershell,没有重定向,不报错
cmd,没有重定向,不报错
[重定向]
c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>&1 1>c:log.txt
powershell,重定向,报错
cmd,重定向,不报错
5、加和不加/wait的区别
start /wait /b /node 0 /affinity 0x1 cmd /c "echo.>c:stdall.txt 2>$nul & echo.>c:stderr.txt 2>$nul & echo.>c:stdout.txt 2>$nul & mkdir -p c:std 2>$nul & c:progra~1OpenSSL-Win64inopenssl.exe speed sha512 2>c:stderr.txt 1>c:stdout.txt & type c:std*.txt > c:stdall.txt"
notepad c:stdall.txt
加/wait是等待第一行命令执行结束后才会执行第2行,否则第一行命令会在后台并行运行然后马上执行第2行,这样一来,第一行命令的结果还没有生成,第2行命令又是看第一行命令的结果的,所以看到的结果肯定不符合预期。所以,如果是多行命令,要加/wait
相关文章
- 神经网络中 BP 算法的原理与 Python 实现源码解析
- 挨踢部落故事汇(15):不断拓新成为科技大潮中的弄潮儿
- 面向Python语言的三大顶级机器学习库
- TensorFlow 1.0:在智能手机端解锁机器学习
- 学习Python:做数据科学还是网站开发?
- flowable异步任务加锁流程
- Teradata天睿公司在业内率先将DevOps扩展至数据仓库
- 时延检测利器-uftrace
- 八个 Python 数据生态圈的前沿项目
- 数据科学家必知的7款Python工具
- 十种程序语言帮你读懂大数据的“秘密”
- Spark多语言编程实践
- 别老扯什么Hadoop了,你的数据根本不够大
- 红帽LINUX 5下安装Hadoop 2.0.0-alpha
- Hadoop0.20更新笔记
- 我们一起分析下BL(B)/LDR指令
- Hadoop入门经典
- 手把手教你用Pycharm连接远程Python环境
- 鸿蒙移植树莓派(上)搭建环境下载源码
- 微软:Microsoft Defender 将默认全自动执行补救措施