qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 00/10] main-loop: switch to g_poll(3) on POSI


From: Jan Kiszka
Subject: Re: [Qemu-devel] [PATCH v4 00/10] main-loop: switch to g_poll(3) on POSIX hosts
Date: Fri, 22 Feb 2013 10:08:35 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

On 2013-02-22 09:40, Stefan Hajnoczi wrote:
> On Thu, Feb 21, 2013 at 05:29:25PM +0100, Jan Kiszka wrote:
>> On 2013-02-21 16:33, Stefan Hajnoczi wrote:
>>> On Thu, Feb 21, 2013 at 02:17:14PM +0100, Christian Borntraeger wrote:
>>>> On 20/02/13 11:28, Stefan Hajnoczi wrote:
>>>>> Amos Kong <address@hidden> reported that file descriptors numbered higher
>>>>> than 1024 could crash QEMU.  This is due to the fixed size of the fd_set 
>>>>> type
>>>>> used for select(2) event polling.
>>>>>
>>>>
>>>> Good to see somebody working on that.
>>>> We have just faced this problem on s390 after we have experimentally 
>>>> enabled ioeventfd
>>>> for virtio-ccw. We have several scenarios were we want > 600 devices for 
>>>> the guest
>>>> and the select loops then fails horribly because we exceed the 1024 fd 
>>>> barrier.
>>>>
>>>> So this looks like it could become a bugfix for that problem.
>>>>
>>>> In terms of scalability it is probably better to have multiple threads 
>>>> that poll on their 
>>>> fds, instead of having one i/o thread. 
>>>
>>> I think we'll get there, I'm currently working on adding multiple event
>>> loop support to QEMU.
>>
>> In this context, I'd like to recall a detail: Real-time prioritization
>> of those I/O threads will most probably require locking with
>> prio-inversion avoidance (*). In that case external libs without a
>> chance to tune or replace their internal locking (like glib) will be a
>> no-go for those kind of I/O threads.
> 
> What is stopping glib from becoming RT-friendly?

It's not the target audience of glib.

RT means you care a lot about what happens underneath you, and glib is
much more about avoiding this detail knowledge. Also, RT is not as easy
portable as the simple internal and external locking primitives that
glib currently uses/supports. Even without RT use cases, we are already
unable to use glib's synchronization primitives for QEMU purposes.

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux



reply via email to

[Prev in Thread] Current Thread [Next in Thread]