TSC warp, Threads
Hal Murray
hmurray at megapathdsl.net
Thu Mar 11 01:25:26 UTC 2021
Does anybody have access to server class systems? Or know somebody who can
run a quick test for me?
Long story.
I'm trying to setup a test environment for the thread work. Dell high end
workstations use Xeon chips. I have a T5610, but it has TSC warp so doesn't
use the TSC for timekeeping. That's not fatal, but it's annoying and screws
up trying to get timing for what a real system would get.
In case you aren't familiar with TSC warp... Using the TSC for timekeeping
requires that the TSCs on all the cores be in sync. It took Intel a few tries
to figure what they had to do. Chip reset has to clear them all but a soft
reset for an individual CPU must not clear the TSC. So old chips don't work.
I haven't found a list of chips that do/don't work, or a recipe. As far as I
can tell, there isn't a features flag for this feature.
The Linux kernel now tests to see if the TSCs are in sync. When they are not
in sync, dmesg/syslog will have things like this:
Mar 1 08:22:43 sam kernel: TSC synchronization [CPU#0 -> CPU#1]:
Mar 1 08:22:43 sam kernel: Measured 443896 cycles TSC warp between CPUs,
turning off TSC clock.
Mar 1 08:22:43 sam kernel: tsc: Marking TSC unstable due to
check_tsc_sync_source failed
The problem could be in the processor chip or the kernel or the BIOS. The
kernel works on other systems. I'm pretty sure it's not guilty. I found some
Intel documentation for chips I'm using listing doing the resets right (for
timekeeping) as an errata. That leaves the BIOS.
So I'd like to see if the BIOSes on other systems have this bug. If anybody
has access to a server or high end workstation, anything running Linux on a
Xeon chip, I'd like to know if it does or doesn't have a warped TSC. Just run
"dmesg | grep tsc -i" If you get the 3 lines above, it's warped.
I'd like to know the type/model of system and the processor chip and the
yes/no on the warp. You can get the CPU chip from /proc/cpuinfo
Ideally, I'd like to find a workstation (quieter than servers) that doesn't
have this bug/feature and is old enough so I can get a refurbished system at a
reasonable price.
Data from servers can confirm that the chip is not broken. I'm particularly
interested in E5-26xx chips.
---------------
I've been debugging test code. I have a multi threaded echo server with a
knob to spin for N uSec before replying. I also have a test harness to drive
clients on several systems, each with several threads/sockets so several
low-end systems can generate enough traffic to saturate a high end system.
If N is 0, my best workstation can echo a million packets per second. I think
the limiting factor is the kernel thread processing input packets. It has to
figure out which socket gets each packet. It takes about 4 uSec per packet
for the worker threads. If N is big enough then the worker CPUs get saturated.
I have a similar test harness for NTP. (This is why I'm poking at
ntp_control. I want to look at CPU usage (getrusage).)
NTP numbers on a fast PC are, roughly:
NTP 6 uSec, 167K packets/second
AES 7.2 uSec, 138K
NTS 17 uSec, 59K
Details depend a lot on how well your chip does AES. Intel has improved that
over the years.
FreeBSD is significantly faster than Linux.
--
These are my opinions. I hate spam.
More information about the devel
mailing list