From owner-freebsd-arch@FreeBSD.ORG Sat Jan 4 04:22:40 2014 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2CE207FF for ; Sat, 4 Jan 2014 04:22:40 +0000 (UTC) Received: from mail-qa0-x235.google.com (mail-qa0-x235.google.com [IPv6:2607:f8b0:400d:c00::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E39721FCE for ; Sat, 4 Jan 2014 04:22:39 +0000 (UTC) Received: by mail-qa0-f53.google.com with SMTP id j5so1172326qaq.5 for ; Fri, 03 Jan 2014 20:22:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=Aj79LJd6RHRZ5Ga0fy7JhiL57F7oaogjVnr0m8zZkWM=; b=QQxamRszrDoi8BFLeaOGncMm3bUjwkReSYJ7mb2zLiJAS0Zirq5jSOZ0Iq0cPRKe8T g4weq4AsS+sy/f7P5QOr7atA7sT+aRkuctSrOKeC0QwGIBmZwOFxprNSgZQVtLXIq0ug WB0pV2B+cIUQ0Ooxy43/k74BAMNco2TK30G8v/3wldAG1B6iSrd5El7Sc2DdZBYBTGKw XcBLrs7mBmMPEX8KC+SvQdQI+T6PPGf73DqBr2WjSRTO3xD1x8X4RHrZGVAD6zvc2ADq aPPoHRqFkCRAUSRvacFMlmAqqgL3lHoA6s5RxcZT+jJnkvDb5Zzoay0Qd9Llsx7Xt7aB 3jog== MIME-Version: 1.0 X-Received: by 10.49.34.207 with SMTP id b15mr158746247qej.49.1388809359133; Fri, 03 Jan 2014 20:22:39 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Fri, 3 Jan 2014 20:22:39 -0800 (PST) Date: Fri, 3 Jan 2014 20:22:39 -0800 X-Google-Sender-Auth: cjM_IYWXpcQxJ7C3eDGm2KfoN_k Message-ID: Subject: profiling hangs - quiesce_cpus() From: Adrian Chadd To: "freebsd-arch@freebsd.org" Content-Type: text/plain; charset=ISO-8859-1 X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Jan 2014 04:22:40 -0000 Here's another fun one. If the idle thread on a CPU doesn't run, then quiesce_cpus() (and thus quiesce_all_cpus()) doesn't finish. The td_generation on the idlethread doesn't get bumped as the idlethread doesn't get run. Because of this, things like lock profiling just hangs when trying to get stats or enable it as it does a CPU synchronisation by the above function calls and they don't ever return. Any ideas? It makes it a bit annoying to do fine grained lock contention profiling when I'm doing this. :-) Thanks! -a