My ThinkPad T440s (wireless chipset
Intel Corporation Wireless 7260) running Ubuntu 22.10 has been exhibiting unexplained periodic latency spikes on WiFi.
- The spikes occur exactly every 5min and cause the latency to spike from below 10ms to over 100ms.
- The behavior occurs only on WiFi and not on a wired connection.
- The latency spikes are not correlated with other devices (e.g. my phone or MacBook).
A default Ubuntu install automatically runs geoclue to provide location services. Per default, geoclue scans for nearby WiFi access points every 300s (5min) which causes a freeze in WiFi traffic for the duration of the scan. This is not a new issue and has been reported before. The behavior can be reproduced by triggering a manual scan:
iw wlp3s0 scan
Disable WiFi scanning in
geoclue by editing
# WiFi source configuration options [wifi] # Enable WiFi source enable=false
Sample WiFi latency by running
This produces a row containing the timestamp and latency for each ping (
rg is ripgrep).
ping -s 64 -i 0.1 -D 192.168.1.1 | rg '\[(.*)\].*time=(.*) ms' -r '$1,$2' --line-buffered | tee latency.csv
The results can be plotted using
gnuplot -e "file='latency.csv'" plot.gnu
set datafile separator "," set xdata time set timefmt "%s" set format x "%M:%S" p file u 1:2, file u 1:2 smooth bezier with lines # Automatically refresh every 1s, comment out to disable pause 1 reread
Other useful tools
blip can be used as a secondary method for sampling latency.
nethogs can be used to monitor application network usage.
wavemon can be used to monitor WiFi signal health.