У меня есть Intel Xeon E5-2620, который имеет 24 на 2 процессора. Я написал приложение, которое создает 24 потока для дешифрования AES с помощью openssl. Когда я увеличиваю число потоков от 1 до 24 на 1 миллион дешифрования данных, я получаю такой результат, как следующее изображение. Снижение производительности за счет увеличения числа потоков Больше, чем 4 из 24 Core CPU
Проблема заключается в том, когда я увеличить число потоков все из ядра, которое я определил становится 100%, а из-за 32GB оперативной памяти системы всегда по крайней мере, половина из барана свободен, которые показывают, что эта проблема не является основной использование или плунжер. Мне интересно узнать, должен ли я устанавливать специальный параметр для повышения производительности на уровне ОС или это ограничение процесса, которое не может достичь более 4 потоков в максимальной производительности. Я должен упомянуть, что когда я запускаю «openssl evp ...» для тестирования расшифровки шифрования aes из-за вилки процесса, это увеличивает производительность примерно в 20 раз больше, чем одно базовое. Кто-нибудь есть идеи?
Одна проблема заключается в том, что половина «сердечников» не * реальные * ядра, но и своего рода виртуального ядра, эмулировать с некоторыми трюками Конвейеризация. Вот почему у вас (небольшой) удар, когда вы поднимаетесь выше 12 потоков. –
Является ли 'openssl evp' одним потоком? – malat
Есть много возможных объяснений, но мы можем только догадываться *, если вы не показываете нам ориентир cosde * ... (Подсказка). –