[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 1/5] cpu: Provide vcpu throttling interface
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v3 1/5] cpu: Provide vcpu throttling interface |
Date: |
Wed, 1 Jul 2015 15:57:33 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1 |
On 25/06/2015 19:46, Jason J. Herne wrote:
> +static void cpu_throttle_thread(void *opaque)
> +{
> + long sleeptime_ms = (long)(throttle_ratio * CPU_THROTTLE_TIMESLICE);
> +
> + qemu_mutex_unlock_iothread();
> + g_usleep(sleeptime_ms * 1000); /* Convert ms to us for usleep call */
> + qemu_mutex_lock_iothread();
> +
> + timer_mod(throttle_timer, qemu_clock_get_ms(QEMU_CLOCK_REALTIME) +
> + CPU_THROTTLE_TIMESLICE);
The timer need not run while the VM is stopped. Please use
QEMU_CLOCK_VIRTUAL_RT.
> +}
> +
Are you sure you want each CPU to set the timer? I think this should be
done in cpu_throttle_timer_pop, or it could use timer_mod_anticipate.
> +static void cpu_throttle_timer_pop(void *opaque)
> +{
> + CPUState *cpu;
> +
> + /* Stop the timer if needed */
> + if (throttle_timer_stop) {
> + timer_del(throttle_timer);
timer_del is not needed in the timer callback.
Paolo
> + timer_free(throttle_timer);
> + throttle_timer = NULL;
> + return;
> + }
> +
> + CPU_FOREACH(cpu) {
> + async_run_on_cpu(cpu, cpu_throttle_thread, NULL);
> + }
> +}
> +
- Re: [Qemu-devel] [PATCH v3 1/5] cpu: Provide vcpu throttling interface,
Paolo Bonzini <=