From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752337Ab0E3LeV (ORCPT ); Sun, 30 May 2010 07:34:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41931 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751208Ab0E3LeT (ORCPT ); Sun, 30 May 2010 07:34:19 -0400 Date: Sun, 30 May 2010 14:29:25 +0300 From: "Michael S. Tsirkin" To: Tejun Heo Cc: Oleg Nesterov , Sridhar Samudrala , netdev , lkml , "kvm@vger.kernel.org" , Andrew Morton , Dmitri Vorobiev , Jiri Kosina , Thomas Gleixner , Ingo Molnar , Andi Kleen Subject: Re: [PATCH 2/3] workqueue: Add an API to create a singlethread workqueue attached to the current task's cgroup Message-ID: <20100530112925.GB27611@redhat.com> References: <20100527091426.GA6308@redhat.com> <20100527124448.GA4241@redhat.com> <20100527131254.GB7974@redhat.com> <4BFE9ABA.6030907@kernel.org> <20100527163954.GA21710@redhat.com> <4BFEA434.6080405@kernel.org> <20100527173207.GA21880@redhat.com> <4BFEE216.2070807@kernel.org> <20100528150830.GB21880@redhat.com> <4BFFE742.2060205@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4BFFE742.2060205@kernel.org> User-Agent: Mutt/1.5.19 (2009-01-05) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 28, 2010 at 05:54:42PM +0200, Tejun Heo wrote: > Hello, > > On 05/28/2010 05:08 PM, Michael S. Tsirkin wrote: > > Well, we have create_singlethread_workqueue, right? > > This is not very different ... is it? > > > > Just copying structures and code from workqueue.c, > > adding vhost_ in front of it will definitely work: > > Sure it will, but you'll probably be able to get away with much less. > > > there is nothing magic about the workqueue library. > > But this just involves cut and paste which might be best avoided. > > What I'm saying is that some magic needs to be added to workqueue and > if you add this single(!) exception, it will have to be backed out > pretty soon, so it would be better to do it properly now. > > > One final idea before we go the cut and paste way: how about > > 'create_workqueue_from_task' that would get a thread and have workqueue > > run there? > > You can currently depend on that implementation detail but it's not > the workqueue interface is meant to do. The single threadedness is > there as execution ordering and concurrency specification and it > doesn't (or rather won't) necessarily mean that a specific single > thread is bound to certain workqueue. > > Can you please direct me to have a look at the code. I'll be happy to > do the conversion for you. Great, thanks! The code in question is in drivers/vhost/vhost.c It is used from drivers/vhost/net.c On top of this, we have patchset from Sridhar Samudrala, titled '0/3 Make vhost multi-threaded and associate each thread to its guest's cgroup': cgroups: Add an API to attach a task to current task's cgroup workqueue: Add an API to create a singlethread workqueue attached to the current task's cgroup vhost: make it more scalable by creating a vhost thread per device I have bounced the last three your way. > Thanks. > > -- > tejun