Аналог cpufreqd конфигурируемый на lua

Хочется услышать оценок.
Может кто-нибудь поможет разместить в оверлее - sunrise или rion.
ebild и init внутри архива.
https://sourceforge.net/projects/lpmd/files/

Гм… А нафига? Я не помимаю,

Гм… А нафига? Я не помимаю, честно говоря, зачем нужно что-то кроме подходящего governor в настройках ядра.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Или он не просто cpufreq? А

Или он не просто cpufreq? А за батареей следить умеет, да?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

За батареей следить умеет, в

За батареей следить умеет, в конфиге по умолчанию задействовано.
В принципе умеет всё, что умеет cpufreqd.
Ещё он потребляет значительно меньше ресурсов чем cpufreqd, особенно процессора.
Когда появится свободное время добавлю отключение неиспользуемых ядер, на i7 работает.
Ну и гибкость.

А засыпать (`hibernate-ram`)

А засыпать (`hibernate-ram`) при разрядке? Испытываю желание запилить в rion. А то, моет, и в дерево пропихнём.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

krigstask написал(а): А

krigstask написал(а):
А засыпать (`hibernate-ram`) при разрядке? Испытываю желание запилить в rion. А то, моет, и в дерево пропихнём.

Не умеет пока, можно на lua реализовать.
Для основного дерева наверное недостаточно стабилен, всё таки под рутом работает.

batareykin написал(а): под

batareykin написал(а):
под рутом работает.

Хм, а зачем?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

cpufreq менять, для

cpufreq менять, для остального не требуется
В принципе можно у cpufreq файлов пользователя поменять, пробовал, всё работает

for CPU in $(cpufreq-info -r); do
                chown "${USER}:root" /sys/devices/system/cpu/cpu${CPU}/cpufreq/scaling_governor
                chown "${USER}:root" /sys/devices/system/cpu/cpu${CPU}/cpufreq/scaling_max_freq
                chown "${USER}:root" /sys/devices/system/cpu/cpu${CPU}/cpufreq/scaling_min_freq
                chown "${USER}:root" /sys/devices/syste /cpu/cpu${CPU}/cpufreq/phc_vids
done

но после hibernate они опять в root возвращаются

Я думаю, над этим надо как-то

Я думаю, над этим надо как-то подумать, чтоб демон мог sudo использовать или вроде того.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

krigstask написал(а): Гм… А

krigstask написал(а):
Гм… А нафига? Я не помимаю, честно говоря, зачем нужно что-то кроме подходящего governor в настройках ядра.

Можно менять политики в зависимость от запущенных процессов или от сенсоров.
Можно плавно управлять вентиляторами, если драйвер позволяет.

Если еще это штука будет

Если еще это штука будет уметь отсылать в system DBUS сообщения при изменении некоторых параметров, типа нижеприведенных - будет классно:

1. ядро включил/выключил
2. смена политики
3. смена статуса по питанию (батарея/адаптер, смена уровня заряда батареи - полный/норма/низкий/критический)
4. Что -то типа запроса "А какие возможности ты умеешь" - отключение ядер например, если у меня камень i7

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

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

Я хотел задействовать DBUS,

Я хотел задействовать DBUS, не знаю где найти хорошую документацию по нему.
Много времени займёт.

Сделай вменяемую билд-систему

http://lpmd.git.sourceforge.net/git/gitweb.cgi?p=lpmd/lpmd;a=blob;f=Makefile;h=dac0c837f5add9a02cc6956932aa088d561619b7;hb=HEAD
слишком жестоко.

Сделай вменяемую билд-систему - автотулсы или цмаке было бы хорошо

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Можно конечно, но особой

Можно конечно, но особой надобности нет.
Зависимости ebild проверяет, а больше ни каких проверок не требуется.
Мне придется время потратить на изучение автотулс или cmake, ибо ни с тем ни с другим я не знаком.
К тому-же сборка на голом make значительно быстрей.
Многие пакеты тоже собираются на голом make, например procps.

дык хозяин - барин ; только

дык хозяин - барин ; только сборка на маке из procps и ваше отличаются немного тем фактом, что там не захардкожено все подряд навроде
CFLAGS

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Так ведь у make можно через

Так ведь у make можно через командную строку переопределять переменные.
make CFLAGS="bla bla bla"
В ebilde я так и сделап.

а где ебилд ? а что про него

а где ебилд ? а что про него говорит репоман и ТоммиД ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

ебилд и инит есть в архиве,

ебилд и инит есть в архиве, но на всякий случай я их здесь покажу

EAPI=4
inherit toolchain-funcs

DESCRIPTION="Daemon controlling CPU, temperature, power, configurable in Lua
and using fuzzy logic rules"
HOMEPAGE="http://sourceforge.net/projects/lpmd/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.xz"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""

RDEPEND=""
DEPEND="sys-apps/lm_sensors
        sys-fs/sysfsutils
        sys-power/cpufrequtils
        dev-lang/lua"

src_compile() {
	emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" SYSCONFDIR="/etc" PREFIX="/usr" || die
}

src_install() {
	newinitd "${FILESDIR}"/lpmd.initd lpmd || die
	dosbin lpmd || die
	insinto /etc/
	newins "${S}"/lpmd.lua lpmd.lua
}
#!/sbin/runscript

CONFIG="/etc/lpmd.lua"


checkconfig() {
	if [ ! -e /etc/lpmd.lua ] ; then
		eerror "You need an /etc/lpmd.lua file first."
		return 1
	fi
}

start() {
	checkconfig || return 1
	ebegin "Starting lpmd"
	start-stop-daemon -u ${USER} -b -m -p /var/run/lpmd.pid \
	 --start --exec /usr/sbin/lpmd -- -c ${CONFIG}
	eend $?
}

stop() {
	ebegin "Stopping lpmd"
	start-stop-daemon --stop --pidfile /var/run/lpmd.pid
	eend $?
}

Репоман говорит:

  ebuild.minorsyn               3
   sys-power/lpmd/lpmd-0.0.5.ebuild: Ebuild contains leading spaces on line: 16
   sys-power/lpmd/lpmd-0.0.5.ebuild: Ebuild contains leading spaces on line: 17
   sys-power/lpmd/lpmd-0.0.5.ebuild: Ebuild contains leading spaces on line: 18

....

 ebuild.badheader              4
   app-mobilephone/gammu/gammu-1.31.0.ebuild: Invalid Gentoo Copyright on line: 1
   sys-power/lpmd/lpmd-0.0.5.ebuild: Invalid Gentoo Copyright on line: 1
   sys-power/lpmd/lpmd-0.0.5.ebuild: Invalid Gentoo/GPL License on line: 2
   sys-power/lpmd/lpmd-0.0.5.ebuild: Malformed CVS Header on line: 3

Что такое ТоммиД я, к сожалению, не знаю.

Ебилд кривой - RDEPEND пуст,

Ебилд кривой - RDEPEND пуст, что означает, что по --depclean бусут снесены зависимости.
Страдает синтаксис ебилда, не соотв. GLEP
Init тоже крив - не указаны зависимости, синтаксис устарел.

ТоммиД живет на #gentoo-sunrise ;), там можно попросить проверить ебилд

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

ебилд переделал, репоман

ебилд переделал, репоман теперь не ругается.

# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=4
inherit toolchain-funcs

DESCRIPTION="Daemon controlling CPU, temperature, power, configurable in Lua
and using fuzzy logic rules"
HOMEPAGE="http://sourceforge.net/projects/lpmd/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.xz"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""

RDEPEND="sys-apps/lm_sensors
		sys-fs/sysfsutils
		sys-power/cpufrequtils
		dev-lang/lua"
DEPEND=""

src_compile() {
	emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" SYSCONFDIR="/etc" PREFIX="/usr" || die
}

src_install() {
	newinitd "${FILESDIR}"/lpmd.initd lpmd || die
	dosbin lpmd || die
	insinto /etc/
	newins "${S}"/lpmd.lua lpmd.lua
}

Для init из зависимостей придумал только after modules.
А в чём выражается его устаревший синтаксис?

Я взялся за запихивание lpmd

Я взялся за запихивание lpmd в rion. Возникают вопросы:

* что, прямо так уж неважны версии зависимостей? Даже Lua 5.2 прокатит?
* `newinitd "${FILESDIR}"/lpmd.initd` — если init есть в архиве, зачем ${FILESDIR}?
* почему установку не сделать по-людски, через `make install`?

Предлагаю заглянуть в

и попинать меня.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

krigstask написал(а):Я

Lua 5.2 прокатит, проверено.
Касательно init как-то само так получилось, я голову особо не ломал, брал другой пакет на образец.
Хочу заменить в архиве на sourceforge init и ebuild

В качестве образца ебилда и

В качестве образца ебилда и пакета на чистом make рекомендую x11-wm/i3

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Я в воскресение займусь

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

Хорошо, я пока запихнул в

Хорошо, я пока запихнул в rion то, что есть.

Жаль, конечно, что проект не на bitbucket (или в крайнем случае github) живёт. SF им изрядно проигрывает.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

krigstask написал(а): Жаль,

krigstask написал(а):
Жаль, конечно, что проект не на bitbucket (или в крайнем случае github) живёт

Можно даже на google code, теперь git ваш везде есть.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Спасибо за помощь с

Спасибо за помощь с оверлеем.
А чем плох sourceforge?

1. Банально неудобен для

1. Банально неудобен для пользователей.
2. Сложно кооперироваться (никаких там форков и запросов на вливание).
3. Труднее другим следить за изменениями проекта.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Вот что никуда не годится —

Вот что никуда не годится — так это отсутствие документации. И конфиг куц.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Конфиг по умолчанию я сделал

Конфиг по умолчанию я сделал минимальным для понятности и совместимости , в папке контрибуте я выложил свой конфиг для ноутбука dell inspiron N5110 с процессором Core i7-2000 (Sandy Bridge D2), в нём есть детальные комментарии, для того чтобы въехать вполне достаточно.
Документации нету потому, что я не силён в английском, не хочу позорится, да и вообще писанину не люблю.
Кстати awesome вроде тоже документацией не богат.
Я тут версию 0.0.6 выложил, в ней добавлено выключение ядер, можно это обновить в rion? ebuild без изменений

Можно, конечно. А как насчёт

Можно, конечно. А как насчёт обновления системы сборки-то, чтоб make install ставил все нужные файлы, в том числе примерный конфиг.

Вообще без документации мало кто им не будет пользоваться.

awesome документацией не богат? Умолчательный конфиг подробен и откомментирован, куча документации генерируется luadoc'ом, даже wiki есть.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Примерный конфиг можно

Примерный конфиг можно ставить ебилдом без маке, документацию собираюсь писать, но нужно время.

Я наверное достал уже, но в

Я наверное достал уже, но в init скрипте ошибка
вместо start-stop-daemon -u ${USER} -b -m -p /var/run/lpmd.pid
нужно start-stop-daemon -b -m -p /var/run/lpmd.pid
из за этого не стартует при загрузке

Эх. Исправим, как выдастся

Эх. Исправим, как выдастся минутка.

А вообще надо:
1. Переехать на bitbucket.
2. Запихнуть весь contrib в репозиторий (чтоб и на init можно было по-человечески делать заплатки).
3. Освоить `git tags`, и тогда не надо будет ручками паковать новые версии, ориентироваться в истории и т.д.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

А в этой штуке можно

А в этой штуке можно параметрами рулить в зависимости от значения, например, заряда аккума. или температуры?
Допустим, рулить верхней планкой conservative, или ondemand?
И как это делается, если возможно: через дискретные значения диапазонов, или можно через функцию динамику задать?
Например. в текущий момент, у меня подстройка происходит каждые 5% разряда и каждые 5 градусов нагрева свыше 60, такое можно провернуть?

:)

lua - язык программирования,

lua - язык программирования, там все можно )

--Определяем сенсор CPUcpu =

--Определяем сенсор CPU
cpu = getSensor("temp1")

--Задаём функции принадлежности трапецевидной формы 
cpu_cold   = fuzzy(-150, -150,  0, 50)
-- это означает от -150 до 0 истину (1.0), -150 взято от балды, можно -100000
-- от 0 до 50 результат будет нечёткое значение линейно от 1.0 до 0.0

cpu_hot    = fuzzy( 0,  50, 150, 150)

--Далее можно их использовать в функции sensor(cpu,cpu_cold)
--или sensor(cpu,cpu_hot)
--они возвратят значение от 0.0 до 1.0 по описанной выше схеме
--Всё тоже самое для батареи и загрузки CPU

function norm (n) if n >= 0.5 then return true else return false end end
--norm преобразует результат в boolean
profiles = {
	ActiveProfile = function()
		if norm(sensor(cpu,cpu_hot)) then
			-- установить cpufreq
		else
			-- установить другой cpufreq
		end
	end
}
--ActiveProfile вызывается раз в секунду или как задашь

Подробнее о нечёткой логике можно почитать википедии

cpufreq задаётся так

-- задаём полиции один раз
low_policy = policy(800000,1600000,"conservative")
max_policy = policy("1.0 GHz","MAX","ondemand")

--применяем их для всех CPU
cpufreq("ALL", low_policy)
cpufreq("ALL", max_policy)

В архиве есть мой конфиг с подобными комментариями.

весьма впечатляет. Ещё

весьма впечатляет.

Ещё интересует насколько вы смогли абстрагироваться от железа и sysfs. Иными словами интересует насколько развитым API обладает эта штука? Хотелось бы избежать необходимости сочинять свои функции для вызова сторонних программ и/или работы непосредственно с sysfs для получения/задания тех или иных параметров, типа смены гувернера, частотных диапазонов в поддерживающих такое гувернерах, наличия электропитания, состояния аккума, температуры проца и тд., иначе сие будет ничем не лучше наколенного скрипта который способен наваять любой более-менее искушенный линуксоид.

:)

Запуск сторонних программ я,

Запуск сторонних программ я, к сожалению, не реализовал ещё, но собираюсь сделать это.
Из датчиков есть возвращающие нечеткое значение:
sensor (fuzzy, sensor)
cputime (fuzzy)
battery (fuzzy) или battery (fuzzy, battery)

возвращающие boolean:
process (...) - находит запущенные процессы
onAc () - проверяет сетевой адаптер

Действия:
cpufreq (...) - меняет cpufreq полицию
cpuon (...) - включает или выключает ядра

Еще есть вспомогательные и управляющие программой функции.
Всё это реализовано на си.

Можно ещё плавно управлять вентиляторами, используя нечёткое значение, но у меня нет оборудования поддерживающего управление вентиляторами, и возможности попробовать нет. В примере я написал как это сделать на lua.

Я что-то пропустил, с каких

Я что-то пропустил, с каких пор fuzzy() появилось в Lua? :)
И да, про сторонние программы: а что там реализовывать-то? :) Взял, сделал в lua-песочнице алиас на os.execute (можно в coroutine'е, чтобы не висеть) перел очисткой окружения и всего делов.
Хотя можно и на сях реализовать...

fuzzy тоже я сделал, она

fuzzy тоже я сделал, она просто создаёт lua_userdata со структурой, и в этой структуре сохраняет четыре double параметра. Выше я не описывал вспомогательные функции.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".