cpufreq-info врёт

Vladimir
Опубликовано в: Linux

/sys/devices/system/cpu/cpu?/cpufreq/cpuinfo_cur_freq показывает неверную частоту

Обратил внимание, что при задании частоты нулевому ядру, cpufreq-info показывает одинаковую частоту для всех ядер. Меня это удивило, так как раньше я мог задавать разные частоты для каждого ядра. Решил проверить экспериментально.

[-]
View Code Bash
# Включаем ручное управление частотой процессоров
for i in 0 1 2 3; do cpufreq-set -c $i -g userspace; done

# Устанавливаем частоту ядер в 3 ГГц
for i in 0 1 2 3; do cpufreq-set -c $i -f 3GHz; done

# Проверяем
cpufreq-info | grep "current CPU frequency"
#  current CPU frequency is 3.00 GHz (asserted by call to hardware).
#  current CPU frequency is 3.00 GHz (asserted by call to hardware).
#  current CPU frequency is 3.00 GHz (asserted by call to hardware).
#  current CPU frequency is 3.00 GHz (asserted by call to hardware).

# Устанавливаем частоту нулевого ядра в 800 МГц
cpufreq-set -c 0 -f 800MHz

# Проверяем
cpufreq-info | grep "current CPU frequency"
#  current CPU frequency is 800 MHz (asserted by call to hardware).
#  current CPU frequency is 800 MHz (asserted by call to hardware).
#  current CPU frequency is 800 MHz (asserted by call to hardware).
#  current CPU frequency is 800 MHz (asserted by call to hardware).

# Проверяем другим способом
cat /sys/devices/system/cpu/cpu?/cpufreq/cpuinfo_cur_freq
# 800000
# 800000
# 800000
# 800000

# При этом:
cat /sys/devices/system/cpu/cpu?/cpufreq/scaling_cur_freq
# 800000
# 3000000
# 3000000
# 3000000

Видим, что cpufreq-info показывает те же частоту, что и /sys/devices/system/cpu/cpu?/cpufreq/cpuinfo_cur_freq, но они отличается от указанных в /sys/devices/system/cpu/cpu?/cpufreq/scaling_cur_freq. Какая-то черепашка врёт.

Проверим. Я написал тестовую программу, которая считает хэш SHA-1 от полугибибайтного блока памяти. Я запустил эту программу на нулевом и первом ядре, а затем сравнил время работы.

[-]
View Code Bash
$ taskset -c 0 ./sha-test
1.866983
$ taskset -c 1 ./sha-test
0.491562

На нулевом ядре, скорость которого почти в четыре раза меньше скорости первого, программа выполнялась почти в четыре раза дольше. Что говорит о том, что cpuinfo_cur_freq верить в данном случае нельзя.

UPD: проверялось на текущей версии Karmic Koala.

Добавить в закладки

Связанные записи

23
Авг
2009

Комментарии к статье «cpufreq-info врёт»  »

К статье «cpufreq-info врёт» комментариев пока нет. Не хотите ли стать первым?

Подписаться на RSS-ленту комментариев к статье «cpufreq-info врёт» Trackback URL: http://blog.sjinks.org.ua/linux/621-cpufreqinfo-lies/trackback/

Оставить комментарий к записи «cpufreq-info врёт»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя