From: Willy Tarreau Date: Thu, 11 Sep 2025 12:49:02 +0000 (+0200) Subject: MINOR: activity: add a new mem_avg column to show profiling stats X-Git-Tag: v3.3-dev9~127 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=195794eb592ddc14be45728118feff3c15e731ca;p=thirdparty%2Fhaproxy.git MINOR: activity: add a new mem_avg column to show profiling stats This new column will be used for reporting the average time spent allocating or freeing memory in a task when task profiling is enabled. For now it is not updated. --- diff --git a/include/haproxy/activity-t.h b/include/haproxy/activity-t.h index 4dc377d91..ba9241d03 100644 --- a/include/haproxy/activity-t.h +++ b/include/haproxy/activity-t.h @@ -145,6 +145,7 @@ struct sched_activity { uint64_t lat_time; uint64_t lkw_time; /* lock waiting time */ uint64_t lkd_time; /* locked time */ + uint64_t mem_time; /* memory ops wait time */ }; #endif /* _HAPROXY_ACTIVITY_T_H */ diff --git a/src/activity.c b/src/activity.c index c174ae034..ad4d60d8b 100644 --- a/src/activity.c +++ b/src/activity.c @@ -759,6 +759,7 @@ static int cli_parse_set_profiling(char **args, char *payload, struct appctx *ap HA_ATOMIC_STORE(&sched_activity[i].lat_time, 0); HA_ATOMIC_STORE(&sched_activity[i].lkw_time, 0); HA_ATOMIC_STORE(&sched_activity[i].lkd_time, 0); + HA_ATOMIC_STORE(&sched_activity[i].mem_time, 0); HA_ATOMIC_STORE(&sched_activity[i].func, NULL); HA_ATOMIC_STORE(&sched_activity[i].caller, NULL); } @@ -982,6 +983,7 @@ static int cli_io_handler_show_profiling(struct appctx *appctx) tmp_activity[i].lat_time += tmp_activity[j].lat_time; tmp_activity[i].lkw_time += tmp_activity[j].lkw_time; tmp_activity[i].lkd_time += tmp_activity[j].lkd_time; + tmp_activity[i].mem_time += tmp_activity[j].mem_time; tmp_activity[j].calls = 0; } } @@ -994,7 +996,7 @@ static int cli_io_handler_show_profiling(struct appctx *appctx) if (!ctx->linenum) chunk_appendf(&trash, "Tasks activity over %.3f sec till %.3f sec ago:\n" - " function calls cpu_tot cpu_avg lkw_avg lkd_avg lat_avg\n", + " function calls cpu_tot cpu_avg lkw_avg lkd_avg mem_avg lat_avg\n", (prof_task_start_ns ? (prof_task_stop_ns ? prof_task_stop_ns : now_ns) - prof_task_start_ns : 0) / 1000000000.0, (prof_task_stop_ns ? now_ns - prof_task_stop_ns : 0) / 1000000000.0); @@ -1033,6 +1035,7 @@ static int cli_io_handler_show_profiling(struct appctx *appctx) print_time_short(&trash, " ", tmp_activity[i].cpu_time / tmp_activity[i].calls, ""); print_time_short(&trash, " ", tmp_activity[i].lkw_time / tmp_activity[i].calls, ""); print_time_short(&trash, " ", tmp_activity[i].lkd_time / tmp_activity[i].calls, ""); + print_time_short(&trash, " ", tmp_activity[i].mem_time / tmp_activity[i].calls, ""); print_time_short(&trash, " ", tmp_activity[i].lat_time / tmp_activity[i].calls, ""); if (caller && !ctx->aggr && caller->what <= WAKEUP_TYPE_APPCTX_WAKEUP)