aws: network performance regression due to initial TCP receive buffer size change
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-aws (Ubuntu) |
New
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
High
|
Unassigned | ||
Focal |
Fix Released
|
High
|
Unassigned | ||
Groovy |
Fix Released
|
High
|
Unassigned |
Bug Description
[Impact]
AWS has seen some customers reporting networking performance degradation after they upgraded their Ubuntu instanceses. This regression is highly impacting customers who are using MTU=9000 (which is the default in EC2).
[Test case]
Bug reproduced internally in AWS (no test case provided), but apparently it is very easy to reproduce simply by measuring networking performance.
[Fix]
AWS worked internally and found that the regression has been introduced by:
a337531b942b ("tcp: up initial rmem to 128KB and SYN rwin to around 64KB")
To solve the problem we need to apply the following upstream commit that explicitly fixes the problem introduced by the commit above:
33ae7b5bb841 ("tcp: select sane initial rcvq_space.space for big MSS")
[Regression potential]
Upstream fix that is only affecting the initial TCP buffer space and allows the TCP window size to be dynamically increased, basically restoring the previous (correct) behavior, so regression potential is minimal.
CVE References
Changed in linux-aws (Ubuntu Bionic): | |
importance: | Undecided → High |
Changed in linux-aws (Ubuntu Focal): | |
importance: | Undecided → High |
Changed in linux-aws (Ubuntu Groovy): | |
importance: | Undecided → High |
Changed in linux-aws (Ubuntu Bionic): | |
status: | New → Fix Committed |
Changed in linux-aws (Ubuntu Focal): | |
status: | New → Fix Committed |
Changed in linux-aws (Ubuntu Groovy): | |
status: | New → Fix Committed |
Changed in linux-aws (Ubuntu Groovy): | |
status: | Fix Committed → Fix Released |
This bug was fixed in the package linux-aws - 4.15.0-1093.99
---------------
linux-aws (4.15.0-1093.99) bionic; urgency=medium
* bionic/linux-aws: 4.15.0-1093.99 -proposed tracker (LP: #1911275)
* aws: network performance regression due to initial TCP receive buffer size
change (LP: #1910200)
- tcp: select sane initial rcvq_space.space for big MSS
* arm64: prevent losing page dirty state (LP: #1908503)
- arm64: pgtable: Ensure dirty bit is preserved across pte_wrprotect()
* Disable Atari partition support for cloud kernels (LP: #1908264)
- [Config] Disable Atari partition support
* aws: xen-netfront: prevent potential error on hibernate (LP: #1906850)
- SAUCE: xen-netfront: prevent unnecessary close on hibernate
[ Ubuntu: 4.15.0-133.137 ]
* bionic/linux: 4.15.0-133.137 -proposed tracker (LP: #1911295) monitors_ config( ) kvm_unit_ tests interrupted on X-oracle-4.15 / PPC_RTAS_ FILTER HIERARCHY ext_bus_ get_link( ) echo_skb( ): fix real payload length return value for RTR echo_skb( ): fix echo skb generation: always use skb_clone() get_ts_ time(): fix timestamp wrapping can_rx( ): fix echo management when loopback is
* [drm:qxl_enc_commit [qxl]] *ERROR* head number too large or missing monitors
config: (LP: #1908219)
- qxl: remove qxl_io_log()
- qxl: move qxl_send_
- qxl: hook monitors_config updates into crtc, not encoder.
* Touchpad not detected on ByteSpeed C15B laptop (LP: #1906128)
- Input: i8042 - add ByteSpeed touchpad to noloop table
* vmx_nm_test in ubuntu_
B-oracle-4.15 / X-KVM / B-KVM (LP: #1872401)
- KVM: nVMX: Always reflect #NM VM-exits to L1
* stack trace in kernel (LP: #1903596)
- net: napi: remove useless stack trace
* CVE-2020-27777
- [Config]: Set CONFIG_
* Bionic update: upstream stable patchset 2020-12-04 (LP: #1906875)
- regulator: defer probe when trying to get voltage from unresolved supply
- ring-buffer: Fix recursion protection transitions between interrupt context
- time: Prevent undefined behaviour in timespec64_to_ns()
- nbd: don't update block size after device is started
- btrfs: sysfs: init devices outside of the chunk_mutex
- btrfs: reschedule when cloning lots of extents
- genirq: Let GENERIC_IRQ_IPI select IRQ_DOMAIN_
- hv_balloon: disable warning when floor reached
- net: xfrm: fix a race condition during allocing spi
- perf tools: Add missing swap for ino_generation
- ALSA: hda: prevent undefined shift in snd_hdac_
- can: rx-offload: don't call kfree_skb() from IRQ context
- can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ
context
- can: dev: __can_get_
frames
- can: can_create_
- can: peak_usb: add range checking in decode operations
- can: peak_usb: peak_usb_
- can: peak_canfd: pucan_handle_
on
- xfs: flush new eof page on truncate to avoid post-eof corruption
- Btrfs: fix missing error return if writeback for extent buffer never started
- ath9k_htc: Use appropriate rs_datalen type
- usb: gadget: goku_udc: fix potential crashes in probe
- gfs2: Free rd_bits later in gfs2_clear_rgrpd to fix use-after-free
...