LINUX.ORG.RU

Как снять ограничения частоты cpu в linux?


3

2

Доброго здоровья!

Пробовал более гибко настроить систему управления потреблением энергии на нетбуке ASUS N10J в linux. Оттестировал свой Atom N270 утилитой SetFSB. Сносно работает с частотами 400Мгц-2000Мгц и без ошибок, но столкнулся с ограничениями в настройке рабочих частот в linux. Командой cpufreq-set не лечится.

Системные ограничения для Atom N270:

# cpufreq-info -l

800000 1600000

Подскажите, пожалуйста, как снять нижние и верхние ограничения частоты в linux? Заранее благодарен.

★★

Последнее исправление: glibych (всего исправлений: 1)
Ответ на: комментарий от glibych

Очень похоже на то как биос потрошат. Спасибо. Может и поможет.

Так или иначе вся инфа из биоса. Если заменить dsdt то и получаемая из биоса информация изменится. Огромные возможности но и возможны страшные последствия. В конце концов можно даже выдрать dsdt из разных версий биоса, сравнить и…

init_6 ★★★★★
()
Ответ на: комментарий от glibych

Ну тут либо не загружен нужный модуль. Можно попробовать найти оный через sensors-detect.

Либо скрыта i2c/smbus шина. Поверхностно ознакомился с вопросом. Вроде как, нужные для открытия патчи потихоньку в ядро добавляют. Попробовать с современным ядром. Быть может содержимое drivers/pci/quirks.c поможет.

deusexbeer
()
Ответ на: комментарий от init_6

>Если заменить dsdt то и получаемая из биоса информация изменится.

Если это получится, то можно будет поменять значения для cpufreq 1 GHz, 1.33 GHz, 1.66 GHz на 3 других. Возможный вариант, но не самый лучший, потому что через i2c можно выставить больше 3-х возможных частот.

gentoo_root ★★★★★
()
Ответ на: комментарий от deusexbeer

А мне вы поможете? У меня шина SMBus видна, TME в 0, генератор ICS9LPRS906CGLF. Я могу попробовать сам написать, но подскажите, где взять даташит. Заранее спасибо.

gentoo_root ★★★★★
()
Ответ на: комментарий от deusexbeer

Конечно пробовал еще в начале показывает это:

http://pastebin.calculate-linux.ru/ru/show/1471

Подключение модулей ничего не дает(

modprobe i2c-dev

modprobe coretemp

Вывод i2cdetect выше публиковал - только nvidia.

Перебор других модулей i2c пока не принес успеха...

Вот по поводу quirks упустил. Спасибо за направление.

http://pastebin.calculate-linux.ru/ru/show/1472

Пошел ядро перемалывать...

glibych ★★
() автор топика
Ответ на: комментарий от deusexbeer

>Для ICS чипов idt.com

Похоже, мне не повезло. Нашёл на сайте страницу с нужным генератором, но там нет даташита.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

У меня тоже не получалось найти даташиты на том сайте.

Перекомпиляция ядра не выявила ничего нового, загрузки с разных liveCD от Mint (Debian-овского), Убунты 10.04, Gentoo 11.0, Sabayon 5.5 тоже ни к чему не привели. Обнаруживается только nvidia ну и температурный датчик... В общем делайте пока на тот генератор. Если получится решить вопрос с обнаружением генератора на ASUS N10J - попробуем его распотрошить. Но пока видимо руки не встанут в нужное место придется отложить этот вопрос до появления новых идей(( Большое спасибо за посильную помощь. В общем пока продолжаю поиск решения.

А сама идея более плавной хоть и шаговой смены частоты на лету неплохая... Можно было бы написать адаптивный алгоритм изменения и неплохо экономить батарейки в дороге.

glibych ★★
() автор топика

Помню,очень удивился когда загрузившись с GHOST BSD лайвсиди добавил стандартный гномовский аплет регулировки частоты,и он позволил мне регулировать частоту процессора от 100МГц с шагом в 100 МГц. При чем реально работало изменение,засекал по производительности архиватора.

Borigenz
()
Ответ на: комментарий от glibych

>В общем делайте пока на тот генератор.

Если бы это было так просто без даташита :). Единственное, что мне лезет в голову — писать случайный байт, потом 5 раз 0xFF, потом, если не зависло/перезагрузилось/выключилось/умерло, измерять частоту с x86info и запоминать, что такой байт работает. Придётся сделать всего 256 попыток %)

Можно было бы написать адаптивный алгоритм изменения и неплохо экономить батарейки в дороге.

Если это типа ondemand/conservative в cpufreq, то будет медленнее работать из юзерспейса, чем ядерный cpufreq. Я хотел поставить частоту на минимум, установить легковесное окружение программ и работать так для экономии батареи, которая, кстати, умерла =(

gentoo_root ★★★★★
()
Ответ на: комментарий от Borigenz

>очень удивился когда загрузившись с GHOST BSD

Уже качаю, посмотрим. Но всё же маловероятно, что поможет. Если у вас в Линуксе было меньше различных частот, чем в GHOST BSD, то это может быть, оттого что в Линуксе использовался специфичный для процессора драйвер cpufreq, а в BSD обычный acpi-cpufreq (ну не верю, что наоборот; у Линукса должна быть лучше поддержка устройств), который оказался лучше, чем специфичный. У нас же acpi-cpufreq используется и в Линуксе. Но попробовать стоит. Если всё железо заведётся, будет такое хорошее переключение частоты и для GHOST BSD есть ndiswrapper (мой вай-фай поддерживается только макосью, Линуксом и вендой), то можно подумать о переходе на него.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Чем кончился эксперимент? Судя по отсутствию коментов дальнейших ничего не вышло? Линукс мне даёт три значения, 800МГц-1.6ГГц-2.27ГГц,проц P8400. Ноут mitac 9008D, OEMная платформа. Может дело в этом.

А вообще когда я боролся за каждый ватт и градус, использовал PHC,регулировка напряжения на проце. После пары дней тестирование стабильности выигрыш в температуре на несколько градусов в простое и почти на десяток под нагрузкой. Соответственно и время работы скакнуло вверх,уж не помню на сколько. Из всех оптимизаций самую ощутимую прибавку дало.

Borigenz
()
Ответ на: комментарий от Borigenz

>Чем кончился эксперимент?

Ещё не начался =). Я только образ скачал, на флешку ещё не писал и не загружался.

А вообще когда я боролся за каждый ватт и градус, использовал PHC,регулировка напряжения на проце.

Спасибо, попробую. Там, вроде, написано, что атом поддерживается. Там патч на ядро лежит, а что делать после того, как я пересоберу ядро, чтобы это заработало? И как настраивать?

gentoo_root ★★★★★
()

У меня была очень похожая ситуация с той которую описал Borigenz. Rак только я купил ноут, я очень назойливо пробовал продлить его автономную работу. И однажды у меня получилось для Core2duo T5600 задать частоту в 333MHz (точно не помню, было это ~4 года назад) хотя минимальная по спекам для него 1GHz. менял только конфиг ядра, смотрел результаты cpufrec-info. Тогда я еще не знал правило «работает - не трогай» и «поломал» в скором времени те настройки

ZuBB ★★★★★
()
Ответ на: комментарий от Borigenz

Я сейчас использую KDE дистрибутив Кальки. До этого использовал дистрибутив с Gnome, припоминаю, что там есть виджет, который позволяет регулировать частоту. Самое интересное было то, что он одно время использовал частоты и выше и ниже ограничений. Тоже работало. После какого-то обновления пропали нестандартные частоты. Это было на версии 10.4 или 10.9 Кальки - точнее не подскажу. Вероятно это свойство определенного виджета в Гном и соответственно будет работать в практически любом дистрибутиве линукса при определенной корректировке его настроек, но я то работаю на КДЕ и мне это не подходит.

glibych ★★
() автор топика
Ответ на: комментарий от glibych

>Вероятно это свойство определенного виджета в Гном

Тот гномовский апплет просто использует интерфейс cpufreq в /sys. Все возможные фичи определяются только ядром, которое предоставляет этот интерфейс. Попробуйте более старые ядра или другой ядерный модуль для cpufreq, гном тут точно не при чём.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Самое простое - поиграться с zen-kernel,там PHC включен. Для убунты и дебиана есть liquorix,там уже и патч на ядро и модуль ядра есть. Для убунты еще ppa на лаунчпаде имеется, но там только патч накатан,модуль надо скачать и подгружать. А еще на форуме есть ветка про накат патча на ядро и запуск,и вообще форум там полезный.

Пример как это работает можно глянуть тут или тут. У меня работает только при ondemand, в других режимах ставит стандартную напругу. По этому тестировать на стабильность при минимальной и средней частоте скриптами которые везде приведены не получилось,пришлось изобретать велосипеды.

Borigenz
()
Ответ на: комментарий от Borigenz

Спасибо за ссылки. Будем тоже посмотреть.

Я тут заглянул в статистику...

CPU 0

cpufreq stats: 1.60 GHz:38.43%, 1.33 GHz:0.48%, 1.07 GHz:0.56%, 800 MHz:60.53% (12546)

CPU 1

cpufreq stats: 1.60 GHz:37.81%, 1.33 GHz:0.54%, 1.07 GHz:0.37%, 800 MHz:61.28% (11733)

В итоге видим, что 38% процессоры работают на максимальной скорости, по 1% на двух средних и 60% времени на низкой скорости.

glibych ★★
() автор топика
Ответ на: комментарий от glibych

Тогда разумно будет для средних частот VID выставить таким же,что и на максимальной.Ощутимых потерь не вызовет,а заморочек с тестированием уменьшит.

Borigenz
()
Ответ на: комментарий от Borigenz

Возможно. Отталкиваясь от Ваших ссылок по phc нашел 2 пакета phc-intel и phctool. Сейчас посмотрю что могут они.

glibych ★★
() автор топика
Ответ на: комментарий от Borigenz

>Самое простое - поиграться с zen-kernel,там PHC включен.

zen-kernel давно когда-то выпилил, не нужен был. Может, в sys-power/phc-intel как раз нужные модули?

Пример как это работает можно глянуть тут или тут.

Спасибо, посмотрел. Значит, настраивается через sysfs.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

В общем эта штуковина не совсем то, что нужно, однако может управлять вольтажем:

http://clip2net.com/clip/m23976/1311550839-clipj24645-82kb.png

Частоты не меняет по крайней мере фронтенд. Запускаеть можно в трее phctray или phctool. На ядро 2.6.38.8 не встает, нормальных патчей не нашел, пришлось на пробу откатываться до ядра 2.6.37.6

glibych ★★
() автор топика
Ответ на: комментарий от glibych

>На ядро 2.6.38.8 не встает, нормальных патчей не нашел, пришлось на пробу откатываться до ядра 2.6.37.6

Модуль же есть в sys-power/phc-intel, патчи не нужны тогда. Только он у меня почему-то не завёлся:

FATAL: Error inserting phc_intel (/lib/modules/2.6.37-gentoo-r6-02/misc/phc-intel.ko): Invalid module format

Ядро 37-ое, но по другой причине.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Завёл таки этот phc, какой-то throttling not available, в гуе ничего не видно (n/a во все поля) и сыплются питона ошибки на консоль и эти:

ERROR while writing VIDs to interface.
Руками сделал:
laptop ~ # echo 0 0 0 > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids 
laptop ~ # echo 0 0 0 > /sys/devices/system/cpu/cpu1/cpufreq/phc_vids
Никакой разницы не видно. Частота так и меняется, как раньше. Как понять, изменилось ли при этом напряжение?

gentoo_root ★★★★★
()
Ответ на: комментарий от glibych

>Модуль нормально добавился?

Да, с этим я уже справился. В /sys появились его файлы. Что надо писать в phc_vids для лучшего результата, и как понять, что что-то произошло?

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

У меня например вот так живет:

echo "19 19 12 6"  > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
echo "19 19 12 6"  > /sys/devices/system/cpu/cpu1/cpufreq/phc_vids

При базовых значениях 39 34 23 17. Это для 8400 интеля. Если записал туда нули,и оно не повисло - то или не сработало,или очень удачный процессор,или это особенность атома. Проверить температурой под нагрузкой. Запустить что-то,полностью сжирающее процессор,дать установиться температуре,записать низкие значения VIDсов,посмотреть снизилась ли температура процессора. У меня падает буквально на глазах. Еще по повертопу видно при работе от аккумулятора,сразу падает потребление. Проблема в том,что на атоме все это может быть на гране погрешности,слишком мало жрет процессор. У меня то разница выходит почти в десяток ватт,ее сразу видно.

Вобще методика простая - пишем все меньшие и меньшие значения пока не начнутся глюки и зависания. Как начались - подымаем на 3-5 шажков и оставляем.

Первое число соответствуют максимальной частоте,последнее - минимальной. Экспериментировать проще всего на первом числе,держа процессор под постоянной нагрузкой. На форуме PHC есть матчасть как соотносятся Vid и реальное напряжение на процессоре.

Borigenz
()
Ответ на: комментарий от Borigenz

>Проверить температурой под нагрузкой. Запустить что-то,полностью сжирающее процессор,дать установиться температуре,записать низкие значения VIDсов,посмотреть снизилась ли температура процессора.

Ага, собирался у меня сейчас webkit-gtk уже несколько часов, записал на свою голову нули в оба ядра, сразу завис Линукс, но всякие кнопки выключений вай-фаев работали (когда игрался с i2c, зависло так, что и они не работали). И не отвис же, блин, пришлось перезагружаться. Теперь заново webkit собирать, чорд. Ещё и файлы какие-то потерялись в ~…

Теперь эти нечеловеческие эксперименты буду проводить только в single, когда / в ro смонтирована, а всякие /home вообще размонтированы.

gentoo_root ★★★★★
()
Ответ на: комментарий от Borigenz

Было 35 27 19, начал уменьшать во время сборки webkit-gtk, когда уменьшил на 13 пунктов все числа (что как бы намекает), выпал сначала Kernel Oops, потом паника. Оставлю что-то типа 24 16 8.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Я проще делал. Скрипт башовый запускал с cpuburn. Он понижал vid c каждым проходом до тех пор, пока из-за недостаточного напряжения на процессоре под нагрузкой система не вырубалась. Потом накинул для подстраховки по 3 пункта на каждое значение. В rc.local закинул echo «my_vid» > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids Потом забил на это дело, не поспевает phc за новыми ядрами.

kraftello ★★★★★
()
Ответ на: комментарий от kraftello

>Потом забил на это дело, не поспевает phc за новыми ядрами.

А в чём проблема? Модуль не собирается с новым ядром?

Скрипт башовый запускал с cpuburn.

Странно, это работает. Я думал, что ‘while true; do :; done’ не заработает, всегда для такого писал на Си ‘main(){for(;;);}’, а на баше, оказывается, тоже работает.

под нагрузкой система не вырубалась

Это она хоть вырубается, а у меня вообще феерия с упсами и паниками %). Кстати, до этого никогда не видел Oops, были только паники.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Да, были с ним проблемы когда-то. Только приехал домой, нормально собралось. В арче изменили подход. Всё значительно проще сделали.

/etc/rc.d/phc-intel setup

cat /etc/conf.d/phc-intel

# configuration for phc-intel

# voltage IDs to be set for all CPUs

VIDS=«25 20 15 10 5 3»

kraftello ★★★★★
()
Ответ на: комментарий от gentoo_root

lsmod|grep phc

phc_intel 8314 1

freq_table 2055 2 cpufreq_ondemand,phc_intel

mperf 1035 1 phc_intel

processor 21884 2 phc_intel

kraftello ★★★★★
()
Ответ на: комментарий от Borigenz

Эх, так и не дособрал я вебкит… Разогнал процессор, сначала компилятор вылетел с сегфолтом, потом я продолжил сборку, и сразу процессор схватил #MC. Повысил vid'ы на 2 пункта. Жаль, что нельзя задать отдельный набор vid'ов при разгоне, который операционная система не замечает.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Поставь первый vid побольше при максимальной частоте. Остальные оставь прежними для экономии батареи. Ты же не собираешься делать ресурсоёмкие задачи при работе от батареи.

kraftello ★★★★★
()
Ответ на: комментарий от kraftello

>Поставь первый vid побольше при максимальной частоте. Остальные оставь прежними для экономии батареи. Ты же не собираешься делать ресурсоёмкие задачи при работе от батареи.

Тут идея вот в чём: процессор работает на 3-х частотах: 1 ГГц, 1.33 ГГц, 1.66 ГГц. Есть кнопка Fn+F10, которая повышает FSB на 15%, при этом 1.66 ГГц становится 1.88 ГГц, а остальные 2 частоты тоже повысятся. Я не могу гарантировать, что всё время, пока процессор в разгоне, он работает на максимальной частоте, поэтому при разгоне надо все vid'ы повышать, а не только первый. Но узнать из Linux, когда я нажимаю на Fn+F10 (чтобы изменить vid'ы), затруднительно, потому что скан-код нормально перехватить могут только иксы, а они не всегда запущены/активны. Возможно, она генерирует ещё и acpi-событие, но у меня нет acpid. В принципе, наверное, поставлю acpid, буду ловить событие кнопки, определять частоту через ‘x86info -mhz’, а потом устанавливать правильные vid'ы.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Мдааа, идею понял. Честно говоря, недобук с кнопкой турбо для разгона - открытие для меня. Сразу вспомнил про эту кнопку на старых системниках.

Я тут нагуглил vids для 270 атома.

http://www.linux-phc.org/forum/viewtopic.php?f=7&t=29

kraftello ★★★★★
()
Ответ на: комментарий от kraftello

>Честно говоря, недобук с кнопкой турбо для разгона - открытие для меня.

В MSI Wind'ах такая есть, при работе от сети разгоняет, а если работать от батареи && под вендой, то она включает «экономный режим». Насколько я понимаю, это то же самое, что powersave в cpufreq, но при этом в венде ещё и светодиод питания загорается зелёным. Надо будет в i2c ещё повтыкать, может, получится зелёным засветить, можно будет перемигивание сделать сине-зелёное %).

Я тут нагуглил vids для 270 атома.

У меня 280-ый, должно быть что-то похожее. Но ТС (не здесь, там) — читер, у него почему-то 4 значения частоты. Ещё у него на самой высокой частоте значение, с которым у меня было #MC при разгоне. Видимо, он не разгонял (а 270-ый гонится лучше, но у него, кажется, память медленнее; 280-ый лучше по производительности, в общем). А на самой низкой у него 15, у меня 10, что меня настораживает. Webkit ещё собирается, процессор разогнан, пойду вставлю powersave и проверю. Если зависнет, опять придётся заново начинать %).

Кстати, вот у меня при перегреве до 87 градусов разгон отключался, чтобы остыл, но при пониженном напряжении и меньшая температура опасна, хотя и греется меньше (а главное — не шумит). Биос пропатчить не могу, чтобы уменьшить число 87, cpufreqd не поможет (разгон программно не отключается, максимум, что сделает cpufreqd — это вставит powersave), что бы ещё придумать?

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Да пришло в голову простое решение.

Использовать режим performance при разгоне. Тогда vid для 1 ГГц, 1.33 ГГц при ondenmand можно сделать поменьше для экономии батареи.

kraftello ★★★★★
()
Ответ на: комментарий от gentoo_root

Вот это не понял

>при пониженном напряжении и меньшая температура опасна

Чем при undervilt может быть опасна меньшая температура? Я как как раз phc использовал для понижения температуры проца, от батареи редко работаю. А вот шум кулера раздражал.

kraftello ★★★★★
()
Ответ на: Да пришло в голову простое решение. от kraftello

>Использовать режим performance при разгоне.

Можно было бы, если бы автоматизировать. Но, к сожалению, поставив acpid, я увидел, что кнопка разгона не генерирует acpi-событие, а только скан-код. Перехватить и забиндить можно только в иксах, а т.к. иксы не всегда запущены и активны, то невозможно делать какие-то действия при нажатии на кнопку разгона, чтобы вставить тот же performance при разгоне. А руками выставлять — это не то, система сама должна не дать себе сдохнуть.

Чем при undervilt может быть опасна меньшая температура?

Я так понимаю, что зависал он или терял информацию и ловил #MC, упсы и паники при слишком низном напряжении под нагрузкой из-за того, что нагрелся до температуры, критичной при низком напряжении, но безопасной при обычном напряжении. Или я неправ, а причина падений не температура?

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

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

P.S. gentoo_root спасибо за очень простое руководство по samba.

glibych ★★
() автор топика
Ответ на: комментарий от glibych

>Чисто по логике температура тут ни при чем должна быть.

Я просто теперь не знаю, стоит ли заводить cpufreqd, чтобы он не давал греться до определённой температуры (интересно ещё, какой?), или же и так всё будет работать. Пока что зависаний, упсов и паник не было.

gentoo_root спасибо за очень простое руководство по samba.

Вы меня, наверное, с кем-то путаете, я не помню такого =)

gentoo_root ★★★★★
()
18 сентября 2011 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.