Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Режимы работы процессора. Регулировка.  (Прочитано 44985 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Molibden

  • Автор темы
  • Участник
  • *
  • Сообщений: 184
    • Просмотр профиля
Почему неоднократно возникают вопросы, почему под Убунтой мой процессор работает на пониженных частотах, или наоборот перегревается.

Постараюсь дать матчасть. Кому не надо - не оставляйте комментарии, просто закройте окно браузера.

Самый простой способ выставление режимов и частоты - апплет «Монитор изменения частоты процессора» (управляет демоном cpufreq).

Существует 5 режимов (политик) работы процессора: ondemand, performance, powersave, conservative, userspace.
При загрузке модуль ядра определяет доступные частоты процессора. Модули см. ниже.
По умолчанию при загрузке системы грузиться режим ondemand, задается при компиляции ядра.

ondemand (для десктопов) - пошаговое повышение работы частоты cpu, в зависимости от нагрузки (а заодно и напряжения на cpu и еще чего-то, чего-то влияет на производительность видяхи на ноутбуках, не нашел вменяемой инфы)).
Общий смысл принципа работы - каждые 20-200 мс замеряется нагрузка на cpu, общая или пользователем, и если нагрузка на текущей частоте более 95% - частота повышается, если менее 20% - частота понижается на 1 шаг. Например, если доступные частоты: 500-1000-2000 MHz то, при загрузке cpu на 95% на 1000 Mhz, частота переходит на 2000.
Частоту замера, % загрузки перехода и остальное для всех режимов выставляется при компиляции ядра.
http://www.mjmwired.net/kernel/Documentation/cpu-freq/governors.txt

conservative - тоже, что ondemand, но нагрузка для переходя частоты процессора в большую или меньшую сторону меньше - обычно 20%. Например: доступно 500-1000-2000 MHz, работаем на 500 MHz, нагрузка возросла на 30%, переходим на 1000.
 
performance - макс доступная частота, макс производительность.

powersave - понятно, минимум производительности, максимум батареи или упс.

userspace - что задал, на такой частоте и работаем.


Выставить governor можно руками через командную строку или апплет «Монитор изменения частоты процессора».

sudo -c "echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
Вместо ondemand, можно взять любой. cpu0 - для первого ядра, тоже проделать для всех ядер, заменим 0 на номер ядра cpu (cpu0, cpu1, cpu2 ....).
Количество ядер смотрим: ls /sys/devices/system/cpu/
Апплетов надо добавлять на панель по количеству ядер!! Иначе, будет самое производительное значение для всех.
Если в ядре включен Hyper-threading (http://ru.wikipedia.org/wiki/Hyper-Threading), то на каждое физическое ядро приходиться 2 виртуальных. Например, у ваc проц двухядерный, то виртуальных ядер - 4, если процессор поддерживает Hyper-threading и эта опция включена в биос.

Кроме того, для governor'ов с изменяющейся частотой, есть понятие max_freq и min_freq, т.е. можно выставить ondemand, только запретить ему подниматься выше или опускаться ниже определенной частоты из поддерживаемых процессором.
Файлы:
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
Например, если проц поддерживает 500, 1000 и 2000 MHz, то сказать, чтобы не опускался ниже 1000 можно:
sudo -c "echo 1000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"
Или не поднимался выше 1000 MHz:
sudo -c "echo 1000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq"

Естественно, проделываем вышеуказанное для всех ядер cpu. Специально cpu0 выделил.
Чтоб руками не вбивать для всех ядер, заранее готовим скрипт с нужной строкой, только повторяем ее столько раз, сколько ядер в системе.
Запуск скрипта: sh /где-там-лежит-скрипт/название-скрипта.sh
Права на выполнение, при таком запуске, можно не выставлять.

Доступные частоты: sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
Доступные режимы, если загружен соответствующий модуль ядра:
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors


Модули ядра отвечающие за режимы: cpufreq_powersave, cpufreq_userspace, cpufreq_conservative, cpufreq_ondemand, cpufreq_performance.

Узнать загружены ли модули: sudo modprobe -l |grep cpufreq
Загружаются: sudo modprobe имя_модуля.

 
В зависимости от производителя и марки процессора - есть соответствующие модули ядра (подключаемые или зашитые в ядро), которые дают возможность управлять режимом работы cpu.
Это:
acpi-cpufreq – средства ACPI (P-States Driver)
p4-clockmod – Pentium 4
speedstep-centrino – Pentium M
speedstep-ich – Pentium III-M, P4-M, ICH2/ICH3/ICH4
speedstep-smi – Pentium III-M, 440 BX/ZX/MX
powernow-k6 – AMD K6
powernow-k7 – AMD Athlon, Duron, Geode
powernow-k8 – AMD  Athlon, Athlon 64, Athlon64X2, Turion 64, Opteron, Sempron.
cpufreq-nforce2 – изменение частоты средствами чипсета nVidia nForce2 (изменение FSB независимо от частоты PCI/AGP)

http://www.mjmwired.net/kernel/Documentation/cpu-freq/amd-powernow.txt

Узнать загружен ли модуль: sudo modprobe -l |grep имя_модуля
Загружается соответствующий модуль: sudo modprobe имя_модуля


Зачем столько букаф?
Чтоб не было тем, типа, ААА Ubuntu сжигает мой процессор и можно было послать в ... матчасть.
Руками выставлять режим работы полезно, если:
1. Грузимся в режиме восстановления или singl mode, что-то поправить, а процессор перегревается, и ноутбук выключается от перегрева.
2. Для увеличения отзывчивости операционки на нагрузки, например при просмотре флеша.
3. На вкус и цвет фломастеры разные...

Выводы:
1. Для декстопа. Если хотим большей отзывчивости на нагрузку (изредка смотрим флеш, более быстрый запуск тяжелых прог) - выставляем governor - conservative, можем ограничить нижнюю частоту, выставив значение scaling_min_freq на второе после минимально поддерживаемого вашим процессором. Не забываем выставлять для всех ядер.
2. Для ноутбука от батареи. Тормозит hdmi или флеш, но хочется поберечь батарею - ограничиваем максимальную частоту scaling_max_freq так, чтоб не тормозило. 
Например, при доступных частотах - 500-1000-2000 MHz, я ставлю scaling_max_freq на 1000 и governor - ondemand. Тогда гуляю по инету на 500 MHz, но если попадается 720p флеш - частота поднимается на 1000.
3. Мне нечего делать.

Дополнение: Директория /proc генерируется заново при каждой перезагрузке, так, чтоб при каждом запуске выставлялись соответствующие значения – нужно прописать соответствующие строки в автозагрузку, например в /etc/rc.local или руками выполнять скрипт, если вы его написали.

PS Материал моего написания, некоторое - имхо. Критика и ошибки принимаются.

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Режимы работы процессора. Регулировка.
« Ответ #1 : 16 Ноябрь 2010, 15:24:27 »
Итак, мое ИМХО!
1) Многое я уже знал, но написано хорошо.
2) sudo -c "echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" - не работает, почему не знаю, выдает:
(Нажмите, чтобы показать/скрыть)
3) все команды лучше в code
4) Я не знал что такое упс, пока не погуглил, сказывается присутствие только ноута. То есть наверное лучше расписать.
5) sudo modprobe -l |grep cpufreq нет пробела после | , не критично, но настораживает
6) у меня 1-н аплет, так как у меня ядра не могут работать каждое на своей частоте =/
7) у меня в  /etc/rc.local лежит sleep 70 && cpufreq-set -g performance, но 70 приходится ставить, так как в какомто файле, хоть убейте не помню в каком видел что на 60 сек стои тоже самое но с ondemand, хотелось бы узнать в каком.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн scsiman

  • Активист
  • *
  • Сообщений: 344
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #2 : 16 Ноябрь 2010, 16:01:22 »
2) Предположу, что пропущен шелл:

sudo sh -c "echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
Dell Studio XPS 16, Ubuntu 16.04 LTS (Home).
HP nx6110, Ubuntu 8.04 LTS => 10.04 LTS (Home).

Оффлайн haligali

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #3 : 28 Февраль 2011, 03:23:38 »
Molibden
А можно поподробней, как установить по умолчанию режим Performance для всех ядер?
В мире все совсем не сложно, если самому не усложнять

Оффлайн Ghostdmn

  • Участник
  • *
  • Сообщений: 215
  • Linux Macht Frei
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #4 : 28 Февраль 2011, 04:00:13 »
Molibden
А можно поподробней, как установить по умолчанию режим Performance для всех ядер?
sudo cpufreq-set -g performance

Оффлайн haligali

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #5 : 28 Февраль 2011, 08:54:25 »
Не, так не получается. Выдает
 sudo: cpufreq-set: command not foundХотя установлен Монитор изменения частоты процессора 2.30.0 и нормально функционирует, но по умолчанию (когда запускаю систему) стоит режим Ondemand, хотелось бы что бы по умолчанию стоял режим Performance.
« Последнее редактирование: 28 Февраль 2011, 09:15:01 от haligali »
В мире все совсем не сложно, если самому не усложнять

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Режимы работы процессора. Регулировка.
« Ответ #6 : 28 Февраль 2011, 09:23:41 »
sudo sed -i 's|echo -n ondemand >|echo -n performance >|g' "/etc/init.d/ondemand"
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн haligali

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #7 : 28 Февраль 2011, 15:20:57 »
sudo sed -i 's|echo -n ondemand >|echo -n performance >|g' "/etc/init.d/ondemand"

Отлично, то что доктор прописал :). Благодарю покорнейше.
В мире все совсем не сложно, если самому не усложнять

Оффлайн vitok

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #8 : 03 Март 2011, 03:21:38 »
*удалено* И не
sudo -c "echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"А просто:
sudo "echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"А sudo -s совсем тут не нужно.

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

А весь топик сводиться к одной команде в терминале.
sudo update-rc.d -f ondemand remove
И вообще разробам убунты за это незачет, значит при загрузки LiveCD, Ubuntu различает Laptop/Desktop, а конфигурацию для всех гонит одинаковую. На ноуте понижение частоты работы проца с целью сохранения батареи критично, но на Desktop-е оно нафиг не надо!

Глянул остальные факи и становится ясно почему линукс (вместе с его дистрибутивами) считают сложными, потому что топик стартеры поголовно извращенцы! Ubuntu на самом деле раз в 10 проще винды, и раз в сто проще того что пишут ТС-ы. Из ветки смело можно 80% тем удалять 40% из них объединить в одну тему.  И только 20% адекватных топик стартеров. Теперь я вспоминаю почему 3 года назад снес тут свой аккаунт.


Старайтесь свои эмоции держать при себе, относитесь к участникам форума с уважением
#truegeek
« Последнее редактирование: 03 Март 2011, 15:42:32 от truegeek »

Оффлайн dj--alex

  • Старожил
  • *
  • Сообщений: 3215
  • Понимаешь, я какбы беру в руки лопату и говорю...
    • Просмотр профиля
    • все мои творения и занятия
Re: Режимы работы процессора. Регулировка.
« Ответ #9 : 10 Март 2011, 23:29:10 »
установлен Монитор изменения частоты процессора 2.30.0 стоит режим Ondemand,
неважно куда переключаешь - почему то всегда остается максимальная скорость
пишется 2.8ггц, реально 3.4ггц.

всяких cpufreq и сенсоров понатыкл понаставил - нифига не помогает.
нету ни температуры (меряем как всегда в линуксе - пальцем) .  ни индикации частот (менять только через bios)
что могло выйти из строя если пару месяцев назад всё работало? у кого была такая практика?

на другой ос , linux mint поставленной на пробный хард все определяется отлично , проц скорось меняет
Ubuntu 16.04.1 MATE x64, 18.1 x64 Mate, MX-Linux 16 Mate Mate Mate Mate. PC:?\FX4100@4ghz\8Gb\2TB HDD\1060gtx\90GB Ocz
https://forum.ubuntu.ru/index.php?topic=199897.0

Оффлайн gregory5

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5085
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #10 : 10 Март 2011, 23:34:40 »
посмотрите конфиг гувернёра, может обновки какие были или ещё чего
с сенсорами пока не ясно, при детекте все датчики находит? там может модули не подгружает, вообщем надо смотреть чего там
p.s. а вообще режим работы cpuereq лучше в ядре указывать, так оно как то надёжней и корректней работает
« Последнее редактирование: 10 Март 2011, 23:36:38 от gregory5 »

Оффлайн bubuntu-ru

  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #11 : 11 Март 2011, 01:16:08 »
 cpufrequtils как будет интересно.

Оффлайн dj--alex

  • Старожил
  • *
  • Сообщений: 3215
  • Понимаешь, я какбы беру в руки лопату и говорю...
    • Просмотр профиля
    • все мои творения и занятия
Re: Режимы работы процессора. Регулировка.
« Ответ #12 : 11 Март 2011, 01:19:43 »
забыл задетектить (sensors-detect кажется так пишется), все нашло потребовалось перезагрузиться
, правда вместо +5в показыват 3в что не может быть правдой . но вроде ок.
жалко everest под linux не вышел.
Ubuntu 16.04.1 MATE x64, 18.1 x64 Mate, MX-Linux 16 Mate Mate Mate Mate. PC:?\FX4100@4ghz\8Gb\2TB HDD\1060gtx\90GB Ocz
https://forum.ubuntu.ru/index.php?topic=199897.0

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Режимы работы процессора. Регулировка.
« Ответ #13 : 11 Март 2011, 10:12:04 »
Да вроде и не выйдет уже, проект то закрыли.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн slayerk

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Режимы работы процессора. Регулировка.
« Ответ #14 : 12 Март 2011, 03:00:56 »
sudo update-rc.d -f ondemand remove

огромное спасибо. давно мечтал избавиться от этой хреновины :)))

 

Страница сгенерирована за 0.065 секунд. Запросов: 24.