zl程序教程

您现在的位置是:首页 >  Python

当前栏目

start /affinity指定到第几个vCPU跑openssl speed来测试单个vCPU性能

2023-04-18 16:09:04 时间

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