Skip to content

deps: add loong64 into openssl Makefile and gen openssl(asm) - #59324

Open
shipujin wants to merge 1 commit into
nodejs:mainfrom
shipujin:main
Open

deps: add loong64 into openssl Makefile and gen openssl(asm)#59324
shipujin wants to merge 1 commit into
nodejs:mainfrom
shipujin:main

Conversation

@shipujin

@shipujin shipujin commented Aug 2, 2025

Copy link
Copy Markdown
Member
deps: add loong64 into openssl Makefile and gen openssl(asm)

Thank you, zhoumingtao and liujiahui, for your test on the LoongArch machine, which
can demonstrate the performance improvement of nodejs using openssl-asm.
Thank you

run shell: ./node benchmark/compare.js --old ./out/Release/node \
 --new ./out-asm/Release/node crypto > crypte-benchmark.csv

LoongArch 3C5000-Server
crypto/aes-gcm-throughput.js    8.42%
crypto/keygen.js        54.37%
crypto/oneshot-hash.js  3.41%
crypto/oneshot-sign.js  31.03%
crypto/oneshot-verify.js        21.55%
crypto/randomBytes.js   10.87%
crypto/randomInt.js     4.48%
crypto/randomUUID.js    2.02%
crypto/rsa-encrypt-decrypt-throughput.js        63.27%
crypto/rsa-sign-verify-throughput.js    17.23%
crypto/rsa-sign-verify-throughput.js len='1024'  17.23%

LoongArch 3A6000-PC
crypto/aes-gcm-throughput.js    10.84%
crypto/keygen.js        56.33%
crypto/oneshot-sign.js  31.08%
crypto/oneshot-verify.js        24.38%
crypto/randomBytes.js   21.28%
crypto/randomInt.js     5.58%
crypto/randomUUID.js    6.05%
crypto/rsa-encrypt-decrypt-throughput.js        60.96%
crypto/rsa-sign-verify-throughput.js len='1024'  20.22%

Teted-by: zhoumingtao <zhoumingtao@loongson.cn>
Teted-by: liujiahui <liujiahui@loongson.cn>

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/security-wg

@nodejs-github-bot nodejs-github-bot added dependencies Pull requests that update a dependency file. needs-ci PRs that need a full CI run. openssl Issues and PRs related to the OpenSSL dependency. labels Aug 2, 2025
@shipujin shipujin changed the title deps: add loongarch64 into openssl Makefile and gen openssl-loongarch64(asm) deps: add loong64 into openssl Makefile and gen openssl-loongarch64(asm) Aug 2, 2025
@shipujin shipujin changed the title deps: add loong64 into openssl Makefile and gen openssl-loongarch64(asm) deps: add loong64 into openssl Makefile and gen openssl(asm) Aug 2, 2025
@Xiao-Tao

Xiao-Tao commented Aug 5, 2025

Copy link
Copy Markdown
Contributor

In the TLS benchmark test, performance has also been greatly improved.

node$ ./node_modules/.bin/node-benchmark-compare tls-benchmark.csv 
                                                                                                     confidence improvement accuracy (*)   (**)  (***)
tls/convertprotocols.js n=1                                                                                 ***     -1.93 %       ±0.78% ±1.04% ±1.36%
tls/convertprotocols.js n=50000                                                                                      0.76 %       ±2.31% ±3.07% ±4.00%
tls/secure-pair.js size=100 securing='clear' dur=5                                                                  -0.59 %       ±1.60% ±2.13% ±2.77%
tls/secure-pair.js size=100 securing='TLSSocket' dur=5                                                      ***     12.56 %       ±0.17% ±0.22% ±0.29%
tls/secure-pair.js size=1024 securing='clear' dur=5                                                           *      1.43 %       ±1.34% ±1.78% ±2.32%
tls/secure-pair.js size=1024 securing='TLSSocket' dur=5                                                     ***     13.11 %       ±0.13% ±0.17% ±0.23%
tls/secure-pair.js size=1048576 securing='clear' dur=5                                                              -0.22 %       ±0.50% ±0.67% ±0.87%
tls/secure-pair.js size=1048576 securing='TLSSocket' dur=5                                                  ***     13.23 %       ±0.24% ±0.32% ±0.42%
tls/throughput-c2s.js size=100 type='asc' dur=5                                                             ***     10.89 %       ±0.18% ±0.23% ±0.31%
tls/throughput-c2s.js size=100 type='buf' dur=5                                                             ***     13.12 %       ±0.16% ±0.21% ±0.28%
tls/throughput-c2s.js size=100 type='utf' dur=5                                                             ***     11.11 %       ±0.10% ±0.14% ±0.18%
tls/throughput-c2s.js size=1024 type='asc' dur=5                                                            ***     13.55 %       ±0.14% ±0.19% ±0.24%
tls/throughput-c2s.js size=1024 type='buf' dur=5                                                            ***     13.60 %       ±0.13% ±0.18% ±0.23%
tls/throughput-c2s.js size=1024 type='utf' dur=5                                                            ***     12.87 %       ±0.12% ±0.17% ±0.22%
tls/throughput-c2s.js size=1048576 type='asc' dur=5                                                         ***     13.65 %       ±0.20% ±0.26% ±0.34%
tls/throughput-c2s.js size=1048576 type='buf' dur=5                                                         ***     13.78 %       ±0.20% ±0.27% ±0.35%
tls/throughput-c2s.js size=1048576 type='utf' dur=5                                                         ***     13.60 %       ±0.18% ±0.23% ±0.31%
tls/throughput-c2s.js size=16777216 type='asc' dur=5                                                        ***     14.00 %       ±0.54% ±0.72% ±0.95%
tls/throughput-c2s.js size=16777216 type='buf' dur=5                                                        ***     15.84 %       ±0.20% ±0.26% ±0.34%
tls/throughput-c2s.js size=16777216 type='utf' dur=5                                                        ***     12.93 %       ±0.18% ±0.23% ±0.31%
tls/throughput-c2s.js size=4194304 type='asc' dur=5                                                         ***     13.58 %       ±0.11% ±0.15% ±0.20%
tls/throughput-c2s.js size=4194304 type='buf' dur=5                                                         ***     13.42 %       ±0.05% ±0.07% ±0.09%
tls/throughput-c2s.js size=4194304 type='utf' dur=5                                                         ***     13.81 %       ±0.08% ±0.10% ±0.13%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=131072 type='asc' dur=5                ***     13.77 %       ±0.17% ±0.23% ±0.31%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=131072 type='buf' dur=5                ***     13.72 %       ±0.15% ±0.20% ±0.27%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=131072 type='utf' dur=5                ***     12.92 %       ±0.17% ±0.22% ±0.29%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=16777216 type='asc' dur=5              ***     13.86 %       ±0.60% ±0.81% ±1.07%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=16777216 type='buf' dur=5              ***     16.02 %       ±0.27% ±0.36% ±0.47%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=16777216 type='utf' dur=5              ***     12.72 %       ±0.21% ±0.28% ±0.37%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=256 type='asc' dur=5                   ***     12.93 %       ±0.21% ±0.28% ±0.38%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=256 type='buf' dur=5                   ***     13.11 %       ±0.22% ±0.30% ±0.38%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=256 type='utf' dur=5                   ***     12.41 %       ±0.15% ±0.20% ±0.26%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=32768 type='asc' dur=5                 ***     13.55 %       ±0.20% ±0.27% ±0.35%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=32768 type='buf' dur=5                 ***     13.94 %       ±0.22% ±0.29% ±0.38%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=0 sendchunklen=32768 type='utf' dur=5                 ***     12.95 %       ±0.17% ±0.23% ±0.30%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=131072 type='asc' dur=5          ***     13.67 %       ±0.19% ±0.25% ±0.33%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=131072 type='buf' dur=5          ***     13.76 %       ±0.21% ±0.27% ±0.36%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=131072 type='utf' dur=5          ***     13.62 %       ±0.15% ±0.20% ±0.26%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=16777216 type='asc' dur=5        ***     16.53 %       ±0.58% ±0.78% ±1.03%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=16777216 type='buf' dur=5        ***     14.81 %       ±0.17% ±0.23% ±0.30%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=16777216 type='utf' dur=5        ***     14.80 %       ±0.19% ±0.26% ±0.34%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=256 type='asc' dur=5             ***     12.80 %       ±0.12% ±0.17% ±0.22%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=256 type='buf' dur=5             ***     13.59 %       ±0.24% ±0.33% ±0.43%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=256 type='utf' dur=5             ***     12.17 %       ±0.19% ±0.25% ±0.33%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=32768 type='asc' dur=5           ***     13.94 %       ±0.19% ±0.26% ±0.34%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=32768 type='buf' dur=5           ***     13.66 %       ±0.18% ±0.24% ±0.31%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=1048576 sendchunklen=32768 type='utf' dur=5           ***     13.62 %       ±0.15% ±0.20% ±0.26%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=131072 type='asc' dur=5            ***     13.71 %       ±0.17% ±0.22% ±0.29%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=131072 type='buf' dur=5            ***     13.77 %       ±0.21% ±0.28% ±0.36%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=131072 type='utf' dur=5            ***     13.81 %       ±0.14% ±0.19% ±0.25%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=16777216 type='asc' dur=5          ***     16.03 %       ±0.59% ±0.80% ±1.06%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=16777216 type='buf' dur=5          ***     14.43 %       ±0.19% ±0.25% ±0.33%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=16777216 type='utf' dur=5          ***     14.94 %       ±0.33% ±0.45% ±0.58%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=256 type='asc' dur=5               ***     12.86 %       ±0.17% ±0.23% ±0.30%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=256 type='buf' dur=5               ***     13.45 %       ±0.19% ±0.25% ±0.33%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=256 type='utf' dur=5               ***     12.45 %       ±0.17% ±0.22% ±0.29%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=32768 type='asc' dur=5             ***     14.17 %       ±0.18% ±0.24% ±0.32%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=32768 type='buf' dur=5             ***     13.38 %       ±0.17% ±0.22% ±0.29%
tls/throughput-s2c.js recvbufgenfn='false' recvbuflen=65536 sendchunklen=32768 type='utf' dur=5             ***     13.78 %       ±0.18% ±0.24% ±0.32%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=131072 type='asc' dur=5                 ***     13.83 %       ±0.18% ±0.24% ±0.31%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=131072 type='buf' dur=5                 ***     13.82 %       ±0.21% ±0.28% ±0.38%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=131072 type='utf' dur=5                 ***     13.07 %       ±0.18% ±0.24% ±0.31%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=16777216 type='asc' dur=5               ***     14.14 %       ±0.60% ±0.80% ±1.05%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=16777216 type='buf' dur=5               ***     16.19 %       ±0.24% ±0.31% ±0.41%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=16777216 type='utf' dur=5               ***     12.60 %       ±0.24% ±0.31% ±0.41%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=256 type='asc' dur=5                    ***     12.76 %       ±0.22% ±0.30% ±0.39%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=256 type='buf' dur=5                    ***     13.18 %       ±0.18% ±0.24% ±0.31%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=256 type='utf' dur=5                    ***     12.52 %       ±0.11% ±0.15% ±0.20%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=32768 type='asc' dur=5                  ***     13.62 %       ±0.18% ±0.24% ±0.32%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=32768 type='buf' dur=5                  ***     13.70 %       ±0.21% ±0.28% ±0.37%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=0 sendchunklen=32768 type='utf' dur=5                  ***     13.31 %       ±0.18% ±0.24% ±0.31%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=131072 type='asc' dur=5           ***     14.11 %       ±0.15% ±0.20% ±0.26%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=131072 type='buf' dur=5           ***     13.65 %       ±0.20% ±0.27% ±0.35%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=131072 type='utf' dur=5           ***     13.77 %       ±0.18% ±0.24% ±0.32%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=16777216 type='asc' dur=5         ***     16.56 %       ±0.59% ±0.80% ±1.06%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=16777216 type='buf' dur=5         ***     14.80 %       ±0.32% ±0.43% ±0.56%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=16777216 type='utf' dur=5         ***     14.76 %       ±0.32% ±0.43% ±0.55%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=256 type='asc' dur=5              ***     12.98 %       ±0.15% ±0.20% ±0.26%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=256 type='buf' dur=5              ***     13.82 %       ±0.21% ±0.28% ±0.37%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=256 type='utf' dur=5              ***     12.53 %       ±0.19% ±0.25% ±0.33%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=32768 type='asc' dur=5            ***     14.11 %       ±0.17% ±0.23% ±0.30%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=32768 type='buf' dur=5            ***     13.70 %       ±0.17% ±0.23% ±0.30%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=1048576 sendchunklen=32768 type='utf' dur=5            ***     13.68 %       ±0.18% ±0.24% ±0.31%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=131072 type='asc' dur=5             ***     13.65 %       ±0.19% ±0.25% ±0.33%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=131072 type='buf' dur=5             ***     13.83 %       ±0.22% ±0.29% ±0.38%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=131072 type='utf' dur=5             ***     13.55 %       ±0.19% ±0.26% ±0.34%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=16777216 type='asc' dur=5           ***     17.30 %       ±0.46% ±0.62% ±0.82%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=16777216 type='buf' dur=5           ***     15.01 %       ±0.28% ±0.37% ±0.48%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=16777216 type='utf' dur=5           ***     14.83 %       ±0.21% ±0.29% ±0.38%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=256 type='asc' dur=5                ***     12.68 %       ±0.17% ±0.23% ±0.30%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=256 type='buf' dur=5                ***     13.95 %       ±0.20% ±0.27% ±0.35%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=256 type='utf' dur=5                ***     12.48 %       ±0.23% ±0.30% ±0.40%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=32768 type='asc' dur=5              ***     13.99 %       ±0.18% ±0.24% ±0.32%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=32768 type='buf' dur=5              ***     13.80 %       ±0.17% ±0.23% ±0.29%
tls/throughput-s2c.js recvbufgenfn='true' recvbuflen=65536 sendchunklen=32768 type='utf' dur=5              ***     13.68 %       ±0.21% ±0.28% ±0.37%
tls/tls-connect.js dur=5 concurrency=1                                                                      ***     41.20 %       ±0.15% ±0.20% ±0.26%
tls/tls-connect.js dur=5 concurrency=10                                                                     ***     41.31 %       ±0.15% ±0.20% ±0.26%

Be aware that when doing many comparisons the risk of a false-positive result increases.
In this case, there are 97 comparisons, you can thus expect the following amount of false-positive results:
  4.85 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.97 false positives, when considering a   1% risk acceptance (**, ***),
  0.10 false positives, when considering a 0.1% risk acceptance (***)

@shipujin

Copy link
Copy Markdown
Member Author

update openssl-3.5.2

@shipujin

Copy link
Copy Markdown
Member Author

update openssl-3.5.3

@shipujin

Copy link
Copy Markdown
Member Author

@nodejs/crypto Hi, all the test items have passed, thanks

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been marked as stale due to 90 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.

@github-actions github-actions Bot added the stale label Jul 28, 2026
Thank you, zhoumingtao and liujiahui, for your test on the LoongArch machine, which
can demonstrate the performance improvement of nodejs using openssl-asm.
Thank you

run shell: ./node benchmark/compare.js --old ./out/Release/node \
 --new ./out-asm/Release/node crypto > crypte-benchmark.csv

LoongArch 3C5000-Server
crypto/aes-gcm-throughput.js    8.42%
crypto/keygen.js        54.37%
crypto/oneshot-hash.js  3.41%
crypto/oneshot-sign.js  31.03%
crypto/oneshot-verify.js        21.55%
crypto/randomBytes.js   10.87%
crypto/randomInt.js     4.48%
crypto/randomUUID.js    2.02%
crypto/rsa-encrypt-decrypt-throughput.js        63.27%
crypto/rsa-sign-verify-throughput.js    17.23%
crypto/rsa-sign-verify-throughput.js len='1024'  17.23%

LoongArch 3A6000-PC
crypto/aes-gcm-throughput.js    10.84%
crypto/keygen.js        56.33%
crypto/oneshot-sign.js  31.08%
crypto/oneshot-verify.js        24.38%
crypto/randomBytes.js   21.28%
crypto/randomInt.js     5.58%
crypto/randomUUID.js    6.05%
crypto/rsa-encrypt-decrypt-throughput.js        60.96%
crypto/rsa-sign-verify-throughput.js len='1024'  20.22%

Teted-by: zhoumingtao <zhoumingtao@loongson.cn>
Teted-by: liujiahui <liujiahui@loongson.cn>
@shipujin

Copy link
Copy Markdown
Member Author

update openssl-3.5.7

@github-actions github-actions Bot removed the stale label Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file. needs-ci PRs that need a full CI run. openssl Issues and PRs related to the OpenSSL dependency.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants