timer counter chip access mystery]

Jin Guojun [DSD] j_guojun at lbl.gov
Wed Jul 16 16:23:18 PDT 2003


5.1 defaults to use ACPI-safe, which calls read_counter() at least
three times. The total cost is 3098 ns. So, it meas that read_count()
cost is about 1000 ns, which is close to what the Linux does.

The rest question is how much error will be if not to use
ACPI-safe? i.e., sysctl kern.timecounter.hardware=ACPI?

    -Jin

/*
 * Fetch current time value from reliable hardware.
 */
static unsigned
acpi_timer_get_timecount(struct timecounter *tc)
{
    return (read_counter());
}

/*
 * Fetch current time value from hardware that may not correctly
 * latch the counter.
 */
static unsigned
acpi_timer_get_timecount_safe(struct timecounter *tc)
{
    unsigned u1, u2, u3;

    u2 = read_counter();
    u3 = read_counter();
    do {
        u1 = u2;
        u2 = u3;
        u3 = read_counter();
    } while (u1 > u2 || u2 > u3 || (u3 - u1) > 15);
    return (u2);
}

Petri Helenius wrote:

> 5.x defaults to ACPI or TSC timers. So your wish has been transported
> by a timemachine into the past.
>
> With 4.x you have to set it manually.
>
> Pete
>
> ----- Original Message -----
> From: "Steven Hartland" <killing at barrysworld.com>
> To: "Petri Helenius" <pete at he.iki.fi>; "Jin Guojun [DSD]" <j_guojun at lbl.gov>; <freebsd-performance at freebsd.org>
> Sent: Thursday, July 17, 2003 12:57 AM
> Subject: Re: timer counter chip access mystery]
>
> > If this could be changed / fixed it would have a marked performance increase
> > for all game server code which use this function heavily from what I've seen
> > and would explain the sometimes huge performance differential between
> > FreeBSD and Linux.
> >
> >     Steve / K
> > ----- Original Message -----
> > From: "Petri Helenius" <pete at he.iki.fi>
> > To: "Jin Guojun [DSD]" <j_guojun at lbl.gov>; <freebsd-performance at freebsd.org>
> > Sent: Wednesday, July 16, 2003 10:44 PM
> > Subject: Re: timer counter chip access mystery]
> >
> >
> > >
> > > This access happens over ISA bus and thus happens at the speed the bus
> > > operates at. Use TSC or ACPI for faster gettimeofday.
> > >
> > > Pete



More information about the freebsd-performance mailing list