вычисление нагрузки на ЦПУ стандартными средствами lua

хотел создать вычисление нагрузки на ЦПУ стандартными средствами lua.
сделал скрипт, только он неправильно почему то считает, получается больше почти в два раза нагрузка, чем на представленном тут баш скрипте, ну и соответственно в системном мониторе
при чем неплохо так сам скрипт нагружает проц... как я понимаю из-за трансляции из одного типа в другой (из строки в число).

что не правильно я там указал или сделал?
вроде все по формуле (вообще-то я просто скопипастил, т.к. в lua переменные и формулы подходят под прямое копирование), при чем сначала скопил с рабочего баш скрипта и просто привел к виду синтаксиса lua
https://github.com/copycat-killer/lain/blob/1ece7c35b7b119ebb1c1bef33d5c04507ff2f117/widget/cpu.lua
посмотри тут
https://github.com/warlock90000/awesome
warlock9000
https://github.com/copycat-killer/lain/blob/1ece7c35b7b119ebb1c1bef33d5c04507ff2f117/widget/cpu.lua
посмотри тут
эх данная трабла была из-за вычисления слипа. оно нагружало проц и по ентому версии переменных настоящего времени были повышены...
изменил на вот следующее

П.С. в ентом скрипте частный случай с подключением либ от awesome...

мой скрипт так то работает... поменял метод слипа и все стало норм
Конкретно за луа не скажу, но, в принципе разницы нет. Я позаимствовал алгоритм из i3status. Обсуждалось тут.
Дополнение к ссылке Aivar ......... еще обсуждалось здесь - приведено два/три скрипта ...
Ошибки не исчезают с опытом - они просто умнеют
О, vasek, спасибо. Так лучше. Я дал первый линк, какой нашел. )
Там смысл простой донельзя:
prev_total=0
prev_idle=0
далее в цикле (неважно с каким периодом):
tmp=`grep 'cpu ' /proc/stat | tr -s \ `
curr_user=`cut -d \  -f 2 <<< $tmp`
curr_nice=`cut -d \  -f 3 <<< $tmp`
curr_system=`cut -d \  -f 4 <<< $tmp`
curr_idle=`cut -d \  -f 5 <<< $tmp`

curr_total=$((curr_user+curr_nice+curr_system+curr_idle))
diff_idle=$((curr_idle-prev_idle))
diff_total=$((curr_total-prev_total))
diff_usage=$(((1000*(diff_total-diff_idle)/diff_total+5)/10))

prev_total=$curr_total
prev_idle=$curr_idle
diff_usage - загрузка процессора.
Единственный нюанс - ложно показывает 100% во время операции чтения/записи на флешку. Но это и в i3status так.
safocl
П.С. в ентом скрипте частный случай с подключением либ от awesome...
а я гляжу в луаскрипте то ты не силен, мягко говоря. (даже с моими скудными познаниями видно)
Я те дал готовый пример, в котором можно изменить пару строк (замена helpers на стандартную либу из луа и тд) и все
Но конечно, давай разведем очередную болтологию на 100500 страниц
https://github.com/warlock90000/awesome
в общем получилось что то вроде этого жалобы, предложения? П.С. лучше наверна убрать параметр fifo в настройках плагина timer, а то luastatus, либо псевдофайловая система начинает подвисать, тестил на смене расскладки (начинает переключаться иногда с задержкой), хотя если выключить браузер, потребление ресурсов проца не превышает 2-4%
warlock9000
а я гляжу в луаскрипте то ты не силен, мягко говоря
я с ним третий день общаюсь))) тока дошел до стандартных либ... а тут еще и luastatus, в котором тож свои либы есть))) и он вежливо просит заменять некоторые функции из стандартных либ своими
warlock9000
Но конечно, давай разведем очередную болтологию на 100500 страниц
вухахаахах ессесна енто ж интереснее)
 
Зарегистрироваться или войдите чтобы оставить сообщение.