twx-linux/include/uapi/linux
Eric Dumazet fefa569a9d net_sched: sch_fq: account for schedule/timers drifts
It looks like the following patch can make FQ very precise, even in VM
or stressed hosts. It matters at high pacing rates.

We take into account the difference between the time that was programmed
when last packet was sent, and current time (a drift of tens of usecs is
often observed)

Add an EWMA of the unthrottle latency to help diagnostics.

This latency is the difference between current time and oldest packet in
delayed RB-tree. This accounts for the high resolution timer latency,
but can be different under stress, as fq_check_throttled() can be
opportunistically be called from a dequeue() called after an enqueue()
for a different flow.

Tested:
// Start a 10Gbit flow
$ netperf --google-pacing-rate 1250000000 -H lpaa24 -l 10000 -- -K bbr &

Before patch :
$ sar -n DEV 10 5 | grep eth0 | grep Average
Average:         eth0  17106.04 756876.84   1102.75 1119049.02      0.00      0.00      0.52

After patch :
$ sar -n DEV 10 5 | grep eth0 | grep Average
Average:         eth0  17867.00 800245.90   1151.77 1183172.12      0.00      0.00      0.52

A new iproute2 tc can output the 'unthrottle latency' :

$ tc -s qd sh dev eth0 | grep latency
  0 gc, 0 highprio, 32490767 throttled, 2382 ns latency

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-09-23 07:19:06 -04:00
..
android
byteorder include/uapi/linux/byteorder, swab: force inlining of some byteswap operations 2016-03-17 15:09:34 -07:00
caif
can can: bcm: add support for CAN FD frames 2016-06-17 15:39:46 +02:00
cifs
dvb
genwqe
hdlc
hsi
iio iio: electricalconductivity: add IIO_ELECTRICALCONDUCTIVITY type 2016-05-29 20:03:21 +01:00
isdn
mmc
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next 2016-09-06 12:45:26 -07:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
spi
sunrpc
tc_act net/sched: act_vlan: Introduce TCA_VLAN_ACT_MODIFY vlan action 2016-09-22 01:34:20 -04:00
tc_ematch
usb USB: PD: additional feature selectors 2016-04-19 04:33:15 +09:00
wimax
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
apm_bios.h
arcfb.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h include/uapi/linux/atm_zatm.h: include linux/time.h 2016-08-22 16:25:15 -07:00
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h netlabel: Initial support for the CALIPSO netlink protocol. 2016-06-27 15:02:46 -04:00
auto_fs4.h autofs4: fix some white space errors 2016-03-15 16:55:16 -07:00
auto_fs.h autofs4: fix some white space errors 2016-03-15 16:55:16 -07:00
auxvec.h
ax25.h
b1lli.h
batman_adv.h batman-adv: add backbone table netlink support 2016-08-09 07:54:43 +02:00
baycom.h
bcache.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
bpf_common.h
bpf_perf_event.h bpf: introduce BPF_PROG_TYPE_PERF_EVENT program type 2016-09-02 10:46:44 -07:00
bpf.h bpf: direct packet write and access for helpers for clsact progs 2016-09-20 23:32:11 -04:00
bpqether.h
bsg.h
btrfs_tree.h btrfs: uapi/linux/btrfs_tree.h, use __u8 and __u64 2016-04-28 11:06:41 +02:00
btrfs.h Btrfs: use the correct struct for BTRFS_IOC_LOGICAL_INO 2016-07-26 13:52:25 +02:00
can.h
capability.h uapi: move forward declarations of internal structures 2016-08-02 17:31:41 -04:00
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h
cgroupstats.h
chio.h
cm4000_cs.h
cn_proc.h
coda_psdev.h
coda.h
coff.h
connector.h
const.h
coresight-stm.h coresight: stm: adding driver for CoreSight STM component 2016-05-03 14:59:30 -07:00
cramfs_fs.h
cryptouser.h crypto: kpp - Key-agreement Protocol Primitives API (KPP) 2016-06-23 18:29:56 +08:00
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h net/devlink: Add E-Switch mode control 2016-07-02 14:40:40 -04:00
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlm.h
dlmconstants.h
dm-ioctl.h dm: add infrastructure for DAX support 2016-07-20 23:49:49 -04:00
dm-log-userspace.h
dma-buf.h dma-buf: Add ioctls to allow userspace to flush 2016-02-12 16:01:32 +01:00
dn.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h bpf, elf: add official ELF machine define for eBPF 2016-07-20 12:37:39 -07:00
elf-fdpic.h
elf.h powerpc updates for 4.8 #2 2016-08-05 09:00:54 -04:00
elfcore.h
errno.h
errqueue.h
ethtool.h net: ethtool: add support for 1000BaseX and missing 10G link modes 2016-08-29 00:27:34 -04:00
eventpoll.h
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h net: Add l3mdev rule 2016-06-08 11:36:02 -07:00
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
flat.h
fou.h
fs.h libnvdimm for 4.7 2016-05-23 11:18:01 -07:00
fsl_hypervisor.h
fuse.h fuse: serialize dirops by default 2016-06-30 13:10:49 +02:00
futex.h
gameport.h
gen_stats.h sched: align nlattr properly when needed 2016-04-26 12:00:49 -04:00
genetlink.h openvswitch: allow management from inside user namespaces 2016-02-11 09:53:19 -05:00
gfs2_ondisk.h
gigaset_dev.h
gpio.h gpio: userspace ABI for reading GPIO line events 2016-06-15 09:29:17 +02:00
gsmmux.h
gtp.h gtp: #define _UAPI_LINUX_GTP_H_ and not _UAPI_LINUX_GTP_H__ 2016-06-07 16:25:49 -07:00
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h
hysdn_if.h
i2c-dev.h
i2c.h i2c: smbus: add SMBus Host Notify support 2016-06-17 13:24:05 +02:00
i2o-dev.h
i8k.h
icmp.h ipv6: RFC 4884 partial support for SIT/GRE tunnels 2016-06-18 22:11:39 -07:00
icmpv6.h
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h net: bridge: export vlan flags with the stats 2016-08-18 23:18:42 -07:00
if_cablemodem.h
if_eql.h
if_ether.h net/ncsi: NCSI command packet handler 2016-07-19 20:49:16 -07:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h ipvlan: Introduce l3s mode 2016-09-19 01:25:22 -04:00
if_ltalk.h
if_macsec.h macsec: limit ICV length to 16 octets 2016-07-25 10:55:39 -07:00
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h 2016-08-22 16:25:14 -07:00
if_pppox.h include/uapi/linux/if_pppox.h: include linux/in.h and linux/in6.h 2016-08-22 16:25:15 -07:00
if_slip.h
if_team.h
if_tun.h
if_tunnel.h ip_tunnel: add collect_md mode to IPIP tunnel 2016-09-17 10:13:07 -04:00
if_vlan.h
if_x25.h
if.h uapi glibc compat: fix compile errors when glibc net/if.h included before linux/if.h 2016-05-09 21:29:31 -04:00
igmp.h
ila.h ila: add checksum neutral ILA translations 2016-04-26 01:27:07 -04:00
in6.h calipso: Set the calipso socket label to match the secattr. 2016-06-27 15:02:51 -04:00
in_route.h
in.h
inet_diag.h tcp_bbr: add BBR congestion control 2016-09-21 00:23:01 -04:00
inotify.h
input-event-codes.h Input: add SW_PEN_INSERTED define 2016-06-29 09:51:03 -07:00
input.h Input: add BUS_CEC type 2016-06-18 10:32:28 -07:00
ioctl.h
ip6_tunnel.h
ip_vs.h netfilter/ipvs: use nla_put_u64_64bit() 2016-04-25 15:09:11 -04:00
ip.h ipv4: add option to drop gratuitous ARP packets 2016-02-11 04:27:35 -05:00
ipc.h
ipmi_msgdefs.h
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h Revert "ipv6: Revert optional address flusing on ifdown." 2016-04-26 11:47:41 -04:00
ipx.h include/uapi/linux/ipx.h: fix conflicting defitions with glibc netipx/ipx.h 2016-08-22 16:25:15 -07:00
irda.h
irqnr.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
iso_fs.h
ivtv.h
ivtvfb.h
ixjuser.h
jffs2.h
joystick.h
Kbuild bpf: introduce BPF_PROG_TYPE_PERF_EVENT program type 2016-09-02 10:46:44 -07:00
kcm.h kcm: Kernel Connection Multiplexor module 2016-03-09 16:36:14 -05:00
kcmp.h
kcov.h kernel: add kcov code coverage 2016-03-22 15:36:02 -07:00
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h uapi: define DIV_ROUND_UP for userland 2016-03-04 16:10:36 -05:00
kernelcapi.h
kexec.h arm64/kexec: Add core kexec support 2016-06-27 16:31:25 +01:00
keyboard.h
keyctl.h KEYS: Add KEYCTL_DH_COMPUTE command 2016-04-12 19:54:58 +01:00
kfd_ioctl.h
kvm_para.h
kvm.h KVM/ARM Changes for v4.8 - Take 2 2016-08-04 13:59:56 +02:00
l2tp.h l2tp: use nla_put_u64_64bit() 2016-04-25 15:09:10 -04:00
libc-compat.h include/uapi/linux/ipx.h: fix conflicting defitions with glibc netipx/ipx.h 2016-08-22 16:25:15 -07:00
lightnvm.h
limits.h
lirc.h [media] lirc.h: remove several unused ioctls 2016-07-11 10:49:52 -03:00
llc.h
loop.h
lp.h
lwtunnel.h libnl: nla_put_be64(): align on a 64-bit area 2016-04-23 20:13:24 -04:00
magic.h zsmalloc: page migration support 2016-07-26 16:19:19 -07:00
major.h
map_to_7segment.h
matroxfb.h
mdio.h
media-bus-format.h
media.h [media] media: Add video statistics computation functions 2016-06-28 12:06:20 -03:00
mei.h
membarrier.h
memfd.h
mempolicy.h
meye.h
mic_common.h
mic_ioctl.h
mii.h net: Add mask for Control register 10Mbps speed 2016-08-12 16:57:20 -07:00
minix_fs.h
mman.h
mmtimer.h
module.h
mpls_iptunnel.h
mpls.h
mqueue.h
mroute6.h uapi: define DIV_ROUND_UP for userland 2016-03-04 16:10:36 -05:00
mroute.h
msdos_fs.h
msg.h
mtio.h
n_r3964.h
nbd.h
ncp_fs.h
ncp_mount.h
ncp_no.h
ncp.h
ndctl.h nfit: add Microsoft NVDIMM DSM command set to white list 2016-06-20 11:19:34 -07:00
neighbour.h libnl: nla_put_msecs(): align on a 64-bit area 2016-04-23 20:13:24 -04:00
net_dropmon.h
net_namespace.h
net_tstamp.h sock: accept SO_TIMESTAMPING flags in socket cmsg 2016-04-04 15:50:30 -04:00
net.h
netconf.h netconf: add macro to represent all attributes 2016-03-13 21:54:44 -04:00
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netlink_diag.h netlink: Add comment to warn about deprecated netlink rings attribute request 2016-06-16 14:00:50 -07:00
netlink.h netlink: remove mmapped netlink support 2016-02-18 11:42:18 -05:00
netrom.h
nfc.h
nfs2.h
nfs3.h
nfs4_mount.h
nfs4.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs.h
nfsacl.h
nilfs2_api.h nilfs2: move ioctl interface and disk layout to uapi separately 2016-08-02 19:35:21 -04:00
nilfs2_ondisk.h nilfs2: move ioctl interface and disk layout to uapi separately 2016-08-02 19:35:21 -04:00
nl80211.h cfg80211: Add mesh peer AID setting API 2016-07-06 15:04:52 +02:00
nubus.h
nvme_ioctl.h NVMe: Allow user initiated rescan 2016-05-17 17:14:21 -06:00
nvram.h
omap3isp.h
omapfb.h
oom.h
openvswitch.h openvswitch: 802.1ad uapi changes. 2016-09-08 17:10:27 -07:00
packet_diag.h
param.h
parport.h
patchkey.h
pci_regs.h PCI: Add Downstream Port Containment driver 2016-05-03 10:39:24 -05:00
pci.h
perf_event.h perf core: Per event callchain limit 2016-05-30 12:41:44 -03:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h net: cls_bpf: limit hardware offload by software-only flag 2016-09-21 19:50:02 -04:00
pkt_sched.h net_sched: sch_fq: account for schedule/timers drifts 2016-09-23 07:19:06 -04:00
pktcdvd.h
pmu.h
poll.h
posix_types.h
ppdev.h
ppp_defs.h
ppp-comp.h
ppp-ioctl.h
pps.h
pr.h
prctl.h
psci.h
ptp_clock.h ptp: Add PTP_SYS_OFFSET_PRECISE for driver crosstimestamping 2016-03-03 14:23:43 -08:00
ptrace.h
qnx4_fs.h
qnxtypes.h
qrtr.h net: Add Qualcomm IPC router 2016-05-08 23:46:14 -04:00
quota.h fs/quota: use nla_put_u64_64bit() 2016-04-26 12:00:48 -04:00
radeonfb.h
random.h
raw.h
rds.h
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
resource.h
rfkill.h rfkill: Update userspace API documentation 2016-02-24 09:04:25 +01:00
rio_cm_cdev.h rapidio: add RapidIO channelized messaging driver 2016-08-02 19:35:31 -04:00
rio_mport_cdev.h rapidio/mport_cdev: fix uapi type definitions 2016-05-05 17:38:53 -07:00
romfs_fs.h
rose.h
route.h
rtc.h
rtnetlink.h sched: align nlattr properly when needed 2016-04-26 12:00:49 -04:00
scc.h
sched.h sched: new clone flag CLONE_NEWCGROUP for cgroup namespace 2016-02-16 13:04:58 -05:00
scif_ioctl.h
screen_info.h
sctp.h sctp: Export struct sctp_info to userspace 2016-08-08 12:51:58 -07:00
sdla.h
seccomp.h
securebits.h
selinux_netlink.h
sem.h
serial_core.h TTY and Serial driver update for 4.7-rc1 2016-05-20 20:57:27 -07:00
serial_reg.h
serial.h
serio.h [media] input: serio - add new protocol for the Pulse-Eight USB-CEC Adapter 2016-07-12 13:42:10 -03:00
shm.h
signal.h signals/sigaltstack: Change SS_AUTODISARM to (1U << 31) 2016-05-04 08:34:14 +02:00
signalfd.h
smiapp.h
snmp.h tcp: md5: add LINUX_MIB_TCPMD5FAILURE counter 2016-08-25 16:43:11 -07:00
sock_diag.h sock_diag: add SK_MEMINFO_DROPS 2016-04-04 22:11:20 -04:00
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h uapi/linux/stddef.h: Provide __always_inline to userspace headers 2016-03-30 12:50:17 +02:00
stm.h
string.h
suspend_ioctls.h
swab.h byteswap: try to avoid __builtin_constant_p gcc bug 2016-05-05 17:38:53 -07:00
sync_file.h dma-buf/sync_file: de-stage sync_file headers 2016-04-29 17:37:10 -07:00
synclink.h
sysctl.h uapi: move forward declarations of internal structures 2016-08-02 17:31:41 -04:00
sysinfo.h
target_core_user.h target/user: Report capability of handling out-of-order completions to userspace 2016-03-10 21:49:09 -08:00
taskstats.h
tcp_metrics.h libnl: nla_put_msecs(): align on a 64-bit area 2016-04-23 20:13:24 -04:00
tcp.h tcp: export data delivery rate 2016-09-21 00:23:00 -04:00
telephony.h
termios.h
thermal.h
time.h
times.h
timex.h
tiocl.h
tipc_config.h
tipc_netlink.h tipc: add the ability to get UDP options via netlink 2016-08-26 21:38:41 -07:00
tipc.h tipc: introduce constants for tipc address validation 2016-07-26 14:26:42 -07:00
toshiba.h
tty_flags.h tty: core: Undefine ASYNC_* flags superceded by TTY_PORT* flags 2016-04-30 09:26:55 -07:00
tty.h
types.h
udf_fs_i.h
udp.h gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
uhid.h
uinput.h
uio.h
ultrasound.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h usb: devio: Add ioctl to disallow detaching kernel USB drivers. 2016-03-05 12:05:01 -08:00
usbip.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h lib/uuid.c: remove FSF address 2016-05-20 17:58:30 -07:00
uvcvideo.h
v4l2-common.h
v4l2-controls.h [media] v4l: add V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME 2016-02-19 08:10:35 -02:00
v4l2-dv-timings.h [media] v4l2-dv-timings.h: fix polarity for 4k formats 2016-04-25 10:19:56 -03:00
v4l2-mediabus.h
v4l2-subdev.h
veth.h
vfio.h vfio/pci: Intel IGD host and LCP bridge config space access 2016-02-22 16:10:09 -07:00
vhost.h vhost: new device IOTLB API 2016-08-02 16:53:54 +03:00
videodev2.h [media] videodev2.h: Fix V4L2_PIX_FMT_YUV411P description 2016-06-28 11:54:52 -03:00
virtio_9p.h
virtio_balloon.h virtio_balloon: export 'available' memory to balloon statistics 2016-03-17 15:09:34 -07:00
virtio_blk.h virtio_blk: VIRTIO_BLK_F_WCE->VIRTIO_BLK_F_FLUSH 2016-03-02 17:01:59 +02:00
virtio_config.h virtio: new feature to detect IOMMU device quirk 2016-08-01 21:44:52 +03:00
virtio_console.h
virtio_gpu.h
virtio_ids.h VSOCK: Introduce virtio_vsock_common.ko 2016-08-02 02:57:29 +03:00
virtio_input.h
virtio_net.h virtio_net: add _UAPI prefix to virtio_net header guards 2016-06-10 23:03:55 -07:00
virtio_pci.h
virtio_ring.h
virtio_rng.h
virtio_scsi.h
virtio_types.h
virtio_vsock.h virtio-vsock: fix include guard typo 2016-08-09 13:42:38 +03:00
vm_sockets.h
vt.h tty: vt, remove reduntant check 2016-04-30 09:26:55 -07:00
vtpm_proxy.h tpm: Proxy driver for supporting multiple emulated TPMs 2016-06-25 17:26:35 +03:00
wait.h
wanrouter.h
watchdog.h
wil6210_uapi.h
wimax.h
wireless.h wext: reformat struct/union declarations 2016-06-09 10:14:39 +02:00
x25.h
xattr.h
xfrm.h xfrm: align nlattr properly when needed 2016-04-23 20:13:25 -04:00
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h