summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-03-22 12:18:19 +0100
committerLennart Poettering <lennart@poettering.net>2019-04-12 14:25:44 +0200
commit826f7cb15bee4240bc5833433e3bc3829ca2d4e1 (patch)
tree43d74fae238d5822e75d5d09bd9e71e9392ce36e
parentbc40a20ebefc051ac4e41e3f107c2c6d5615e14c (diff)
downloadsystemd-826f7cb15bee4240bc5833433e3bc3829ca2d4e1.tar.gz
run: show IO stats in --wait resource output
-rw-r--r--src/run/run.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/run/run.c b/src/run/run.c
index 56aa9aaee6..18b46f2a40 100644
--- a/src/run/run.c
+++ b/src/run/run.c
@@ -930,6 +930,8 @@ typedef struct RunContext {
uint64_t cpu_usage_nsec;
uint64_t ip_ingress_bytes;
uint64_t ip_egress_bytes;
+ uint64_t io_read_bytes;
+ uint64_t io_write_bytes;
uint32_t exit_code;
uint32_t exit_status;
} RunContext;
@@ -975,6 +977,8 @@ static int run_context_update(RunContext *c, const char *path) {
{ "CPUUsageNSec", "t", NULL, offsetof(RunContext, cpu_usage_nsec) },
{ "IPIngressBytes", "t", NULL, offsetof(RunContext, ip_ingress_bytes) },
{ "IPEgressBytes", "t", NULL, offsetof(RunContext, ip_egress_bytes) },
+ { "IOReadBytes", "t", NULL, offsetof(RunContext, io_read_bytes) },
+ { "IOWriteBytes", "t", NULL, offsetof(RunContext, io_write_bytes) },
{}
};
@@ -1163,6 +1167,8 @@ static int start_transient_service(
.cpu_usage_nsec = NSEC_INFINITY,
.ip_ingress_bytes = UINT64_MAX,
.ip_egress_bytes = UINT64_MAX,
+ .io_read_bytes = UINT64_MAX,
+ .io_write_bytes = UINT64_MAX,
.inactive_exit_usec = USEC_INFINITY,
.inactive_enter_usec = USEC_INFINITY,
};
@@ -1262,6 +1268,14 @@ static int start_transient_service(
char bytes[FORMAT_BYTES_MAX];
log_info("IP traffic sent: %s", format_bytes(bytes, sizeof(bytes), c.ip_egress_bytes));
}
+ if (c.io_read_bytes != UINT64_MAX) {
+ char bytes[FORMAT_BYTES_MAX];
+ log_info("IO bytes read: %s", format_bytes(bytes, sizeof(bytes), c.io_read_bytes));
+ }
+ if (c.io_write_bytes != UINT64_MAX) {
+ char bytes[FORMAT_BYTES_MAX];
+ log_info("IO bytes written: %s", format_bytes(bytes, sizeof(bytes), c.io_write_bytes));
+ }
}
/* Try to propagate the service's return value */