When analyzing network performance using ping
, the final line of output contains four key metrics:
rtt min/avg/max/mdev = 119.242/119.242/119.242/0.000 ms
The mdev
field stands for Mean Deviation, which represents the standard deviation of the round-trip times (RTT). This statistical measure indicates the variability in your network latency - a crucial metric for developers working with real-time applications.
A lower mdev value indicates more consistent network latency, while higher values show greater fluctuation. Consider these two contrasting examples:
// Stable connection example
rtt min/avg/max/mdev = 20.1/20.3/20.5/0.2 ms
// Unstable connection example
rtt min/avg/max/mdev = 15.7/45.2/210.4/58.3 ms
In the first case, the small mdev (0.2ms) suggests predictable network behavior. The second example's large mdev (58.3ms) indicates significant jitter, which could impact VoIP calls, gaming, or financial transactions.
When building network-dependent applications, you should monitor mdev alongside average latency:
#!/bin/bash
# Sample script to monitor network stability
ping -c 10 example.com | awk -F'/' 'END{print $5}' | cut -d' ' -f4
This extracts just the mdev value for automated monitoring. For Python applications, you might process ping output like this:
import subprocess
def get_mdev(target):
ping = subprocess.Popen(
["ping", "-c", "5", target],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
output = ping.communicate()[0].decode()
if "mdev" in output:
return float(output.split("mdev = ")[1].split("/")[3])
return None
As a general guideline:
- < 5ms: Excellent consistency
- 5-20ms: Average for most broadband
- > 50ms: Potential issues for real-time apps
For context, here's how different applications are affected:
// Gaming threshold (FPS games)
if (mdev > 30) {
console.log("Network jitter may affect gameplay");
}
// VoIP threshold
if (mdev > 20) {
alert("Call quality may degrade");
}
For network diagnostics, create a CSV log of mdev values:
while true; do
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
mdev=$(ping -c 5 google.com | awk -F'/' 'END{print $5}' | cut -d' ' -f4)
echo "$timestamp,$mdev" >> network_stability.csv
sleep 300
done
This creates a 5-minute interval log you can analyze for patterns of network instability.
When analyzing network performance using the ping
command in Linux, the final line of output displays four key metrics:
rtt min/avg/max/mdev = 119.242/119.242/119.242/0.000 ms
The mdev
value represents the Mean Deviation of the round-trip time (RTT) measurements. This statistical metric indicates the standard deviation of the ping response times, showing how much variation exists in the network latency.
Unlike simple average latency (avg
), mdev
reveals the consistency of network performance:
- A low
mdev
(close to 0) indicates stable network conditions - A high
mdev
suggests network jitter or inconsistent routing
Here's a more detailed example with multiple pings:
$ ping -c 5 example.com
PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_seq=1 ttl=53 time=11.3 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=53 time=10.8 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=53 time=25.1 ms
64 bytes from 93.184.216.34: icmp_seq=4 ttl=53 time=12.4 ms
64 bytes from 93.184.216.34: icmp_seq=5 ttl=53 time=10.9 ms
--- example.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 10.878/14.148/25.142/5.342 ms
Network engineers use mdev
to:
- Identify network congestion points
- Troubleshoot VoIP quality issues
- Monitor cloud service performance
- Detect routing anomalies
For automated monitoring, you can extract just the mdev value using:
ping -c 10 example.com | awk -F'/' 'END{print $NF}' | cut -d' ' -f1
While ping
provides basic deviation metrics, more advanced tools like mtr
or traceroute
can give deeper insights into where latency variations occur in the network path.
For example, to see per-hop statistics:
mtr --report example.com
This will show latency variations at each network hop between you and the destination.