system: improve migration debug

Right now migration_throttle() tracepoint lacks very important
important information, i.e. no one could easily say how much the guest
is throttled. This makes difficult to debug guest quality of service
during migration.

This patch adds one more tracepoint into cpu_throttle_set() which is
actually doing this job.

Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Peter Xu <peterx@redhat.com>
CC: Fabiano Rosas <farosas@suse.de>
CC: Paolo Bonzini <pbonzini@redhat.com>
Link: https://lore.kernel.org/r/20240905191941.310592-1-den@openvz.org
Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
Denis V. Lunev 2024-09-05 21:19:41 +02:00 committed by Peter Xu
parent afe166d4e8
commit 89bccecdda
2 changed files with 6 additions and 0 deletions

View File

@ -28,6 +28,7 @@
#include "qemu/main-loop.h" #include "qemu/main-loop.h"
#include "sysemu/cpus.h" #include "sysemu/cpus.h"
#include "sysemu/cpu-throttle.h" #include "sysemu/cpu-throttle.h"
#include "trace.h"
/* vcpu throttling controls */ /* vcpu throttling controls */
static QEMUTimer *throttle_timer; static QEMUTimer *throttle_timer;
@ -95,6 +96,8 @@ void cpu_throttle_set(int new_throttle_pct)
*/ */
bool throttle_active = cpu_throttle_active(); bool throttle_active = cpu_throttle_active();
trace_cpu_throttle_set(new_throttle_pct);
/* Ensure throttle percentage is within valid range */ /* Ensure throttle percentage is within valid range */
new_throttle_pct = MIN(new_throttle_pct, CPU_THROTTLE_PCT_MAX); new_throttle_pct = MIN(new_throttle_pct, CPU_THROTTLE_PCT_MAX);
new_throttle_pct = MAX(new_throttle_pct, CPU_THROTTLE_PCT_MIN); new_throttle_pct = MAX(new_throttle_pct, CPU_THROTTLE_PCT_MIN);

View File

@ -44,3 +44,6 @@ dirtylimit_state_finalize(void)
dirtylimit_throttle_pct(int cpu_index, uint64_t pct, int64_t time_us) "CPU[%d] throttle percent: %" PRIu64 ", throttle adjust time %"PRIi64 " us" dirtylimit_throttle_pct(int cpu_index, uint64_t pct, int64_t time_us) "CPU[%d] throttle percent: %" PRIu64 ", throttle adjust time %"PRIi64 " us"
dirtylimit_set_vcpu(int cpu_index, uint64_t quota) "CPU[%d] set dirty page rate limit %"PRIu64 dirtylimit_set_vcpu(int cpu_index, uint64_t quota) "CPU[%d] set dirty page rate limit %"PRIu64
dirtylimit_vcpu_execute(int cpu_index, int64_t sleep_time_us) "CPU[%d] sleep %"PRIi64 " us" dirtylimit_vcpu_execute(int cpu_index, int64_t sleep_time_us) "CPU[%d] sleep %"PRIi64 " us"
# cpu-throttle.c
cpu_throttle_set(int new_throttle_pct) "set guest CPU throttled by %d%%"