git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC PATCH 2/5] maintenance: add fixed random delay to systemd timers

From
Max Gautier <mg@max.gautier.name>
Date
Mar 18, 2024, 15:07 UTC
Message-ID
<20240318151701.26644-4-mg@max.gautier.name>
In-Reply-To
<20240318151701.26644-2-mg@max.gautier.name>
Ensures that:
- git maintenance timers have a fixed time interval between execution.
- the three timers are not executed at the same time.

This is intended to implement an alternative to the two followings commits: c97ec0378b (maintenance: fix systemd schedule overlaps, 2023-08-10) daa787010c (maintenance: use random minute in systemd scheduler, 2023-08-10)

Instead of manually adding a specific minute (which is reset on each invocation of `git maintenance start`), we use systemd timers RandomizedDelaySec and FixedRandomDelay functionalities.

From man systemd.timer:
Show 9 quoted lines
>FixedRandomDelay=
>  Takes a boolean argument. When enabled, the randomized offset
>  specified by RandomizedDelaySec= is reused for all firings of the
>  same timer. For a given timer unit, **the offset depends on the
>  machine ID, user identifier and timer name**, which means that it is
>  stable between restarts of the manager. This effectively creates a
>  fixed offset for an individual timer, reducing the jitter in
>  firings of this timer, while still avoiding firing at the same time
>  as other similarly configured timers.
-> which is exactly the use case for git-maintenance timers.
Signed-off-by: Max Gautier <mg@max.gautier.name>
---
 systemd/user/git-maintenance@.service | 1 +
 systemd/user/git-maintenance@.timer   | 3 +++
 2 files changed, 4 insertions(+)
diff --git a/systemd/user/git-maintenance@.service b/systemd/user/git-maintenance@.service
index 87ac0c86e6..f949e1a217 100644
--- a/systemd/user/git-maintenance@.service
+++ b/systemd/user/git-maintenance@.service
@@ -1,5 +1,6 @@
 [Unit]
 Description=Optimize Git repositories data
+Documentation=man:git-maintenance(1)
 
 [Service]
 Type=oneshot
diff --git a/systemd/user/git-maintenance@.timer b/systemd/user/git-maintenance@.timer
index 40fbc77a62..667c5998ba 100644
--- a/systemd/user/git-maintenance@.timer
+++ b/systemd/user/git-maintenance@.timer
@@ -1,9 +1,12 @@
 [Unit]
 Description=Optimize Git repositories data
+Documentation=man:git-maintenance(1)
 
 [Timer]
 OnCalendar=%i
 Persistent=true
+RandomizedDelaySec=1800
+FixedRandomDelay=true
 
 [Install]
 WantedBy=timers.target
-- 
2.44.0
Previous: Max GautierNext: Max Gautier
Message 4 of 6 in “”
  1. Max GautierMar 18, 2024
  2. 3/5 maintenance: use packaged systemd unitsMax Gautier, Mar 18, 2024
  3. 1/5 maintenance: package systemd unitsMax Gautier, Mar 18, 2024
  4. 2/5 maintenance: add fixed random delay to systemd timersMax Gautier, Mar 18, 2024
  5. 4/5 maintenance: update systemd scheduler docsMax Gautier, Mar 18, 2024
  6. 5/5 DON'T APPLY YET: maintenance: remove cleanup codeMax Gautier, Mar 18, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.