diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-03-22 12:18:19 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2019-04-12 14:25:44 +0200 |
commit | 826f7cb15bee4240bc5833433e3bc3829ca2d4e1 (patch) | |
tree | 43d74fae238d5822e75d5d09bd9e71e9392ce36e /src/run | |
parent | bc40a20ebefc051ac4e41e3f107c2c6d5615e14c (diff) | |
download | systemd-826f7cb15bee4240bc5833433e3bc3829ca2d4e1.tar.gz |
run: show IO stats in --wait resource output
Diffstat (limited to 'src/run')
-rw-r--r-- | src/run/run.c | 14 |
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 */ |