Hauptmenü

Minimum sleep

Begonnen von andies, 10 September 2018, 11:08:43

Vorheriges Thema - Nächstes Thema

andies

Wenn man mit sleep eine Pause definiert, gibt es dann eine Minimalgrenze, die Perl/FHEM nicht unterschreitet? Klarerweise ist das die Null, aber würde auch zB. sleep 0.1 exakt ausgeführt, wenn die anderen abzuarbeitenden Prozesse es gestatten?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

Zitat von: andies am 10 September 2018, 11:08:43
Wenn man mit sleep eine Pause definiert, gibt es dann eine Minimalgrenze, die Perl/FHEM nicht unterschreitet? Klarerweise ist das die Null, aber würde auch zB. sleep 0.1 exakt ausgeführt, wenn die anderen abzuarbeitenden Prozesse es gestatten?

Meines Wissens, JA.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

r00t2

#2
Solange das OS, was im Hintergrund läuft, kein dediziertes RTOS ist, was ein vorhersagbares Zeitverhalten der Systemaufrufe oder vorhersagbare Reaktionszeiten auf Ereignisse garantiert, sehe ich es als schwierig bis unmöglich an, zu sagen, dass ein Sleep so lange dauert, wie im Code hinterlegt ist - auch unter "guten Bedingungen" der anderen Prozesse.

Da kann einfach viel zu viel dazwischen kommen, was eine verlängerte Ausführung bedingen kann.

Perl an sich bietet Sleep-Funktionen bis nanosleep() an, wenn entsprechende HiRes Timer verfügbar sind: https://perldoc.perl.org/Time/HiRes.html
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

Beta-User

Guter Einwand mit der OS-Abhängigkeit.
Da es hier darum geht, mit dem gegebenen Unfeld ein möglichst genaues Ergebnis zu haben: sollte es ggf. nicht auch helfen, eine weitere Instanz von FHEM aufzurufen (wenn man mehrere Kerne hat) und den Kram darin auszuführen?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

CoolTux

Zitat von: andies am 10 September 2018, 11:08:43
Klarerweise ist das die Null, aber würde auch zB. sleep 0.1 exakt ausgeführt, wenn die anderen abzuarbeitenden Prozesse es gestatten?

Es wurde ja ziemlich exakt gefragt. Und das wir hier nicht von Perl sleep reden sondern von FHEM sleep war glaube auch ansatzweise deutlich.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net