Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Nov 2016 22:16:39 -0700
From:      Jason Harmening <jason.harmening@gmail.com>
To:        Kevin Oberman <rkoberman@gmail.com>
Cc:        FreeBSD-STABLE Mailing List <freebsd-stable@freebsd.org>
Subject:   Re: huge nanosleep variance on 11-stable
Message-ID:  <a6c4ecc0-c084-8ecd-c9ee-4dfabf5a88e9@gmail.com>
In-Reply-To: <CAN6yY1vKr_PAHp3bL-iiHndPxq58kz_qFqmjbEcK1CbmhywVZg@mail.gmail.com>
References:  <c88341e2-4c52-ed3c-a469-6446da4415f4@gmail.com> <6167392c-c37a-6e39-aa22-ca45435d6088@gmail.com> <1c3f4599-8aef-471a-3a39-49d913f1a4e5@gmail.com> <CAN6yY1vKr_PAHp3bL-iiHndPxq58kz_qFqmjbEcK1CbmhywVZg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--17l0HvA18Gx7iIfq8LvJv7LJbKkkiT9Ah
Content-Type: multipart/mixed; boundary="8HTTFfHFskPSnrQDLV8uDFxOEbWF1knW6";
 protected-headers="v1"
From: Jason Harmening <jason.harmening@gmail.com>
To: Kevin Oberman <rkoberman@gmail.com>
Cc: FreeBSD-STABLE Mailing List <freebsd-stable@freebsd.org>
Message-ID: <a6c4ecc0-c084-8ecd-c9ee-4dfabf5a88e9@gmail.com>
Subject: Re: huge nanosleep variance on 11-stable
References: <c88341e2-4c52-ed3c-a469-6446da4415f4@gmail.com>
 <6167392c-c37a-6e39-aa22-ca45435d6088@gmail.com>
 <1c3f4599-8aef-471a-3a39-49d913f1a4e5@gmail.com>
 <CAN6yY1vKr_PAHp3bL-iiHndPxq58kz_qFqmjbEcK1CbmhywVZg@mail.gmail.com>
In-Reply-To: <CAN6yY1vKr_PAHp3bL-iiHndPxq58kz_qFqmjbEcK1CbmhywVZg@mail.gmail.com>

--8HTTFfHFskPSnrQDLV8uDFxOEbWF1knW6
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable



On 11/01/16 20:45, Kevin Oberman wrote:
> On Tue, Nov 1, 2016 at 2:36 PM, Jason Harmening
> <jason.harmening@gmail.com <mailto:jason.harmening@gmail.com>> wrote:
>=20
>     Sorry, that should be ~*30ms* to get 30fps, though the variance is =
still
>     up to 500ms for me either way.
>=20
>     On 11/01/16 14:29, Jason Harmening wrote:
>     > repro code is at http://pastebin.com/B68N4AFY if anyone's interes=
ted.
>     >
>     > On 11/01/16 13:58, Jason Harmening wrote:
>     >> Hi everyone,
>     >>
>     >> I recently upgraded my main amd64 server from 10.3-stable
>     (r302011) to
>     >> 11.0-stable (r308099).  It went smoothly except for one big issu=
e:
>     >> certain applications (but not the system as a whole) respond ver=
y
>     >> sluggishly, and video playback of any kind is extremely choppy.
>     >>
>     >> The system is under very light load, and I see no evidence of
>     abnormal
>     >> interrupt latency or interrupt load.  More interestingly, if I
>     place the
>     >> system under full load (~0.0% idle) the problem *disappears* and=

>     >> playback/responsiveness are smooth and quick.
>     >>
>     >> Running ktrace on some of the affected apps points me at the pro=
blem:
>     >> huge variance in the amount of time spent in the nanosleep syste=
m
>     call.
>     >> A sleep of, say, 5ms might take anywhere from 5ms to ~500ms from=

>     entry
>     >> to return of the syscall.  OTOH, anything CPU-bound or that wait=
s on
>     >> condvars or I/O interrupts seems to work fine, so this doesn't
>     seem to
>     >> be an issue with overall system latency.
>     >>
>     >> I can repro this with a simple program that just does a 3ms
>     usleep in a
>     >> tight loop (i.e. roughly the amount of time a video player would=

>     sleep
>     >> between frames @ 30fps).  At light load ktrace will show the hug=
e
>     >> nanosleep variance; under heavy load every nanosleep will comple=
te in
>     >> almost exactly 3ms.
>     >>
>     >> FWIW, I don't see this on -current, although right now all my
>     -current
>     >> images are VMs on different HW so that might not mean anything. =

>     I'm not
>     >> aware of any recent timer- or scheduler- specific changes, so I'=
m
>     >> wondering if perhaps the recent IPI or taskqueue changes might b=
e
>     >> somehow to blame.
>     >>
>     >> I'm not especially familiar w/ the relevant parts of the kernel,=

>     so any
>     >> guidance on where I should focus my debugging efforts would be m=
uch
>     >> appreciated.
>     >>
>     >> Thanks,
>     >> Jason
>=20
> =20
> This is likely off track, but this is a behavior I have noticed since
> moving to 11, though it might have started in 10.3-STABLE before moving=

> to head before 11 went to beta. I can't explain any way nanosleep could=

> be involved, but I saw annoying lock-ups similar to yours. I also no
> longer see them.
>=20
> I eliminated the annoyance by change scheduler from ULE to 4BSD. That
> was it, but I have not seen the issue since. I'd be very interested in
> whether the scheduler is somehow impacting timing functions or it's s
> different issue. I've felt that there was something off in ULE for some=

> time, but it was not until these annoying hiccups convinced me to try
> going back to 4BSD.
>=20
> Tip o' the hat to Doug B. for his suggestions that ULE may have issues
> that impacted interactivity.

I figured it out: r282678 (which was never MFCed to 10-stable) added
support for the MWAIT instruction on the idle path for Intel CPUs that
claim to support it.

While my CPU (2009-era Xeon 5500) advertises support for it in its
feature mask and ACPI C-state entries, the cores don't seem to respond
very quickly to interrupts while idling in MWAIT.  Disabling mwait in
acpi_cpu.c and falling back to the old "sti; hlt" mechanism for C1
completely fixes the responsiveness issues.

So if your CPU is of a similar vintage, it may not be ULE's fault.


--8HTTFfHFskPSnrQDLV8uDFxOEbWF1knW6--

--17l0HvA18Gx7iIfq8LvJv7LJbKkkiT9Ah
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQF8BAEBCgBmBQJYGXa6XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRENkY3MTQyREU0MTU4MTgyRkZDNUU2ODVC
QjlGOEJGOTkyODQxRDFCAAoJELufi/mShB0bwGwH/RVFzEp0ThkwNTW6nJc5j/0u
QWOLclW56iZ3CJMMAdIG6Dk0P8V4fg9KxuSL276PFxxcGq1sNg3HeTh69cAUWK3N
i3jjSa2JUgh4VAViKAEOTr1iWcNgqFpNl+05NP9ZWJY/v60n4AmMApNXH6KT8C5f
WQnPymA3csxxUBtmHGZnDyUDrlpWNRfk2b6M2E9Zc975hJTpBxyxhI+IrmoyiB/4
2yQ0ha0SqzT2dN9f7XgFVvpuRJTGaaWWLhMYGib69U7EhVudkYNn33/dftI6eDYt
ZRxLJgvfJr6Z3s3o9+xKv5ExGrMqOFF1DkCznm0klcCSkPiH1VVTfZCRkko8tI4=
=xnUb
-----END PGP SIGNATURE-----

--17l0HvA18Gx7iIfq8LvJv7LJbKkkiT9Ah--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a6c4ecc0-c084-8ecd-c9ee-4dfabf5a88e9>