X Tutup
Skip to content

Commit f333ed2

Browse files
authored
Merge pull request systemd#20476 from jamacku/new-feature-reloaded-stamp
core: indicate the time when units were loaded
2 parents d40ce01 + 15b9243 commit f333ed2

File tree

4 files changed

+23
-0
lines changed

4 files changed

+23
-0
lines changed

man/org.freedesktop.systemd1.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,10 @@ node /org/freedesktop/systemd1 {
334334
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
335335
readonly t UnitsLoadFinishTimestampMonotonic = ...;
336336
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
337+
readonly t UnitsLoadTimestamp = ...;
338+
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
339+
readonly t UnitsLoadTimestampMonotonic = ...;
340+
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
337341
readonly t InitRDSecurityStartTimestamp = ...;
338342
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
339343
readonly t InitRDSecurityStartTimestampMonotonic = ...;
@@ -983,6 +987,10 @@ node /org/freedesktop/systemd1 {
983987

984988
<variablelist class="dbus-property" generated="True" extra-ref="UnitsLoadFinishTimestampMonotonic"/>
985989

990+
<variablelist class="dbus-property" generated="True" extra-ref="UnitsLoadTimestamp"/>
991+
992+
<variablelist class="dbus-property" generated="True" extra-ref="UnitsLoadTimestampMonotonic"/>
993+
986994
<variablelist class="dbus-property" generated="True" extra-ref="InitRDSecurityStartTimestamp"/>
987995

988996
<variablelist class="dbus-property" generated="True" extra-ref="InitRDSecurityStartTimestampMonotonic"/>
@@ -1505,6 +1513,11 @@ node /org/freedesktop/systemd1 {
15051513
boot loader or initrd implementation. In these cases the respective pairs of timestamps are both 0,
15061514
indicating that no data is available.</para>
15071515

1516+
<para><varname>UnitsLoadTimestamp</varname> and <varname>UnitsLoadTimestampMonotonic</varname> encode
1517+
<constant>CLOCK_REALTIME</constant> and <constant>CLOCK_MONOTONIC</constant> microseconds timestamps
1518+
(as described above). The timestamps are taken every time when the manager starts loading unit files.
1519+
</para>
1520+
15081521
<para>Similarly, the <varname>SecurityStartTimestamp</varname>,
15091522
<varname>GeneratorsStartTimestamp</varname> and <varname>LoadUnitTimestamp</varname> (as well as their
15101523
monotonic and stop counterparts) expose performance data for uploading the security policies to the

src/core/dbus-manager.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2673,6 +2673,7 @@ const sd_bus_vtable bus_manager_vtable[] = {
26732673
BUS_PROPERTY_DUAL_TIMESTAMP("GeneratorsFinishTimestamp", offsetof(Manager, timestamps[MANAGER_TIMESTAMP_GENERATORS_FINISH]), SD_BUS_VTABLE_PROPERTY_CONST),
26742674
BUS_PROPERTY_DUAL_TIMESTAMP("UnitsLoadStartTimestamp", offsetof(Manager, timestamps[MANAGER_TIMESTAMP_UNITS_LOAD_START]), SD_BUS_VTABLE_PROPERTY_CONST),
26752675
BUS_PROPERTY_DUAL_TIMESTAMP("UnitsLoadFinishTimestamp", offsetof(Manager, timestamps[MANAGER_TIMESTAMP_UNITS_LOAD_FINISH]), SD_BUS_VTABLE_PROPERTY_CONST),
2676+
BUS_PROPERTY_DUAL_TIMESTAMP("UnitsLoadTimestamp", offsetof(Manager, timestamps[MANAGER_TIMESTAMP_UNITS_LOAD]), SD_BUS_VTABLE_PROPERTY_CONST),
26762677
BUS_PROPERTY_DUAL_TIMESTAMP("InitRDSecurityStartTimestamp", offsetof(Manager, timestamps[MANAGER_TIMESTAMP_INITRD_SECURITY_START]), SD_BUS_VTABLE_PROPERTY_CONST),
26772678
BUS_PROPERTY_DUAL_TIMESTAMP("InitRDSecurityFinishTimestamp", offsetof(Manager, timestamps[MANAGER_TIMESTAMP_INITRD_SECURITY_FINISH]), SD_BUS_VTABLE_PROPERTY_CONST),
26782679
BUS_PROPERTY_DUAL_TIMESTAMP("InitRDGeneratorsStartTimestamp", offsetof(Manager, timestamps[MANAGER_TIMESTAMP_INITRD_GENERATORS_START]), SD_BUS_VTABLE_PROPERTY_CONST),

src/core/manager.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,13 +1729,20 @@ static void manager_ready(Manager *m) {
17291729
/* Let's finally catch up with any changes that took place while we were reloading/reexecing */
17301730
manager_catchup(m);
17311731

1732+
/* Create a file which will indicate when the manager started loading units the last time. */
1733+
(void) touch_file("/run/systemd/systemd-units-load", false,
1734+
m->timestamps[MANAGER_TIMESTAMP_UNITS_LOAD].realtime ?: now(CLOCK_REALTIME),
1735+
UID_INVALID, GID_INVALID, 0444);
1736+
17321737
m->honor_device_enumeration = true;
17331738
}
17341739

17351740
Manager* manager_reloading_start(Manager *m) {
17361741
m->n_reloading++;
1742+
dual_timestamp_get(m->timestamps + MANAGER_TIMESTAMP_UNITS_LOAD);
17371743
return m;
17381744
}
1745+
17391746
void manager_reloading_stopp(Manager **m) {
17401747
if (*m) {
17411748
assert((*m)->n_reloading > 0);
@@ -4459,6 +4466,7 @@ static const char *const manager_timestamp_table[_MANAGER_TIMESTAMP_MAX] = {
44594466
[MANAGER_TIMESTAMP_GENERATORS_FINISH] = "generators-finish",
44604467
[MANAGER_TIMESTAMP_UNITS_LOAD_START] = "units-load-start",
44614468
[MANAGER_TIMESTAMP_UNITS_LOAD_FINISH] = "units-load-finish",
4469+
[MANAGER_TIMESTAMP_UNITS_LOAD] = "units-load",
44624470
[MANAGER_TIMESTAMP_INITRD_SECURITY_START] = "initrd-security-start",
44634471
[MANAGER_TIMESTAMP_INITRD_SECURITY_FINISH] = "initrd-security-finish",
44644472
[MANAGER_TIMESTAMP_INITRD_GENERATORS_START] = "initrd-generators-start",

src/core/manager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ typedef enum ManagerTimestamp {
102102
MANAGER_TIMESTAMP_GENERATORS_FINISH,
103103
MANAGER_TIMESTAMP_UNITS_LOAD_START,
104104
MANAGER_TIMESTAMP_UNITS_LOAD_FINISH,
105+
MANAGER_TIMESTAMP_UNITS_LOAD,
105106

106107
MANAGER_TIMESTAMP_INITRD_SECURITY_START,
107108
MANAGER_TIMESTAMP_INITRD_SECURITY_FINISH,

0 commit comments

Comments
 (0)
X Tutup