From owner-freebsd-current@FreeBSD.ORG Mon May 18 17:38:05 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A74921065770; Mon, 18 May 2009 17:38:05 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-fx0-f216.google.com (mail-fx0-f216.google.com [209.85.220.216]) by mx1.freebsd.org (Postfix) with ESMTP id 0C5298FC16; Mon, 18 May 2009 17:38:04 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by fxm12 with SMTP id 12so3380129fxm.43 for ; Mon, 18 May 2009 10:38:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to:cc :content-type:content-transfer-encoding; bh=Iwijg4t5QZUMtH35PCYnaID0rf5Jcyt66A5xz9YDjvM=; b=Pdv1DvBNTWAulLxvbabhMLm+xhzunZzt5nrljlComlPJd+3JSfcdZnePrfOT6tLOoi QPS2OMN0IpSPQAWflJ0QhROWYhb5/63mEGGAoEbBdFC+7EXfsJvoE6g09FQXYlEN2Vra Jp+g7HDKxZQCCkHZOcGgVo06UCXnhhwHnNVks= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=DPVy8R69wJuwOptEhC+WzOcFkaOi+7E17PfnMCB3UpjfpI7t1vEqKfIcoPf+9WI4Ch /SDSGBulDppNAIxxsK++EnfcW/Ce4gP28Vqj1+NHsVJj0yhE29Ls0XCKXcxVPrt9+xoe 2VIIuCYUvWB9rN/7vEun4t0IB2YOEh2ZpEYHc= MIME-Version: 1.0 Sender: asmrookie@gmail.com Received: by 10.223.113.68 with SMTP id z4mr4502847fap.72.1242668284002; Mon, 18 May 2009 10:38:04 -0700 (PDT) In-Reply-To: <200905181331.11174.jhb@freebsd.org> References: <08D7DC2A-68BE-47B6-8D5D-5DE6B48F87E5@wanderview.com> <200905181129.51526.jhb@freebsd.org> <3bbf2fe10905181012t4bde260bp31181e3ea7b03a42@mail.gmail.com> <200905181331.11174.jhb@freebsd.org> Date: Mon, 18 May 2009 19:38:03 +0200 X-Google-Sender-Auth: b5ce08f50f9124d3 Message-ID: <3bbf2fe10905181038geaec26csffea4788a40feaca@mail.gmail.com> From: Attilio Rao To: John Baldwin Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: Adam McDougall , freebsd-current@freebsd.org, Artem Belevich , Ben Kelly Subject: Re: [patch] zfs livelock and thread priorities X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 May 2009 17:38:06 -0000 2009/5/18 John Baldwin : > On Monday 18 May 2009 1:12:59 pm Attilio Rao wrote: >> 2009/5/18 John Baldwin : >> > On Saturday 16 May 2009 12:40:44 pm Ben Kelly wrote: >> >> =C2=A0 =C2=A01) It changes the kproc(9) API by adding a kproc_create_= priority() >> >> function that allows you to set the priority of the newly created >> >> thread. =C2=A0I'm not sure how people feel about this. >> > >> > Actually, I almost think we should just add a priority argument to eac= h of > the >> > routines that creates a new kthread/kproc. =C2=A0Perhaps allow a prior= ity of 0 > to >> > let the thread run with the default priority. =C2=A0Hmm, it looks like= kthreads >> > default to running with whatever thread0 runs at (PVM) which is probab= ly > not >> > really ideal. =C2=A0Having an explicit priority for every kthread woul= d > probably >> > be best. =C2=A0Most kthreads should probably be at PZERO by default I = think. >> >> I'm not sure I agree here. >> 1) Maybe I missed it (so please point me to the right one) but I >> didn't see a deep analysis of what messed up with the priorities there > > Solaris makes certain assumptions about the relative priorities of ZFS th= reads > and our ZFS doesn't set the priorities the same. =C2=A0I think specifical= ly there > are "cleaner" threads which have a higher priority on Solaris than other = ZFS > threads and Solaris depends on that to avoid deadlocks. OMG. This still doesn't explain priorities like 49 or such seen in the first report as long as we don't set priorities by hand, >> 2) I think this KPI can be dangerous and lead to problems. Priority is >> something highly fragile. > > All the more reason to make developers _think_ about the priority of each > kthread they create. =C2=A0Right now all these threads start out with a p= riority > of PVM since that is what thread0 runs at. =C2=A0Does that sound right to= you? =C2=A0Do > you think many folks realize that? =C2=A0It sounds very bogus to me. =C2= =A0I think > forcing people to pick a sensible priority for each thread is far better = than > the complete lack of thought that often happens now. At least, we could leave the default version not accepting any priority for threads which are not interested on that and trying to move people to the new KPI _only and if only_ they need real boosts or lay down. Thanks, Attilio --=20 Peace can only be achieved by understanding - A. Einstein