Назад | Перейти на главную страницу

cpufreq-info отличается от / proc / cpuinfo?

У меня есть сервер, и я хочу, чтобы он всегда работал на максимальной скорости, а не в режиме энергосбережения. Я пробовал несколько стратегий (помимо перезагрузки и изменения настроек в BIOS, что мне пришлось бы сделать для нескольких сотен серверов), но получаю странные результаты от cpufreq-info. Например.:

root@host:~# cpufreq-info -c 0
cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 2.20 GHz
  available frequency steps: 2.20 GHz, 2.20 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 2.00 GHz and 2.20 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz (asserted by call to hardware).
  cpufreq stats: 2.20 GHz:6.50%, 2.20 GHz:0.24%, 2.10 GHz:0.34%, 2.00 GHz:0.05%, 1.90 GHz:0.04%, 1.80 GHz:0.03%, 1.70 GHz:0.03%, 1.60 GHz:0.03%, 1.50 GHz:0.03%, 1.40 GHz:0.03%, 1.30 GHz:0.03%, 1.20 GHz:92.66%  (8080636)

Обратите внимание, что минимальная скорость показывает «2,00 ГГц», а регулятор установлен на «производительность», но текущая частота процессора равна 1,20 ГГц. Однако, если я просто посмотрю в / proc / cpuinfo, значение там постоянно ~ 2,2 ГГц:

root@host:~# egrep 'MHz|Xeon' /proc/cpuinfo ; cpufreq-info -c 0
model name  : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
cpu MHz     : 2200.000
model name  : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
cpu MHz     : 2201.000

Что из этого правильно? Во что я верю? Есть ли способ, помимо изменений в BIOS, гарантировать режим максимальной производительности? Как бы то ни было, это Ubuntu 12.04 с таким ядром:

Linux host 3.2.0-76-generic #111-Ubuntu SMP Tue Jan 13 22:16:09 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Я почти убежден, что ваш BIOS ограничивает ваши процессоры до 1,20 ГГц. В ядре есть два значения:

  1. scaling_cur_freq, который является частотой, которую, по мнению драйвера cpufreq, он запросил. / proc / cpuinfo содержит это значение. Он вызывает функцию cpufreq_quick_get ().

  2. cpuinfo_cur_freq - частота, фактически запрограммированная в ЦП. cpufreq-info использует это значение, как указано как «подтверждено вызовом оборудования». (В конечном итоге он вызывает __cpufreq_get ().) Он вернется к scaling_cur_freq, если cpuinfo_cur_freq недоступен.

+1 по поводу комментариев Мэтта о массовом обновлении BIOS. Например, серверы класса HP Proliant DL позволяют изменять регулирование мощности в режиме онлайн. Возможно, ваше оборудование имеет аналогичный функционал.

Изменения BIOS - лучший способ гарантировать максимальную производительность, но некоторое аппаратное масштабирование частоты неизбежно (тепловое регулирование).

Вот сообщение от Intel о установка частоты процессора. В определенной степени частоту процессора можно контролировать на уровне пользователя и ОС. Вот дополнительная информация из Arch Linux о масштабировании частоты что вы можете найти ценным.

На стороне BIOS массовое обновление BIOS группы серверов может быть выполнено с использованием независимого интерфейса управления, такого как выделенная сетевая карта интерфейса интеллектуального управления платформой (IPMI) или система KVM с поддержкой сценариев.