Низкая загрузка ЦП для док-контейнера - PullRequest
0 голосов
/ 09 июля 2019

Хотя мы используем многопоточность (распараллеливание частей кода с интенсивным выполнением) в нашем рабочем контейнере на нашем 16-ядерном сервере, используются только 4-6 процессоров. Код написан на C # / dotnet 2.2.

Мы не устанавливаем максимальный параметр, чтобы уменьшить количество процессоров на нашем сервере Linux. И методы с интенсивным выполнением, которые распараллелены, должны использовать большинство процессоров.

Есть ли рекомендации, как проверить, установлена ​​ли какая-либо переменная неправильно, возможно, по умолчанию? Любой намек на то, как узнать, почему многопоточность не использует больше, чем те 4-6 ядер? Любой инструмент, который рекомендуется, чтобы узнать больше деталей?

Спасибо!

Проверен стартовый скрипт для запуска докера. Статистика докера показывает только процент между 400-600%, что означает, что используется 4-6 процессоров.

Обновление:

Это не должно быть технической проблемой, так как мы могли бы увеличить нагрузку на ЦП до максимального числа с помощью других тестовых функций. При проверке с помощью команды «uptime» средняя нагрузка в основном> 2.0. Дело в том, что наша реализация использует многопоточность и может масштабироваться до 4-5 ядер, но что-то, я предполагаю, что способ реализации с использованием параллельных циклов ограничивает использование процессоров. Любой намек, что мы могли бы проверить, прежде чем мы должны изменить всю реализацию? Мы также проверили этот звонок:

int maxProcCount = Environment.ProcessorCount - 1;

Показывает 5 с 6 ядрами (локально), так что это не может быть проблемой.

...