gpt4 book ai didi

c++ - 在 24 核 CPU 中增加线程数超过 4 会导致性能下降

转载 作者:行者123 更新时间:2023-11-30 05:19:27 28 4
gpt4 key购买 nike

我有一个 Intel Xeon E5-2620,它有 24 个 CPU。我写了一个应用程序,它创建 24 个线程来使用 openssl 解密 AES。当我在 100 万数据解密时将线程数从 1 增加到 24 时,我得到如下图所示的结果。 enter image description here

问题是当我增加线程数时,我确定的所有核心都变成 100%,并且由于系统的 32GB 内存总是至少有一半的内存是空闲的,这表明问题不是核心使用或内存限制。我想知道我应该设置一个特殊参数来提高操作系统级别的性能,还是进程限制不能达到最大性能超过 4 个线程。我不得不提一下,当我执行“openssl evp ...”来测试 aes 加密解密时,因为进程 fork ,它比一个核心性能提高了大约 20 倍。有谁知道吗?

最佳答案

我终于找到原因了。多个 CPU 在具有不同距离的服务器上具有不同的内存。当我创建线程时,直到在一个 cpu 上创建了 4 个线程,但是第五个线程将被放置在第二个 cpu 上,这会降低性能,因为在操作系统中不使用 NUMA。所以当我禁用第二个 cpu 的内核时,6 个线程的性能如预期的那样提高了。您可以使用以下命令禁用第 7 个核心:

cd /sys/devices/system/cpu/
echo 0 > cpu6/online

关于c++ - 在 24 核 CPU 中增加线程数超过 4 会导致性能下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41095859/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com