MINOR: raw_sock: Report the number of bytes emitted using the splicing

In the continuity of the commit 7cf0e4517 ("MINOR: raw_sock: report global
traffic statistics"), we are now able to report the global number of bytes
emitted using the splicing. It can be retrieved in "show info" output on the
CLI.

Note this counter is always declared, regardless the splicing support. This
eases the integration with monitoring tools plugged on the CLI.
This commit is contained in:
Christopher Faulet 2020-07-10 13:56:30 +02:00
parent 23021ad7f1
commit aaa70852d9
4 changed files with 5 additions and 0 deletions

View File

@ -109,6 +109,7 @@ struct global {
struct freq_ctr comp_bps_out; /* bytes per second, after http compression */
struct freq_ctr out_32bps; /* #of 32-byte blocks emitted per second */
unsigned long long out_bytes; /* total #of bytes emitted */
unsigned long long spliced_out_bytes; /* total #of bytes emitted though a kernel pipe */
int cps_lim, cps_max;
int sps_lim, sps_max;
int ssl_lim, ssl_max;

View File

@ -314,6 +314,7 @@ enum info_field {
INF_BUSY_POLLING,
INF_FAILED_RESOLUTIONS,
INF_TOTAL_BYTES_OUT,
INF_TOTAL_SPLICED_BYTES_OUT,
INF_BYTES_OUT_RATE,
INF_DEBUG_COMMANDS_ISSUED,

View File

@ -154,6 +154,7 @@ int raw_sock_to_pipe(struct connection *conn, void *xprt_ctx, struct pipe *pipe,
* limited to 4GB and that it's not enough per second.
*/
_HA_ATOMIC_ADD(&global.out_bytes, retval);
_HA_ATOMIC_ADD(&global.spliced_out_bytes, retval);
update_freq_ctr(&global.out_32bps, (retval + 16) / 32);
}
return retval;

View File

@ -144,6 +144,7 @@ const struct name_desc info_fields[INF_TOTAL_FIELDS] = {
[INF_BUSY_POLLING] = { .name = "BusyPolling", .desc = "1 if busy-polling is currently in use on the worker process, otherwise zero (config.busy-polling)" },
[INF_FAILED_RESOLUTIONS] = { .name = "FailedResolutions", .desc = "Total number of failed DNS resolutions in current worker process since started" },
[INF_TOTAL_BYTES_OUT] = { .name = "TotalBytesOut", .desc = "Total number of bytes emitted by current worker process since started" },
[INF_TOTAL_SPLICED_BYTES_OUT] = { .name = "TotalSplicdedBytesOut", .desc = "Total number of bytes emitted by current worker process through a kernel pipe since started" },
[INF_BYTES_OUT_RATE] = { .name = "BytesOutRate", .desc = "Number of bytes emitted by current worker process over the last second" },
[INF_DEBUG_COMMANDS_ISSUED] = { .name = "DebugCommandsIssued", .desc = "Number of debug commands issued on this process (anything > 0 is unsafe)" },
};
@ -3519,6 +3520,7 @@ int stats_fill_info(struct field *info, int len)
info[INF_BUSY_POLLING] = mkf_u32(0, !!(global.tune.options & GTUNE_BUSY_POLLING));
info[INF_FAILED_RESOLUTIONS] = mkf_u32(0, dns_failed_resolutions);
info[INF_TOTAL_BYTES_OUT] = mkf_u64(0, global.out_bytes);
info[INF_TOTAL_SPLICED_BYTES_OUT] = mkf_u64(0, global.spliced_out_bytes);
info[INF_BYTES_OUT_RATE] = mkf_u64(FN_RATE, (unsigned long long)read_freq_ctr(&global.out_32bps) * 32);
info[INF_DEBUG_COMMANDS_ISSUED] = mkf_u32(0, debug_commands_issued);