Jump to content

BSKA, moderate shutdown, timer - więc jak wreszcie? ;)


Guest s6s

Recommended Posts

Przed wakacjami próbowalismy razem ;) rozwiązać sprawę zegara systemowego w ADB podczas moderate shutdown który to zegar jak wiemy zwalnia razem z taktowaniem CPU w tych dekoderach (wątek: "Korekcja czasu w ADB5800 przy OC - bez ntpdate")

 

Ale widzę że od paru aktualizacji BSKA mamy WIĘKSZY problem! Otóż w ogóle nie nagrywa zadanych audycji ze stanu "moderate shudown". A raczej: wybudza się ale ZA PÓŹNO!

 

-------------- EDIT: wyrzucam błędną początkową hipotezę co do intencji dev-ów ;)

 

Poza tym:

- czas podczas moderate shudown na wyswietlaczu nie chce zostać wyswietlony

 

Link to comment
Share on other sites

nie wiem kto próbował rozwiązać problem spowalniania, ale chyba jednak nie autor moderatestandby. ;)

Wspomniany wyżej skrypt jednoznacznie rozwiązuje problem z czasem na tunerze adb5800 a więc  i problem z nagrywaniem. Oczywiście siec musi być.Na arivie problem nie występuje bo ten skrypt się nie uruchamia. ;)

 

Link to comment
Share on other sites

Jeżeli już /etc/cron/minutely/ntpdate to tylko podczas "moderate shutdown" ponieważ wtedy efektywnie "co minutę" oznacza co siedem minut.

Po wybudzeniu powinno skasować się to z  /etc/cron/minutely bo jednak za często wywołuje ntpdate

Czy naprawdę myslisz że co minutę (realną) to OK?

 

(Poza tym, co robi własciwie ntpdate? Ponieważ ten mój skrypt "adjustClock" próbował kompensowac czas, i robi dobrze. Ale jakos to zakłóca wybudzanie się realne. W linuksowym "man" napisano, że nptdate działa na poziomie systemowym tak żeby wsþóldziałać poprawnie z cron - wiesz może jak konkretnie?

 

Ale jednak jakby przeliczać sekundy do kolejnego nagrania przez pomnożenie ich przez wielokrotnosć spowolnienia taktowania CPU to wydaje się to włąsnie najprostszym i najelegantszym rozwiązanie, nie potrzebującym internetu! Przy założeniu, że wyłączymy zegar z wyswietlacza podczas moderate...)

 

 

Link to comment
Share on other sites

Empirycznie własnie to sprawdzam i... Jednak LIPA!

Jak oto wygląda pod htop w "moderate shutdown" kiedy zadane nagranie wypada za około 8 min:

/bin/sh /etc/cron/moderatestandby_on/60timerwakeup
`- sleep 455

Mechanizm "moderateshutdown" zadaje ilosc sekund dla polecenia "sleep", bez żadnego przeliczenia.

Więc czy czas zostanie uaktualniony czy nie - i tak system CZEKA zadaną ilosc sekund "REALNĄ", co w przypadku spowolnionego zegara oznacza że system się obudzi ale za "kilka razy" więcej czasu niż trzeba!

 

Panowie, trzeba to poprawić! 

Link to comment
Share on other sites

Chyba Szanowny Kolega źle zrozumiał...

W taki razie inne pytanie, co pokazuje:

GraterliaOS:~# cat /tmp/wakeup 
Wakeup after 455 seconds

?

 

 

W pliku /etc/cron/moderatestandby_on/60timerwakeup

mamy bowiem cos takiego:

   WakeupInSec=$(( $WakeupTime - $CurrentTime - 120 ))
   echo "Wakeup after $WakeupInSec seconds" >/tmp/wakeup
   doWakeup &

A funkcja doWakeup ma w sobie owo "sleep":

doWakeup() {
sleep $WakeupInSec
...}

 

Więc czeka i czeka! (Jak taktowanie w MHz jest spowolnione iles razy to tyleż razy czeka za długo! Wystarczy $WakeupInSec przemnożyć!)

Link to comment
Share on other sites

Sprawdziłem sobie co pisał @s6s. Ogólnie: zegar zegarem a sleep sleepem. Jeżeli zapodamy sleep 60, to będzie spało przez 60 sekund ... znaczy się 60 jednostek. W tym czasie możemy sobie dowolnie zmieniać ustawienia dany i godziny dowolną metodą a sleep odmierza swoje nic sobie z tego nie robiąc.

Link to comment
Share on other sites

Jasne, Mickey, własnie mam taki sam wniosek.

Więc teraz działa źle: sleep <ilosc_sekund_REALNA> w BSKA/BSLA w stanie "moderate shudown" oznacza, że REALNIE poczeka tę ilosc sekund RAZY około SIEDEM (265/36 = 7.36111111111)

 

Prosta modyfikacja w /etc/cron/moderatestandby_on/60timerwakeup

jak następuje:

doWakeup() {
LILICZAS=$(( $WakeupInSec * 3 / 22 ))  ### 36/264=9/66=3/22
sleep $LILICZAS

zapewniła że teraz ma BSKA wybudza PRZED zaplanowanym nagraniem!

 

Przy czym lepiej, żeby wybudzało duuużo wczesniej niż za późno ;)

Jeżeli wbudzi duużo za wczesnie - to najwyżej zaktualizuje ową ilosc sekund do 'sleep' i przyjmie stan "moderate shutdown" znowu...

 

Ale rzecz jasna, trzeba by jakos PEWNIEJ obliczyc ten wspólczynnik przez który mnożonoby $WakeupInSec,

może poprzez odczyt:

  /proc/cpu_frequ/pll0_ndiv_mdiv

  /tmp/CurrentSpeed

a następnie odpowiednie przetworzenie tychże wartosci?

Jakies sugestie? Jakby zrobic to najeleganciej? ;)

 

Wyznam, że nie ogarniam jak dokładnie oblicza się owo CurrentSpeed (wiem, że okresla ona jakos wartosc MHz jeszcze sprzed przyjęcia stanu "moderate shutdown" - ale jak?)

 

Link to comment
Share on other sites

ale  oczywiście czytacie co napisałem wcześniej... :P

 

Zacytuję, jakby było za trudno przewinąć:

po aktualizacji, moderate nie będzie spowalniało zegara w przypadku zaplanowanych zadań.

 

i ta aktualizacja już nastąpiła

Link to comment
Share on other sites

  • 1 month later...

Jak widać oficjanym remedium okazało sie jedynie wstrzymanie standby w sytuacji kiedy jest zaplanowane nagranie.

 

A przecież wystarczyło w /etc/cron/moderatestandby_on/60timerwakeup zrobić :

doWakeup() {
LILICZAS=$(( $WakeupInSec * częstotliwosć_w_standby / częstotliwosć_w_wakeup ))  ### 36/265
sleep $LILICZAS

 

Ja tak mam i działa mi IDEALNIE! Wybudza się z moderate_shutdown na parę minut przed zaplanowanym nagraniem!

Zachęcam Kolegę dev-a do zaaplikowania tego prostego rozwiązania ;)

 

Poza tym zachęcam do przyjrzenia się temu deamenowi przeze mnie skleconego co koryguje czas bez dostępu do Internetu - działa mi bardzo dobrze już którys miesiąc! :)

 

Wówczas przy nim pewna niedokładnosć rzecz jasna i tak pojawi się - lecz jej wartosć zaczyna mieć znaczenie praktycznie może po 2-3 dniach! (Ale przeciez i to można dostroić adekwatnymi parametrami w pliku sh. Ja zadowalam się tamtymi.) Więc w takiej sytuacji powiedzmy wystarcza ntpdate wrzucić do cron/daily.

 

 

Link to comment
Share on other sites

  • 5 months later...

Mam takie małe pytanko. Jak tuner aktualnie nagrywa i chcę wyłączyć tuner (tryb moderate), to mam pytanie, że trwa nagranie i czy na pewno wyłączyć.

Moje pytanie jest takie: czy ten komunikat można by zastąpić po prostu przejściem w zwykły tryb czuwania, albo komunikat w stylu:

 

Tuner aktualnie nagrywa, czy na pewno chcesz wyłączyć, czy tylko przejść w stan czuwania?

1) stan czuwania,

2) wyłączenie

, z domyślnym stanem czuwania.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...