Загрузка ядра процессора не равна - PullRequest
0 голосов
/ 22 октября 2019

У меня странное поведение при использовании ядра при использовании множества потоков на многоядерной виртуальной машине.

enter image description here

У нас есть программа проверки, которая используется для подтверждениянекоторые внутренние расчеты, которые могут быть интенсивным использованием процессора. Расчеты, подлежащие проверке, отправляются на этот центральный сервер проверки по UDP, и нагрузка на трафик сообщений действительно велика. Для обработки пропускной способности UDP у нас есть много экземпляров, прослушивающих разные порты, и каждый экземпляр имеет 1 io_context с 1 потоком для чтения сокетов UDP и 1 io_context для операций с интенсивным использованием ЦП с 12 потоками.

Что действительно смущает меня, почему все ядра ЦПне одинаково используются? Похоже, что первая половина ядер используется на 100% больше, чем вторая половина. Почему ??

У нас есть еще одно приложение, работающее на многоядерном процессоре. Множество потоков на одном io_context. Он выполняет в целом разные задачи, но распределение использования ядра ЦП аналогично уже предоставленному случаю.

Разве не вся идея в увеличении asio io_context скрыть сложность использования многопоточности? Я мог бы расширить пул потоков и установить сродство к собственному дескриптору созданных потоков, но это нарушило бы переносимость и каким-то образом повторило бы идею boost asio.

...