Я компилирую что-то с -j64, чтобы разрешить многопроцессорность (рекомендовалось 88, но я чувствовал, что это слишком много).

Все мои ядра используются на 100%, но частота процессора не достигает максимума, когда я смотрю в lscpu:

CPU MHz:               3123.046
CPU max MHz:           3900.0000
CPU min MHz:           800.0000

Это на ноутбуке dell - есть ли система управления питанием (я не делал powertop или что-то в этом роде), которая ограничивала бы ядра, или это просто накладные расходы ввода-вывода, которые не позволяют процессору иметь данные?

Изменить: это Intel(R) Core(TM) i7-7820HQ (lscpu говорит @ 2.90GHz)

1 ответ1

2

Указанная вами частота 3900 МГц - это максимальная "турбо" частота, а не то, что можно поддерживать в любом случае.

С сайта Intel:

Максимальная частота турбо относится к максимальной частоте одноядерного процессора, которая может быть достигнута с помощью технологии Intel® Turbo Boost.

А также:

Доступность и частота обновления состояния Intel® Turbo Boost Technology 2.0 зависят от ряда факторов, включая, помимо прочего, следующие:

  • Тип рабочей нагрузки
  • Количество активных ядер
  • Расчетное потребление тока
  • Расчетное энергопотребление
  • Температура процессора

Поскольку вы используете все ядра, центральный процессор поддерживает их активными, что выделяет много тепла и потребляет много энергии, поэтому он не может работать на полной частоте 3900 МГц. Если вы запустили компиляцию как однопоточный процесс, вы могли бы ожидать более высокие частоты, поскольку он увеличивает одно ядро (если охлаждение на вашем ноутбуке не справляется).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .