From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758100Ab0E0Qo6 (ORCPT ); Thu, 27 May 2010 12:44:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:23825 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754889Ab0E0Qo5 (ORCPT ); Thu, 27 May 2010 12:44:57 -0400 Date: Thu, 27 May 2010 19:39:54 +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: <20100527163954.GA21710@redhat.com> References: <1274227491.2370.110.camel@w-sridhar.beaverton.ibm.com> <20100527091426.GA6308@redhat.com> <20100527124448.GA4241@redhat.com> <20100527131254.GB7974@redhat.com> <4BFE9ABA.6030907@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4BFE9ABA.6030907@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 Thu, May 27, 2010 at 06:15:54PM +0200, Tejun Heo wrote: > Hello, > > On 05/27/2010 03:12 PM, Michael S. Tsirkin wrote: > >> I don't understand the reasons for this patch, but this doesn't matter. > > > > Depending on userspace application, driver can create a lot of work > > for a workqueue to handle. By making the workqueue thread > > belong in a cgroup, we make it possible to the CPU and other > > resources thus consumed. > > Hmmm.... I don't really get it. The unit of scheduling in workqueue > is a work. Yes. However, we use cgroups to limit when the workqueue itself is scheduled. This affects all of work done on this workqueue, so it's a bit of a blunt intrument. Thus we are not trying to apply this to all drivers, we intend to start with vhost-net. > Unless you're gonna convert every driver to use this > special kind of workqueue (and what happens when multiple tasks from > different cgroups share the driver?), We'll then create a workqueue per task. Each workqueue will have the right cgroup. But we are not trying to selve the problem for every driver. > I can't see how this is gonna be > useful. If you really wanna impose cgroup control on workqueue items, > you'll have to do it per work item which might lead to the problem of > priority inversion. Exactly. cgroup is per-workqueue not per work item. If driver wants to let administrators control priority for different kinds of items separately, driver will have to submit them to separate workqueues. > Can you please describe what you're trying to do > in more detail? > > Thank you. vhost-net driver is under control from userspace, it queues potentially a lot of work into the workqueue, which might load the system beyond the cgroup limits. And staying within cgroups limits is important for virtualization where vhost is used. > -- > tejun