Re: [Qemu-devel] [PATCH] qemu-kvm: response to SIGUSR1 to start/stop a VCPU (v2)

Anthony Liguori
2010-11-23T21:47:02Z

On 11/23/2010 01:35 PM, Blue Swirl wrote:
> On Tue, Nov 23, 2010 at 4:49 PM, Anthony Liguori<aliguori@us.ibm.com> wrote:
>
>> qemu-kvm vcpu threads don't response to SIGSTOP/SIGCONT. Instead of teaching
>> them to respond to these signals (which cannot be trapped), use SIGUSR1 to
>> approximate the behavior of SIGSTOP/SIGCONT.
>>
>> The purpose of this is to implement CPU hard limits using an external tool that
>> watches the CPU consumption and stops the VCPU as appropriate.
>>
>> This provides a more elegant solution in that it allows the VCPU thread to
>> release qemu_mutex before going to sleep.
>>
>> This current implementation uses a single signal. I think this is too racey
>> in the long term so I think we should introduce a second signal. If two signals
>> get coalesced into one, it could confuse the monitoring tool into giving the
>> VCPU the inverse of it's entitlement.
>>
>> It might be better to simply move this logic entirely into QEMU to make this
>> more robust--the question is whether we think this is a good long term feature
>> to carry in QEMU?
>>
>
>> +static __thread int sigusr1_wfd;
>>
> While OpenBSD finally updated the default compiler to 4.2.1 from 3.x
> series, thread local storage is still not supported:
>

Hrm, is there a portable way to do this (distinguish a signal on a
particular thread)?

Regards,

Anthony Liguori

> $ cat thread.c
> static __thread int sigusr1_wfd;
> $ gcc thread.c -c
> thread.c:1: error: thread-local storage not supported for this target
> $ gcc -v
> Reading specs from /usr/lib/gcc-lib/sparc64-unknown-openbsd4.8/4.2.1/specs
> Target: sparc64-unknown-openbsd4.8
> Configured with: OpenBSD/sparc64 system compiler
> Thread model: posix
> gcc version 4.2.1 20070719
>