Prozessorzeit

Rund um die Software von Revolution Pi
Post Reply
Tim
Posts: 23
Joined: 08 Jun 2017, 08:19

Prozessorzeit

Post by Tim »

Hallo,
ich habe ein kleines Programm geschrieben, das mir nach 5 Sekunden zeigt, das 5 Sekunden um sind.
Wenn ich das Programm auf dem RevPi Core laufen lasse, endet es aber erst nach 7 Sekunden, zeigt mir aber 5 Sekunden an. Irgendwie stimmt die Prozessorzeit nicht habe ich das Gefühl.
Das gleiche Programm habe ich auf meinen Raspberry Pi 3 laufen und dort funktioniert es, also nach 5 Sekunden bekomme ich die Meldung das 5 Sekunden um sind.
Kann mir wer helfen?
Attachments
clock.jpg
clock.jpg (17 KiB) Viewed 6326 times
Tim
Posts: 23
Joined: 08 Jun 2017, 08:19

Re: Prozessorzeit

Post by Tim »

Der Fakt verstärkt sich mit der zeit, also wenn ich 30Sekunden eingebe, endet das programm erst nach ca. 50Sekunden.
Timo
Posts: 44
Joined: 25 Jan 2017, 10:08

Re: Prozessorzeit

Post by Timo »

Wenn es dir um ein genaues Signal geht, mit dem du etwas takten willst, empfehle ich dir einen Signal Handler zu benutzen.
Siehe u.a.: https://stackoverflow.com/questions/400 ... ption-in-c

Code: Select all

void sigalrm_handler(int sig)
{
    // This gets called when the timer runs out.  Try not to do too much here;
    // the recommended practice is to set a flag (of type sig_atomic_t), and have
    // code elsewhere check that flag (e.g. in the main loop of your program)
}
...
signal(SIGALRM, &sigalrm_handler);  // set a signal handler
alarm(10);  // set an alarm for 10 seconds from now
Tim
Posts: 23
Joined: 08 Jun 2017, 08:19

Re: Prozessorzeit

Post by Tim »

Hallo Timo und danke für deine Antwort,
ich möchte zur laufzeit eines Programmes immer mal wieder abfragen ob die Zeit schon um ist, aber nicht das dies als eine art Interrupt funktioniert.
Daher war clock() relativ passend, da ich hier eine Startzeit abfragen kann und später dies mit dem neuen Stand vergleichen kann. Nur leider bekomme ich eine merkwürdige Taktzeit zurück.
Wie schon beschrieben habe ich beim Raspberry Pi dieses Problem nicht. Man könnte sagen, was normal eine Sekunde ist, interpretiert der RevPi Core als 1,5 Sekunden.
Tim
Posts: 23
Joined: 08 Jun 2017, 08:19

Re: Prozessorzeit

Post by Tim »

Das komische ist, das funktionien wie sleep() super funktionieren
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41

Re: Prozessorzeit

Post by volker »

Hallo Tim,
ich versuche dem mal auf den Grund zugehen. Entweder können unsere Linux-Leute was dazu sagen oder dann vielleicht die Raspi-Entwickler, zu denen wir einen ganz guten Draht haben...
Unser RevPi Motto: Don't just claim it - make it!
Tim
Posts: 23
Joined: 08 Jun 2017, 08:19

Re: Prozessorzeit

Post by Tim »

Hallo Volker,
über die Funktion "time()" funktioniert es wunderbar.
Die funktion "clock()" ist ansich ja generell ungenau, aber das Sie so ausschlägt ist mir neu, vielleicht bekommst du ja einen guten Hinweis dahingegend.
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41

Re: Prozessorzeit

Post by volker »

Hallo Tim,
die Ursache ist schnell erklärt: Clock() ist so definiert, dass es die verwendete CPU Time für DEINEN PROZESS ausgibt. Daher kannst Du die nicht als Zeitmesser verwenden, wenn da noch andere Prozesse laufen, die viel Rechenzeit beanspruchen. Bei Deinem Raspi 3 hattest Du halt nicht den RT patch und PiControl drauf... daher war clock() dann sehr nah an time(). Aber auf dem RevPi läuft halt schon eine große Menge Hintergrundprozesse, falls Du nicht ein eigenes Image ohne diese Prozesse gebaut hast. Dann ist eben clock() deutlich weniger als time()... ;)
Unser RevPi Motto: Don't just claim it - make it!
Tim
Posts: 23
Joined: 08 Jun 2017, 08:19

Re: Prozessorzeit

Post by Tim »

Danke dir Volker für deine Antwort, jetzt versteh ichs=)
Post Reply