Системный таймер нерегулярный

0

Я пытаюсь настроить системный таймер, который будет запускаться каждые 5 секунд (он будет отправлять статистику в реальном времени на удаленный сервер), как объяснено Вот ,

обслуживание

[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

таймер

[Unit]
Description=Run cron service every 5 seconds

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

К сожалению, таймер очень неправильный.

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

Почему это так? Являются ли системные таймеры ненадежными при использовании с интервалом менее минуты?

Joyce Babu
источник

Ответы:

1

По умолчанию systemd использует очень низкую точность, чтобы задания с несколькими таймерами (то есть разные задачи, все выполняющиеся в течение нескольких секунд) могли быть сгруппированы в один прогон, после чего система может продолжать работать на холостом ходу.

Опция может быть установлена ​​в [Timer] и вы хотите установить его 1s или ниже.

     AccuracySec =  Укажите точность, с которой должен пройти таймер. По умолчанию 1 мин. Таймер
       запланировано пройти в течение временного окна, начиная со времени, указанного в
       OnCalendar =, OnActiveSec =, OnBootSec =, OnStartupSec =, OnUnitActiveSec = или
       OnUnitInactiveSec = и время окончания, настроенное с помощью AccuracySec = позже. В
       это временное окно, время истечения будет помещено в специфичный для хоста, рандомизированный,
       но стабильное положение, которое синхронизируется между всеми местными таймерами. Это
       сделано для того, чтобы оптимизировать энергопотребление для подавления ненужных пробуждений процессора.
       Чтобы получить максимальную точность, установите эту опцию на 1us. Обратите внимание, что таймер все еще
       в зависимости от задержки таймера, настроенной через systemd-system.conf (5)
       TimerSlackNSec = настройка. Смотрите prctl (2) для подробностей. Оптимизировать энергопотребление,
       убедитесь, что вы установили это значение как можно выше и как можно ниже. 
grawity
источник
Спасибо. Сейчас работает отлично. This is done in order to optimize power consumption to suppress unnecessary CPU wake-ups. Будет ли это иметь эффект энергосбережения на занятом многоядерном сервере, так как процессор никогда не работает?
Joyce Babu