| commit | d20eb72e3c5bcefd1f50336d8b5a4d7fa87bcccc | [log] [tgz] |
|---|---|---|
| author | David Hastings <dahastin@fuchsia.infra.roller.google.com> | Tue Sep 20 01:33:47 2022 +0000 |
| committer | Copybara-Service <copybara-worker@google.com> | Mon Sep 19 18:35:16 2022 -0700 |
| tree | e854b8de7b7dccbb730c4d6860553ae97998c95b | |
| parent | 70e0e2bb190b7fd8ecd5708045dbfe8c761c46ee [diff] |
[roll] Roll fuchsia [virtualization][vsock] Prevent TX from starving RX control The state lock is write preferring. It seems like a possible ordering is: 1) Write guard is dropped 2) Readers wake up, await when trying to acquire read lock 3) TX task wakes up and pulls a chain off of the queue 4) TX task acquires a write lock pre-empting the readers That's generally not a problem in most places (although I might want to revisit this with a fairer lock), but when handling an RX chain blocking on a read also blocks control packets. The integration test is maxing out TX throughput in a tight loop, and it seems to have happened enough times that we were unable to send our shutdown packet before the test finished. Metrics from Debian on QEMU: (Before) Micro Benchmark Results ------------------------ * Data corruption check: PASSED * Round trip latency of 4096 bytes: Min: 183506ns (0.184ms) 25th percentile: 524556ns (0.525ms) 50th percentile: 857401ns (0.857ms) 75th percentile: 1129873ns (1.130ms) 99th percentile: 1941657ns (1.942ms) Max: 9924678ns (9.925ms) * TX (guest -> host, unreliable) throughput of 128 MiB: Min: 100.94MiB/s 25th percentile: 108.81MiB/s 50th percentile: 111.96MiB/s 75th percentile: 116.58MiB/s 99thth percentile: 125.79MiB/s Max: 126.63MiB/s * RX (host -> guest, unreliable) throughput of 128 MiB: Min: 103.03MiB/s 25th percentile: 111.21MiB/s 50th percentile: 115.81MiB/s 75th percentile: 120.78MiB/s 99thth percentile: 130.60MiB/s Max: 131.09MiB/s * Single stream unidirectional round trip throughput of 128 MiB: Min: 163.80MiB/s 25th percentile: 185.83MiB/s 50th percentile: 190.41MiB/s 75th percentile: 194.30MiB/s 99thth percentile: 209.05MiB/s Max: 209.54MiB/s * Multistream (5 connections) unidirectional round trip throughput of 128 MiB: Min: 32.65MiB/s 25th percentile: 34.03MiB/s 50th percentile: 34.59MiB/s 75th percentile: 35.19MiB/s 99thth percentile: 36.85MiB/s Max: 36.93MiB/s (After) Micro Benchmark Results ------------------------ * Data corruption check: PASSED * Round trip latency of 4096 bytes: Min: 185399ns (0.185ms) 25th percentile: 795221ns (0.795ms) 50th percentile: 1028699ns (1.029ms) 75th percentile: 1287934ns (1.288ms) 99th percentile: 2122094ns (2.122ms) Max: 7476711ns (7.477ms) * TX (guest -> host, unreliable) throughput of 128 MiB: Min: 101.26MiB/s 25th percentile: 110.47MiB/s 50th percentile: 113.87MiB/s 75th percentile: 118.03MiB/s 99thth percentile: 124.97MiB/s Max: 126.28MiB/s * RX (host -> guest, unreliable) throughput of 128 MiB: Min: 106.17MiB/s 25th percentile: 114.16MiB/s 50th percentile: 118.09MiB/s 75th percentile: 122.71MiB/s 99thth percentile: 130.44MiB/s Max: 132.59MiB/s * Single stream unidirectional round trip throughput of 128 MiB: Min: 168.83MiB/s 25th percentile: 185.59MiB/s 50th percentile: 193.18MiB/s 75th percentile: 200.73MiB/s 99thth percentile: 218.25MiB/s Max: 222.25MiB/s * Multistream (5 connections) unidirectional round trip throughput of 128 MiB: Min: 33.82MiB/s 25th percentile: 34.65MiB/s 50th percentile: 35.08MiB/s 75th percentile: 35.47MiB/s 99thth percentile: 35.97MiB/s Max: 36.49MiB/s Original-Bug: 109780 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/726887 Original-Revision: 9e74f088457e5282af8eeed699efd3fabfaf8683 GitOrigin-RevId: bd845f7464ea0a704c62957af57f43aee9bd5bc0 Change-Id: I2fdd8c93f30340acfa06dc5d87cf70644487e9e1
This repository contains Fuchsia's Global Integration manifest files.
All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.
Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party.