How can I track down the remaining sources of jitter?
I have reduced the jitter a lot, but there are still some odd areas of jitter in my base histogram that I can't track down. On my base thread, you can see a few spikes out at -20us and 20us and also some spikes around -10us. (I'm going to use the parallel port for driving my milling machine.)
I'm using an AMD FX-8350 cpus on a biostar A880GZ motherboard. The AMD FX-8350 has 4 cores each with 2 threads, but I set nosmt, so linuxcnc is only using 2 cores. I'm using the integrated graphics card. It is ATI Radeon HD4250 Graphics .
I am running from a live usb drive with the following boot command.
linux /live/vmlinuz-6.1.0-30-rt-amd64 boot=live components quiet splash findiso=${iso_path} skew_tick=1 nosmt=force kthread_cpus=0-1 irqaffinity=0-1 rcu_nocb_poll rcu_nocbs=2-7 nohz=on nohz_full=2-7 isolcpus=2-7 intel_pstate=disable amd_pstate=disable idle=poll cpufreq.off=1 cpuidle.off=1 intel_idle.max_cstate=1 amd_idle.max_cstate=1 nowatchdog nosoftlockup
initrd /live/initrd.img-6.1.0-30-rt-amd64
When booted I also set
sudo sysctl kernel.timer_migration=0
sudo sysctl kernel.sched_rt_runtime_us=-1
(All these setings based on:
dantalion.nl/2024/09/29/linuxcnc-latency...arameter-tuning.html
)
When I run
watch -n 1 -d cat /proc/interrupts
I only see LOC (Local timer interrupts) on CPU2, CPU4, and CPU6, until I start the latency-histogram. All other interrupts are on CPU0. After starting the latency histogram I also see IWI (IRQ work interrupts) on CPU6. (Note: I tried not isolating CPU6. Then the IWI interrupts stayed on CPU6, but the histogram looked worse.
I think I've disabled everything I can in the bios, but maybe I misunderstood some bios setting, and mistakenly turned something on. Here's all my settings I think apply:
Advanced>PCI Subsystem Settings>
PCI ROM Priority = Legacy ROM
PCI Latency Timer = 32 PCI Bus Clocks
VGA Palette Snoop = Disabled
PERR# Generation = Disabled
SERR# Generation = Disabled
Advanced>PCI Subsystem Settings>PCI Express Settings>
Relaxed Ordering = Disabled
Extended Tag = Disabled
No Snoop = Enabled
Maximum Payload = Auto
Maximum Read Request = Auto
ASPM Support = Disabled
Extended Synch = Disabled
Link Training Retry = 5
Link Traing Timeout (uS) = 100
Unpopulated Links = Keep Link ON
Advanced>ACPI Settings
Enable Hibernation = Disabled
ACPI Sleep State = Suspend Disabled
Lock Legacy Resources = Disabled
Wake System With Fixed Time = Disabled
USB Device Wake Up From S3/S4 = Enabled
PME Wake Up From S5 = Enabled
PS2 Keyboard PowerOn = Any Key
Stroke Key = Wake Key
PS2 Mouse PowerOn = Enabled
Advanced>CPU Configuration
Limit CPUID Maximum = Disabled
PowerNow = Disabled
C1E = Disabled
SVM = Disabled
Core C6 State = Disabled
HPC Mode = Disabled
core performance boost = Disabled
HTC temperature limit = 70
Core Leveling = Auto
(I tried disabling, but it just reduces the amount of cores that I can use.)
Advanced>SATA Configuration
All ports = Not Present
Advanced>USB Configuration
USB Devices: = 1 Drive, 1 Mouse
Legacy USB Support = Auto (I tried Disabled, but then I can't boot from USB at all)
EHCI Hand-off = Disabled
USB transfer time-out = 20 sec
Device reset time-out = 20 sec
Device power-up delay = Auto
Mass Storage Devices: Samsung Flash Drive FIT 1100 = Auto
Advanced>SMART FAN Control
CPU Smart FAN = Disabled
Advanced>Super IO Configuration
Super IO Chip = IT8728
Restore AC Power Loss = Power Off
Advanced>Super IO Configuration> Serial Port 0 Configuration
Serial Port = Disabled
Advanced>Super IO Configuration>Parallel Port Configuration
Parallel Port = Enabled
Device Settings = I0=378h; IRQ=5;
Change Settings = Auto
Device Mode = Standard Parallel ...
Advanced>Super IO Configuration>CIR Controller Configuration
CIR Controller = Disabled
Advanced>Chipset
NB Power Management Features = Disabled
Advanced>Chipset>Internal Graphics Configuration
Internal Graphics Mode = UMA
UMA Frame Buffer Size = 1024MB
GFX Engine Clock Override = Disabled
Surround View = Auto
FB Location = Above 4G
AMD 880 HD Audo = Enabled
Vbios Type = HDMI
Advanced>Chipset>PCI Express Configuration
GPP Slots Power Limit, W = 25
Advanced>Chipset>PCI Express Configuration>Port #02 Features
Gen2 High Speed Mode = Auto
Link ASPM = Disabled
Link Width = Auto
Slot Power Limit, W = 75
Advanced>Chipset>PCI Express Configuration>Port #06 Features
Gen2 High Speed Mode = Auto
Link ASPM = Disabled
Advanced>Chipset>PCI Express Configuration>NB-SB Port Features
NB-SB Link ASPM = L1
NP NB-SB VC1 Traffic Support = Disabled
Link Width = Auto
Advanced>Chipset>South Bridge Configuration
SB CIM Version: 1.1.0.9
SB Clock Spread Spectrum = Disabled
Advanced>Chipset>South Bridge Configuration>SB SATA Configuration
OnChip SATA Channel = Disabled
OnChip IDE mode = Legacy mode
SATA-III Mode = Auto
Advanced>Chipset>South Bridge Configuration>SB USB Configuration
(All enabled)
Advanced>Chipset>South Bridge Configuration>SB HD Azalia Configuration
HD Audio Azalia Device = Disabled
Azalia Snoop = Disabled
Advanced>Chipset>OnBoard Peripherals Configuration
Realtek PCIE NIC = Disabled
MAC ID not find
Under the Performance section I left everything default.
Any ideas where I can further reduce jitter?