Date: Mon, 11 Oct 2021 11:43:57 +0200 From: Sebastian Huber <sebastian.huber@embedded-brains.de> To: Konstantin Belousov <kostikbel@gmail.com> Cc: FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: Re: Large timecounter delta handling Message-ID: <302debc8-2888-228a-b009-1bade543fb9a@embedded-brains.de> In-Reply-To: <994a76c2-4ea6-bfdc-bbe5-0795cf8fd4ee@embedded-brains.de> References: <5318327d-d247-bb73-81d9-967c4ae18d32@embedded-brains.de> <YWP8sNfY0i4VNunS@kib.kiev.ua> <994a76c2-4ea6-bfdc-bbe5-0795cf8fd4ee@embedded-brains.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On 11/10/2021 11:31, Sebastian Huber wrote:
>> Your question is more like "under which conditions we switch to use
>> tc_large_delta path in bintime_off()?" Then it is mostly right, that
>> long intervals between tc_windup() calls would trigger it, and it seems
>> that indeed it is around 0.5 sec.
>
> Yes, this was the question.
>
> I think the initialization value should be 50000:
>
> diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c
> index 81d373b3b1d0..a4792e31abd4 100644
> --- a/sys/kern/kern_tc.c
> +++ b/sys/kern/kern_tc.c
> @@ -87,7 +87,7 @@ static struct timehands ths[16] = {
> [0] = {
> .th_counter = &dummy_timecounter,
> .th_scale = (uint64_t)-1 / 1000000,
> - .th_large_delta = 1000000,
> + .th_large_delta = 500000,
> .th_offset = { .sec = 1 },
> .th_generation = 1,
> },
No, sorry. The existing code is correct. I miscalculated the large delta
by using th->th_scale for "scale" in
th->th_large_delta = MIN(((uint64_t)1 << 63) / scale, UINT_MAX);
which is
th->th_scale = scale * 2;
--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax: +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?302debc8-2888-228a-b009-1bade543fb9a>
