Il timer di Systemd è irregolare


0

Sto cercando di impostare un timer systemd che verrà eseguito ogni 5 secondi (invierà statistiche in tempo reale a un server remoto) come spiegato qui .

Servizio

[Unit]
Description=PHP Cron
Wants=network.target
After=network.target

[Service]
Type=oneshot
StandardOutput=null
StandardError=syslog
ExecStart=/bin/sh -c "/usr/bin/date >> /tmp/date"

[Install]
WantedBy=multi-user.target

Timer

[Unit]
Description=Run cron service every 5 seconds

[Timer]
OnCalendar=*:*:0/5

Sfortunatamente, il timer è molto irregolare.

Fri Dec 29 12:21:21 IST 2017
Fri Dec 29 12:21:25 IST 2017
Fri Dec 29 12:21:33 IST 2017
Fri Dec 29 12:21:36 IST 2017
Fri Dec 29 12:21:41 IST 2017
Fri Dec 29 12:21:48 IST 2017
Fri Dec 29 12:21:52 IST 2017
Fri Dec 29 12:22:01 IST 2017
Fri Dec 29 12:22:07 IST 2017
Fri Dec 29 12:22:13 IST 2017
Fri Dec 29 12:22:23 IST 2017

Perché è così? I timer di systemd non sono affidabili se utilizzati con intervalli inferiori a un minuto?

Risposte:


1

Per impostazione predefinita, systemd utilizza un'accuratezza molto bassa in modo che i lavori di più timer (ovvero diverse attività che si verificano tutte in pochi secondi) possano essere raggruppati in una singola corsa, dopo di che il sistema può continuare inattivo.

L'opzione può essere impostata [Timer]e ti consigliamo di impostarla su 1so inferiore.

    AccuracySec =
       Specificare la precisione con cui deve scadere il timer. L'impostazione predefinita è 1min. Il timer è
       programmato per scadere entro una finestra temporale a partire dall'ora specificata in
       OnCalendar =, OnActiveSec =, OnBootSec =, OnStartupSec =, OnUnitActiveSec = o
       OnUnitInactiveSec = e termina il tempo configurato con AccuracySec = in seguito. Entro
       questa finestra temporale, il tempo di scadenza sarà collocato in un host specifico, randomizzato,
       ma posizione stabile sincronizzata tra tutte le unità timer locali. Questo è
       fatto al fine di ottimizzare il consumo di energia per sopprimere le riattivazioni inutili della CPU.
       Per ottenere la massima precisione, impostare questa opzione su 1us. Si noti che il timer è fermo
       soggetto al gioco programmato tramite systemd-system.conf (5)
       TimerSlackNSec = impostazione. Vedi prctl (2) per i dettagli. Per ottimizzare il consumo energetico,
       assicurarsi di impostare questo valore il più alto possibile e il più basso possibile.

Grazie. Ora funziona perfettamente. This is done in order to optimize power consumption to suppress unnecessary CPU wake-ups.Avrà alcun effetto di risparmio energetico su un server multi core occupato, poiché la CPU non è mai inattiva?
Joyce Babu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.