Comment 42 for bug 1670041

Revision history for this message
Kir Kolyshkin (kolyshkin) wrote :

Eric, thank you for looking at it! I have measured all four variants that you have suggested, as well as the default ones, using linux-4.12.1 as a base.

The summary of measurements is below. Note that
 - min/max/avg is in Mbits/sec;
 - n is number of measurements, each of 1 second.

+ limit = max(2 * skb->truesize, sk->sk_pacing_rate >> 10);
min 0.00 max 39.60 avg 19.09 num 80

+ limit = max(2 * skb->truesize, sk->sk_pacing_rate >> 7);
min 30.00 max 219.00 avg 174.15 num 80

+ limit = max(2 * skb->truesize, sk->sk_pacing_rate >> 8);
min 0.00 max 220.00 avg 114.34 num 80

+ limit = max(4 * skb->truesize, sk->sk_pacing_rate >> 7);
min 8.47 max 95.80 avg 68.80 num 80

+ limit = max(4 * skb->truesize, sk->sk_pacing_rate >> 8);
min 20.20 max 169.00 avg 122.09 num 60

Despite the great discrepancy in results, it can be seen that
 - changing the values helps a lot
 - numbers 2 and 7 works the best for me.

The script to produce the output above is here:

kir@kd:~/wifiperf$ cat cal
awk '
 BEGIN {min=999999; max=n=sum=0;}
 NR==1 { print }
 $NF=="KBytes" {
  val=$7;
  if (val > max) max = val;
  if (val < min) min = val;
  sum += val;
  n = n+1;
 }
 END {
  printf("min %5.2f max %5.2f avg %5.2f num %d\n", min, max, sum/n, n)
 }'