Skocz do zawartości

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


Gość s6s

Rekomendowane odpowiedzi

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

 

Odnośnik do komentarza
Udostępnij na innych stronach

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. ;)

 

Odnośnik do komentarza
Udostępnij na innych stronach

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...)

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

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ć! 

Odnośnik do komentarza
Udostępnij na innych stronach

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ć!)

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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?)

 

Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

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.

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 5 miesięcy temu...

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.

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...