Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Jun 2019 00:25:03 +1000 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Alexander Motin <mav@freebsd.org>
Cc:        Bruce Evans <brde@optusnet.com.au>, src-committers@freebsd.org,  svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r349029 - head/sys/kern
Message-ID:  <20190614235433.H1624@besplex.bde.org>
In-Reply-To: <399ec4d3-6548-1145-4dea-f0b7850f8381@FreeBSD.org>
References:  <201906140109.x5E19Aj9087899@repo.freebsd.org> <20190614214154.I1201@besplex.bde.org> <399ec4d3-6548-1145-4dea-f0b7850f8381@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 14 Jun 2019, Alexander Motin wrote:

> On 14.06.2019 08:58, Bruce Evans wrote:
>> On Fri, 14 Jun 2019, Alexander Motin wrote:
>>
>>> Log:
>>> =C2=A0Update td_runtime of running thread on each statclock().
>>>
>>> =C2=A0Normally td_runtime is updated on context switch, but there are s=
ome
>>> kernel
>>> =C2=A0threads that due to high absolute priority may run for many secon=
ds
>>> without
>>> =C2=A0context switches (yes, that is bad, but that is true), which mean=
s their
>>> =C2=A0td_runtime was not updated all that time, that made them invisibl=
e
>>> for top
>>> =C2=A0other then as some general CPU usage.
>>>
>>> =C2=A0MFC after:=C2=A0=C2=A0=C2=A0 1 week
>>> =C2=A0Sponsored by:=C2=A0=C2=A0=C2=A0 iXsystems, Inc.
>>
>> This and more is supposed to be done in calcru().=C2=A0 It is also neces=
sary to
>> adjust for the current timeslice.
>>
>> I thought that calcru() was fixed, but the fix seems to be only in my
>> version of FreeBSD-5.2.
>>
>> The bug seems to be in fill_kinfo_proc_only().=C2=A0 calcru() should upd=
ate
>> td_runtime for all threads in the proc (and sum into rux_rutime),
>
> ...
>
>> td_runtime is updated in one other place: in rufetchtd(), but this funct=
ion
>> has the same bug eas everywhere else -- it only updates the runtimes for
>> curthread.
>
> I think it has very simple reason -- now each CPU measures CPU time in
> its own time units, since cpu_ticks() are not synchronized and can not
> be compared between different CPUs, so to update td_runtime of another
> running thread you would need to switch to that CPU, or somehow else get
> the value (cache it periodically?).

I forgot about that bugfeature in the cpu ticker.

> I see in your code you are using binuptime() calls instead of
> cpu_ticks().  I suppose it fixes many problems, since it is globally
> synchronous, but there was a reason why cpu_ticks() exists -- it is
> cheaper on system non-synchronized TSC.  May be we could reconsider
> that, giving up on old platforms, expecting all new one to not have this
> problem, but for right now I think my patch is good enough to make top
> sane again, that annoyed me for years.

It was written before the cpu ticker existed.

cpu_ticks() exists because bintime() is too slow if the timecounter hardwar=
e
is too slow.  i8254 timecounter hardware takes about 5 usec, ACPI timer
about 1 usec, and HPET many hundreds of nsec.  And of course,
non-synchronized TSCs make the TSC unusable as a timecounter, so require
use of a slow timecounter.  Some systems don't have a TSC, so they use a
timecounter for the cpu ticker anyway.

There are many other bugs in the cpu ticker which only became not too bad
when P-state invariant TSCs became common.  The largest one is that all
ticks are scaled at the current cpu ticker frequency.  If synchronized
P-state invariant TSCs are available, then the cpu ticker reduces to
a micro-optimization.

My code is used mainly on UP systems with TSC timecounters.  I don't have
any systems without a TSC, and UP avoids the problems of synchronization,
and not throttling the CPU avoids the problem of the frequency changing,
and I never noticed the micro-pessimization of using bintime() for the
cpu ticker.

I never noticed the problem in -current either, though I use my version of
SCHED_4BSD with lots of tuning to reduce context switches.  The tuning ofte=
n
results in threads running for a full quantum (100 msec) before switching,
but I never noticed threads not switching for several seconds.

Bruce
From owner-svn-src-all@freebsd.org  Fri Jun 14 15:09:09 2019
Return-Path: <owner-svn-src-all@freebsd.org>
Delivered-To: svn-src-all@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id C614015D17BA;
 Fri, 14 Jun 2019 15:09:09 +0000 (UTC)
 (envelope-from allanjude@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 server-signature RSA-PSS (4096 bits)
 client-signature RSA-PSS (4096 bits) client-digest SHA256)
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 684E36E7F8;
 Fri, 14 Jun 2019 15:09:09 +0000 (UTC)
 (envelope-from allanjude@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 415BE1974F;
 Fri, 14 Jun 2019 15:09:09 +0000 (UTC)
 (envelope-from allanjude@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x5EF99gY018395;
 Fri, 14 Jun 2019 15:09:09 GMT (envelope-from allanjude@FreeBSD.org)
Received: (from allanjude@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id x5EF99Ye018394;
 Fri, 14 Jun 2019 15:09:09 GMT (envelope-from allanjude@FreeBSD.org)
Message-Id: <201906141509.x5EF99Ye018394@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: allanjude set sender to
 allanjude@FreeBSD.org using -f
From: Allan Jude <allanjude@FreeBSD.org>
Date: Fri, 14 Jun 2019 15:09:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r349034 - stable/12/cddl/contrib/opensolaris/cmd/zpool
X-SVN-Group: stable-12
X-SVN-Commit-Author: allanjude
X-SVN-Commit-Paths: stable/12/cddl/contrib/opensolaris/cmd/zpool
X-SVN-Commit-Revision: 349034
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 684E36E7F8
X-Spamd-Bar: --
Authentication-Results: mx1.freebsd.org
X-Spamd-Result: default: False [-2.96 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.999,0];
 NEURAL_HAM_LONG(-1.00)[-1.000,0];
 NEURAL_HAM_SHORT(-0.96)[-0.963,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-BeenThere: svn-src-all@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "SVN commit messages for the entire src tree \(except for &quot;
 user&quot; and &quot; projects&quot; \)" <svn-src-all.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-all/>;
List-Post: <mailto:svn-src-all@freebsd.org>
List-Help: <mailto:svn-src-all-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 14 Jun 2019 15:09:10 -0000

Author: allanjude
Date: Fri Jun 14 15:09:08 2019
New Revision: 349034
URL: https://svnweb.freebsd.org/changeset/base/349034

Log:
  MFC r348714:
  
  zpool.8: the comment property is not read-only
  
  The comment property was listed in the man page twice, once under the list
  of read-only properties, and again (correctly), under the list of user
  editable properties.
  
  PR:		238355
  Reported by:	Michael Zuo <muh.muhten@gmail.com>
  Sponsored by:	Klara Systems

Modified:
  stable/12/cddl/contrib/opensolaris/cmd/zpool/zpool.8
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/cddl/contrib/opensolaris/cmd/zpool/zpool.8
==============================================================================
--- stable/12/cddl/contrib/opensolaris/cmd/zpool/zpool.8	Fri Jun 14 10:39:05 2019	(r349033)
+++ stable/12/cddl/contrib/opensolaris/cmd/zpool/zpool.8	Fri Jun 14 15:09:08 2019	(r349034)
@@ -604,10 +604,6 @@ Amount of storage space within the pool that has been 
 .It Sy capacity
 Percentage of pool space used. This property can also be referred to by its
 shortened column name, "cap".
-.It Sy comment
-A text string consisting of printable ASCII characters that will be stored
-such that it is available even if the pool becomes faulted.  An administrator
-can provide additional information about a pool using this property.
 .It Sy dedupratio
 The deduplication ratio specified for a pool, expressed as a multiplier.
 For example, a



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190614235433.H1624>