From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48698) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xu27a-0003If-6Z for qemu-devel@nongnu.org; Thu, 27 Nov 2014 11:40:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xu27T-0002mU-PT for qemu-devel@nongnu.org; Thu, 27 Nov 2014 11:40:45 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45281) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xu27T-0002lT-Ht for qemu-devel@nongnu.org; Thu, 27 Nov 2014 11:40:39 -0500 Message-ID: <547753F7.2030709@redhat.com> Date: Thu, 27 Nov 2014 17:40:23 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1417084026-12307-1-git-send-email-pl@kamp.de> <1417084026-12307-4-git-send-email-pl@kamp.de> In-Reply-To: <1417084026-12307-4-git-send-email-pl@kamp.de> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH 3/3] qemu-coroutine: use a ring per thread for the pool List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Lieven , qemu-devel@nongnu.org Cc: kwolf@redhat.com, famz@redhat.com, benoit@irqsave.net, ming.lei@canonical.com, armbru@redhat.com, mreitz@redhat.com, stefanha@redhat.com On 27/11/2014 11:27, Peter Lieven wrote: > +static __thread struct CoRoutinePool { > + Coroutine *ptrs[POOL_MAX_SIZE]; > + unsigned int size; > + unsigned int nextfree; > +} CoPool; > The per-thread ring unfortunately didn't work well last time it was tested. Devices that do not use ioeventfd (not just the slow ones, even decently performing ones like ahci, nvme or megasas) will create the coroutine in the VCPU thread, and destroy it in the iothread. The result is that coroutines cannot be reused. Can you check if this is still the case? Paolo