util: make time formatting a bit smarter
Instead of outputting "5h 55s 50ms 3us" we'll now output "5h 55.050003s". Also, while outputting the accuracy is configurable. Basically we now try use "dot notation" for all time values > 1min. For >= 1s we use 's' as unit, otherwise for >= 1ms we use 'ms' as unit, and finally 'us'. This should give reasonably values in most cases.
This commit is contained in:
+1
-1
@@ -1752,7 +1752,7 @@ int main(int argc, char *argv[]) {
|
||||
after_startup = now(CLOCK_MONOTONIC);
|
||||
log_full(arg_action == ACTION_TEST ? LOG_INFO : LOG_DEBUG,
|
||||
"Loaded units and determined initial transaction in %s.",
|
||||
format_timespan(timespan, sizeof(timespan), after_startup - before_startup));
|
||||
format_timespan(timespan, sizeof(timespan), after_startup - before_startup, 0));
|
||||
|
||||
if (arg_action == ACTION_TEST) {
|
||||
printf("-> By jobs:\n");
|
||||
|
||||
+9
-9
@@ -2415,10 +2415,10 @@ void manager_check_finished(Manager *m) {
|
||||
"INITRD_USEC=%llu", (unsigned long long) initrd_usec,
|
||||
"USERSPACE_USEC=%llu", (unsigned long long) userspace_usec,
|
||||
"MESSAGE=Startup finished in %s (kernel) + %s (initrd) + %s (userspace) = %s.",
|
||||
format_timespan(kernel, sizeof(kernel), kernel_usec),
|
||||
format_timespan(initrd, sizeof(initrd), initrd_usec),
|
||||
format_timespan(userspace, sizeof(userspace), userspace_usec),
|
||||
format_timespan(sum, sizeof(sum), total_usec),
|
||||
format_timespan(kernel, sizeof(kernel), kernel_usec, USEC_PER_MSEC),
|
||||
format_timespan(initrd, sizeof(initrd), initrd_usec, USEC_PER_MSEC),
|
||||
format_timespan(userspace, sizeof(userspace), userspace_usec, USEC_PER_MSEC),
|
||||
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC),
|
||||
NULL);
|
||||
} else {
|
||||
kernel_usec = m->userspace_timestamp.monotonic - m->kernel_timestamp.monotonic;
|
||||
@@ -2430,9 +2430,9 @@ void manager_check_finished(Manager *m) {
|
||||
"KERNEL_USEC=%llu", (unsigned long long) kernel_usec,
|
||||
"USERSPACE_USEC=%llu", (unsigned long long) userspace_usec,
|
||||
"MESSAGE=Startup finished in %s (kernel) + %s (userspace) = %s.",
|
||||
format_timespan(kernel, sizeof(kernel), kernel_usec),
|
||||
format_timespan(userspace, sizeof(userspace), userspace_usec),
|
||||
format_timespan(sum, sizeof(sum), total_usec),
|
||||
format_timespan(kernel, sizeof(kernel), kernel_usec, USEC_PER_MSEC),
|
||||
format_timespan(userspace, sizeof(userspace), userspace_usec, USEC_PER_MSEC),
|
||||
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC),
|
||||
NULL);
|
||||
}
|
||||
} else {
|
||||
@@ -2444,7 +2444,7 @@ void manager_check_finished(Manager *m) {
|
||||
MESSAGE_ID(SD_MESSAGE_STARTUP_FINISHED),
|
||||
"USERSPACE_USEC=%llu", (unsigned long long) userspace_usec,
|
||||
"MESSAGE=Startup finished in %s.",
|
||||
format_timespan(sum, sizeof(sum), total_usec),
|
||||
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC),
|
||||
NULL);
|
||||
}
|
||||
|
||||
@@ -2452,7 +2452,7 @@ void manager_check_finished(Manager *m) {
|
||||
|
||||
sd_notifyf(false,
|
||||
"READY=1\nSTATUS=Startup finished in %s.",
|
||||
format_timespan(sum, sizeof(sum), total_usec));
|
||||
format_timespan(sum, sizeof(sum), total_usec, USEC_PER_MSEC));
|
||||
}
|
||||
|
||||
static int create_generator_dir(Manager *m, char **generator, const char *name) {
|
||||
|
||||
@@ -423,7 +423,7 @@ int mount_setup(bool loaded_policy) {
|
||||
after_relabel = now(CLOCK_MONOTONIC);
|
||||
|
||||
log_info("Relabelled /dev and /run in %s.",
|
||||
format_timespan(timespan, sizeof(timespan), after_relabel - before_relabel));
|
||||
format_timespan(timespan, sizeof(timespan), after_relabel - before_relabel, 0));
|
||||
}
|
||||
|
||||
/* Create a few default symlinks, which are normally created
|
||||
|
||||
@@ -101,7 +101,7 @@ int selinux_setup(bool *loaded_policy) {
|
||||
after_load = now(CLOCK_MONOTONIC);
|
||||
|
||||
log_info("Successfully loaded SELinux policy in %s.",
|
||||
format_timespan(timespan, sizeof(timespan), after_load - before_load));
|
||||
format_timespan(timespan, sizeof(timespan), after_load - before_load, 0));
|
||||
|
||||
*loaded_policy = true;
|
||||
|
||||
|
||||
+2
-2
@@ -177,7 +177,7 @@ static void timer_dump(Unit *u, FILE *f, const char *prefix) {
|
||||
"%s%s: %s\n",
|
||||
prefix,
|
||||
timer_base_to_string(v->base),
|
||||
strna(format_timespan(timespan1, sizeof(timespan1), v->value)));
|
||||
strna(format_timespan(timespan1, sizeof(timespan1), v->value, 0)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -330,7 +330,7 @@ static void timer_enter_waiting(Timer *t, bool initial) {
|
||||
log_debug_unit(UNIT(t)->id,
|
||||
"%s: Monotonic timer elapses in %s.",
|
||||
UNIT(t)->id,
|
||||
format_timespan(buf, sizeof(buf), t->next_elapse_monotonic > ts.monotonic ? t->next_elapse_monotonic - ts.monotonic : 0));
|
||||
format_timespan(buf, sizeof(buf), t->next_elapse_monotonic > ts.monotonic ? t->next_elapse_monotonic - ts.monotonic : 0, 0));
|
||||
|
||||
r = unit_watch_timer(UNIT(t), CLOCK_MONOTONIC, false, t->next_elapse_monotonic, &t->monotonic_watch);
|
||||
if (r < 0)
|
||||
|
||||
+1
-1
@@ -701,7 +701,7 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
|
||||
fprintf(f, "%s\tDropIn Path: %s\n", prefix, *j);
|
||||
|
||||
if (u->job_timeout > 0)
|
||||
fprintf(f, "%s\tJob Timeout: %s\n", prefix, format_timespan(timespan, sizeof(timespan), u->job_timeout));
|
||||
fprintf(f, "%s\tJob Timeout: %s\n", prefix, format_timespan(timespan, sizeof(timespan), u->job_timeout, 0));
|
||||
|
||||
condition_dump_list(u->conditions, f, prefix);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user