Intel i7-1065G7 не достигает максимальной частоты Turbo Boost

У меня ноутбук с процессором Intel i7-1065G7 . turbostat сообщает

35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores

(это 4 физических / 8 виртуальных ядер) Когда я загружаю большую однопоточную нагрузку (вычисление числа пи с mpfr ) на процессор, я замечаю, что два ядра (может быть, одно физическое ядро?) работает на частоте 3500 МГц, а остальные имеют более низкую частоту. Но они никогда не достигают более высоких частот турбо-ускорения.

Если я отключу некоторые ядра процессора (например, с помощью echo 0> / sys / devices / system / cpu / cpu [2-7] * / online ]) ноутбук действительно достигает соответствующих более высоких частот турбо-ускорения , что приводит к увеличению производительности (задача, которая раньше занимала в среднем 18,5 секунд, теперь занимает 16,8). На моем старом ноутбуке с i7-4712MQ турбостат дает

30 * 100.0 = 3000.0 MHz max turbo 4 active cores
30 * 100.0 = 3000.0 MHz max turbo 3 active cores
32 * 100.0 = 3200.0 MHz max turbo 2 active cores
33 * 100.0 = 3300.0 MHz max turbo 1 active cores

(это тоже машина с 4/8 ядрами). На этой машине одноядерная нагрузка увеличивает частоту одного ядра почти до 3,3 ГГц, при двухъядерной нагрузке две тактовые частоты при 3,2 ГГц и т. Д.

Я не проверял частоту отдельных ЦП в Windows, но диспетчер задач иногда отображает частоты выше 3,7 ГГц.

Обновление: Так проблема исчезла ... Понятия не имею почему. Я удалил linux-cloud-tools , но не думаю, что это должно быть причиной.

2
задан 21 August 2020 в 17:12

2 ответа

Вы написали ...

Когда я бросаю большую однопоточную загрузку

Если ваша программа однопоточная, ей не нужно переходить на максимальную частоту на другом потоков, поэтому нет.

Ваша ссылка предназначена для процессора Intel® Core ™ i7-1065G7.

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

35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores

В общем, если показание не является максимальной частотой, это потому, что либо оно отображается только с перерывами, поэтому измерения будут показывать это только с перерывами, либо это не обязательно должно быть на максимальной частоте, потому что там какое-то ограничение, такое как ввод-вывод. Не беспокойся об этом. Если вы пишете программу без ограничений, другими словами, это поток с ограничениями на вычисления, я гарантирую, что он будет работать с максимальной частотой.

Истекшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хочу использовать, чтобы делать выводы. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

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

35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores

В общем, если показание не является максимальной частотой, это потому, что либо оно отображается только с перерывами, поэтому измерения будут показывать это только с перерывами, либо это не обязательно должно быть на максимальной частоте, потому что там какое-то ограничение, такое как ввод-вывод. Не беспокойся об этом. Если вы пишете программу без ограничений, другими словами, это поток с ограничениями на вычисления, я гарантирую, что он будет работать с максимальной частотой.

Истекшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хочу использовать, чтобы делать выводы. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

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

35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores

В общем, если показание не является максимальной частотой, это потому, что либо оно отображается только с перерывами, поэтому измерения будут показывать это только с перерывами, либо это не обязательно должно быть на максимальной частоте, потому что там какое-то ограничение, такое как ввод-вывод. Не беспокойся об этом. Если вы пишете программу без ограничений, другими словами, это поток с ограничениями на вычисления, я гарантирую, что он будет работать с максимальной частотой.

Истекшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хочу использовать, чтобы делать выводы. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

Не знаю, почему вы думаете, что он не достиг максимума. Вы разместили это ...

35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores

В общем, если показание не является максимальной частотой, это потому, что либо оно отображается только с перерывами, поэтому измерения будут показывать это только с перерывами, либо это не обязательно должно быть на максимальной частоте, потому что там какое-то ограничение, такое как ввод-вывод. Не беспокойся об этом. Если вы пишете программу без ограничений, другими словами, это поток с ограничениями на вычисления, я гарантирую, что он будет работать с максимальной частотой.

Истекшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хочу использовать, чтобы делать выводы. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

Не знаю, почему вы думаете, что он не достиг максимума. Вы разместили это ...

35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores

В общем, если показание не является максимальной частотой, это потому, что либо оно отображается только с перерывами, поэтому измерения будут показывать это только с перерывами, либо это не обязательно должно быть на максимальной частоте, потому что там какое-то ограничение, такое как ввод-вывод. Не беспокойся об этом. Если вы пишете программу без ограничений, другими словами, это поток с ограничениями на вычисления, я гарантирую, что он будет работать с максимальной частотой.

Истекшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хочу использовать, чтобы делать выводы. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

s, потому что либо он делает это только с перерывами, так что измерения будут показывать это только с перерывами, либо это не обязательно должно быть на максимальной частоте, потому что есть некоторые ограничения, такие как ввод-вывод. Не беспокойся об этом. Если вы пишете программу без ограничений, другими словами, это поток с ограничениями на вычисления, я гарантирую, что он будет работать с максимальной частотой.

Истекшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хочу использовать, чтобы делать выводы. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

s, потому что либо он делает это только с перерывами, так что измерения будут показывать это только с перерывами, либо это не обязательно должно быть на максимальной частоте, потому что есть некоторые ограничения, такие как ввод-вывод. Не беспокойся об этом. Если вы пишете программу без ограничений, другими словами, это поток с ограничениями на вычисления, я гарантирую, что он будет работать с максимальной частотой.

Истекшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хочу использовать, чтобы делать выводы. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

другими словами, это поток с ограничениями вычислений, я гарантирую, что он будет работать на максимальной частоте.

Прошедшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хотите использовать для выводов. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

другими словами, это поток с ограничениями вычислений, я гарантирую, что он будет работать на максимальной частоте.

Прошедшее время 18,5 с может не иметь значения из-за случайных эффектов, которые вы не хотите использовать для выводов. Длительные задания продолжительностью 200 секунд и более могут дать более значимые данные.

0
ответ дан 24 August 2020 в 08:20

Я столкнулся с чем-то подобным на аналогичной установке (процессор i7-9700K, Ubuntu 18.04). И я думаю, что использование моего компьютера может быть аналогичным: это настольный компьютер, который я использую для запуска некоторых интенсивных (но однопоточных) приложений, а также, возможно, с открытым веб-браузером и некоторыми приложениями для обмена сообщениями. Я нашел предложение в комментариях под исходным сообщением работать - установка привязки процессора к процессам. Для этого я использовал taskset [1].

Первый тест (без изменений в настройках сходства): Все 8 ядер «бездействуют» при загрузке ~10%. Я запускаю однопоточную задачу с интенсивным использованием ЦП. Одно ядро ​​скачет на 100%, вижу 3,6 ГГц (максимум без турбо) на всех ядрах при использовании i7z.

Второй тест: Ограничьте все запущенные процессы ядрами ЦП 0 и 1 с помощью: for i in `sudo ps -aux | awk '{напечатать $2}'`; выполнить sudo taskset -a -p -c 0-1 $i; сделано.Теперь эти 2 ядра загружены на 30-40%, остальные на 0% (хотя некоторые другие ядра могут начать проявлять активность, когда ОС запускает процессы). Затем запустите ту же однопоточную задачу с интенсивным использованием ЦП. Одно ядро ​​скачет до 100%, но теперь я вижу, что оно достигает максимальной турбо-частоты 4,9 ГГц. После этого я вернул сходство, чтобы использовать все ядра, заменив диапазон 0-1 на 0-7, в моем случае.

[1] http://manpages.ubuntu.com/manpages/focal/man1/taskset.1.html

0
ответ дан 28 September 2020 в 12:04

Другие вопросы по тегам:

Похожие вопросы: