Нажмите на синий текст «Маленький черный дом с внутренними технологиями» выше и обратите внимание на общедоступный аккаунт баклажана, чтобы спасти мир ~
Недавно, когда я заменил модель сервисного сервера, я столкнулся с проблемами количества потоков, многоядерности процессора и гиперпоточности.
я был в«Взаимосвязь между количеством потоков и многоядерностью ЦП»Связь между физическими ядрами и гиперпоточностью обсуждается в разделе , и рекомендуется, чтобы для задач с интенсивными вычислениями количество потоков было установлено равным количеству физических ядер.
Тем не менее, эта замена модели, или есть проблема.
Многоядерность и частота
Получается, что наш сервис использует сервер с одним процессором, 4 физическими ядрами и 8 логическими ядрами (Hyper-Threading, HTT), с основной частотой 3,4G. Новая модель, замененная на этот раз, представляет собой двойной процессор, каждый процессор имеет 20 физических ядер и 40 логических ядер (HTT), всего 80 основных серверов, но основная частота составляет всего 2,5 ГГц.
Учитывая, что этот сервис чувствителен к задержкам, у меня на душе становится холодно, когда я вижу здесь основную частоту. Однако в Интернете также есть много утверждений (в основном, официальных пропагандистских статей Intel), что в случае меньшей архитектуры обновления процесса новая версия более низкочастотного ЦП также может достичь такой же или даже превосходящей производительность старой версии. высокочастотного процессора.
Что касается того, почему многоядерные процессоры имеют более низкие частоты? В основном это касается потребления энергии. 40 физических ядер плотно распределены на одной плате, высокая частота принесет большое энергопотребление, а тепловыделение - большая проблема. Таким образом, основная частота десятков основных процессоров на рынке в основном составляет около 2.xG.
Вторая проблема заключается в том, что для того, чтобы в полной мере использовать производительность многоядерных процессоров, необходимо значительно увеличить количество потоков программы.Будет ли конфликт блокировок и снижение производительности? Задолго до того,«Использование двойной разблокировки буфера»Большинство проблем блокировки были решены, а текущий сервис в основном бесплатная программа без блокировки, вычисляющаяся программа.
гиперпоточность
Затем разверните, протестируйте, нагрузите и запустите.
По мере увеличения количества запросов задержка непосредственно на новой машине увеличилась более чем в два раза.
Я посоветовался с одноклассниками по эксплуатации и обслуживанию, которые часто настраивают и используют эту новую модель, и сказал мне, что я могу попробовать отключить гиперпоточность. Действительно, после отключения гиперпоточности задержка всего лишь менее чем на 10% выше, чем у исходной 8-ядерной машины, и при увеличении нагрузки существенных изменений не происходит, что соответствует требованиям к задержке вышестоящих сервисов.
Так почему же отключение гиперпоточности работает?
Во-первых, нам нужно понять, что такое гиперпоточность.
超线程,是一种用于提升CPU计算并行度的处理器技术,用一个物理核模拟两个逻辑核。
这两个逻辑核拥有自己的中断、状态,但是共用物理核的计算资源。
超线程技术旨在提高CPU计算资源的使用率,从而提高计算并行度。
скопировать код
Технология Hyper-Threading основана на том факте, что большинство программ выполняются без полного использования ресурсов ЦП. Например, при промахах кэша ЦП, ошибках прогнозирования ветвлений или ожидании данных вычислительные ресурсы ЦП фактически простаивают. Технология Hyper-Threading может распределять эти бездействующие ресурсы ЦП на другие инструкции с помощью аппаратных инструкций, тем самым улучшая использование ресурсов ЦП в целом.
Так почему же наша программа отключает гиперпоточность, но улучшает показатели задержки?
Могут быть следующие причины:
-
Повышение эффективности, вызванное гиперпоточностью, определенно не так хорошо, как добавление отдельного физического ядра, потому что гиперпоточность не увеличивает вычислительные ресурсы, но позволяет двум задачам совместно использовать существующие вычислительные ресурсы одного физического ядра. Следовательно, если у процессора достаточно вычислительных ресурсов, которые используются не полностью, гиперпоточность может принести относительно большое улучшение, и другой поток может вставить выполнение, когда некоторые вычислительные ресурсы простаивают. Таким образом, за один такт можно рассчитать больше задач. Приведенное здесь улучшение производительности больше связано с повышением пропускной способности, а не с уменьшением задержки выполнения одной задачи. Если у приложения мало зависимостей до и после, оно может быть скомпилировано в независимые инструкции для выполнения, а улучшение пропускной способности на уровне ЦП также может уменьшить задержку вычислений на уровне приложения, однако предприятий, отвечающих таким требованиям, слишком мало. , и большинство приложений зависят от до и после.
-
Высокая степень использования гиперпоточности зависит от операционной системы. Если операционная система не поддерживает гиперпоточность (например, до Linux 2.6, Windows Server2003 и т. д.), можно распределить вычислительные задачи, которые можно было бы распределить между двумя физическими ядрами, на два гиперпотока на одном физическом ядре. В этом случае это приведет к потере производительности.
-
Исследования показали, что гиперпоточность зависит от планирования процессора операционной системой. Однако, если приложение включает функцию, привязанную к ЦП, это может нарушить целостность этого планирования и вместо этого привести к потере производительности. К сожалению, из-за внутренней логики нашего приложения необходимо включить привязку процессора. Это может быть серьезной проблемой здесь.
-
Для реализации технологии Hyper-Threading к физическому ядру необходимо добавить еще один логический процессор. Даже если нет инструкции для вычисления логического ядра из гиперпоточности, вновь добавленный блок логической обработки будет занимать определенный ресурс физического ядра, что повлияет на производительность.
Кроме того, гипербеллер принесет резкое увеличение энергопотребления. Это серверная программа, которая может привести к энергопотреблению, что приведет к проблемам с отводом тепла, а для современных смартфонов время автономной работы также будет серьезной проблемой.
Суммировать
В настоящее время технология Hyper-Threading в основном является стандартной для серверных процессоров. Однако степень повышения производительности зависит от конкретного приложения и операционной системы.
Если вы обнаружите, что производительность сервера не соответствует стандартам, попробуйте отключить гиперпоточность.
Рекомендуемое чтение:
Используйте вычитание без знака с осторожностью
Интервью, чтобы построить ядерную бомбу, рабочий винт?
Страница квеста: russell_yan
Авторизация: Соглашение CC0