Belastung durch sleep?

Bejobe

Neuer User
Mitglied seit
19 Mai 2005
Beiträge
163
Punkte für Reaktionen
0
Punkte
0
Inwieweit belasten eigentlich verschiedene gleichzeitig (in Endlosschleifen) laufende Befehle "sleep" in verschiedenen (mit & in der debug.cfg) resident gemachten Scripten das System einer Fritzbox (oder allgemeiner eines Linux)? Darüber wollte ich schon immer einmal etwas Genaueres wissen und dabei - wenn möglich - auch etwas von den technischen Hintergründen erfahren.

Mit Dank für kenntnisreiche Antworten.

Bejobe
 
Ein sleep verbraucht Speicherplatz, ebenso wie die Shell, die vermutlich das sleep gestartet hat.
Das sleep verbraucht keine CPU-Zeit, allerdings steht in der Schleife vermutlich nicht nur sleep drin ...
 
... allerdings steht in der Schleife vermutlich nicht nur sleep drin ...

Es laufen 3 Scripte. Diese warten in ihren Schleifen unterschiedliche "sleep"-Zeiten (nämlich "sleep 900" (=15Min), "sleep 3600" (=1h), "sleep 43200" (=12h)).

Die Aktionen, die die drei Scripte in den Schleifen nach 15min, 1h bzw 12h sonst noch erledigen, wenn sie nicht im "sleep" verharren, sind dagegen in Zeit und Belastung für die Fritzbox bedeutungslos.

Das sleep verbraucht keine CPU-Zeit
Das mag ja sein, aber die Antwort reicht mir nicht:

- Warum ist das so?
alternativ:
- Wo steht das (bzw wo kann ich genaueres dazu finden)?

Bejobe
 
Sleep nutzt einen Betriebssystemaufruf, um den Prozess/das Script in die Warteposition zu stellen. Es entsteht natürlich CPU-Belastung, allerdings extrem minimal.
Wenn man eine Verzögerung mit einer einfachen Programmschleife realiert, z.B.
Code:
for (int i=0;i<10000000;i++);
treibt die Verzögerung die CPU-Last auf 100%.
Eine Beschreibung von Microsoft für sleep unter Window ist z.B hier zu finden, ähnliches gilt für Linux.
 
Zuletzt bearbeitet:
Moin,

- Warum ist das so?

Weil Sleep extra dafür geschaffen wurde einem Prozess eine Wartefunktion zu Bieten die das System nicht belastet.
Bei SingleTask Systemen war es "früher" durchaus üblich Wartezeit mit Zählschleifen zu überbrücken es musste ja keine Rücksicht auf andere Prozesse genommen werden.

-teddy
 
Danke für eure Bemühungen. Ganz stellen die Antworten aber leider noch nicht zufrieden.

...ähnliches gilt für Linux.
Danke für den Link, genau so einen brauchte man nun eben für Linux. Wo findet man den?


Weil Sleep extra dafür geschaffen wurde
"... Warum ist das so?...Weil Sleep extra dafür geschaffen wurde" ist ja keine technische Erklärung. Sleep ist ein Befehl der Shell, also eines Programms (nicht des Betriebssystems). Die Shell (bei der FB in der Busybox enthalten) wird dabei einen Betriebssystemsaufruf durchführen, der mich interessiert. Welche Funktion des Kernels wird bei Sleep letztlich aufgerufen und wie ist der technische Ablauf in Hinblick auf die Systembelastung?

Bejobe
 
Das "man sleep", auf das Du nicht näher eingegangen bist, entspricht genau der Windows-Information aus dem vorherigen Beitrag.

Wenn Du eine technische Erklärung willst, solltest Du mal ein Buch über Betriebssystem-Entwicklung lesen, evtl. auch die aktuellen Linux-Quellen. Es gibt verschiedenen Möglichkeiten, die Details zu realisieren.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.