[roll] Roll fuchsia [netdevice/rust] Implement dynamic TX VMO management

In the rust client, the Tx VMOs are being dynamically registered and
unregistered to the driver. When neither the driver nor the netstack
is using the VMO, the client will decommit the VMO and return the
backing pages to the operating system. This improves the memory usage
for systems with moderate network traffic.

The client keeps an estimate of peak buffer usage and will only
attempt to reclaim a VMO when the estimated usage is lower than
half of current capacity. The client uses a timer to sample the
buffer usage, the larger the interval, the slower the reclamation
but also less thrash.

Some memory usage improvement from perfcompare, we have regression
on the handle counts because we have an extra `zx::Vmar` handle.

https://ci.chromium.org/ui/p/fuchsia/builders/try/terminal.x64-release-perfcompare/b8677489525048779985/overview
fuchsia.netstack.resource_usage.netstack3: Interfaces/Peak/Handles/Total               regressed         1.053-1.053    189 +/- 0 count_smallerIsBetter     199 +/- 0 count_smallerIsBetter
fuchsia.netstack.resource_usage.netstack3: PacedTraffic/Increase/Handles/Total         regressed         1.083-1.083    12 +/- 0 count_smallerIsBetter      13 +/- 0 count_smallerIsBetter
fuchsia.netstack.resource_usage.netstack3: PacedTraffic/Increase/Memory/Shared         improved          0.296-0.296    290816 +/- 0 bytes_smallerIsBetter  86016 +/- 0 bytes_smallerIsBetter
fuchsia.netstack.resource_usage.netstack3: PacedTraffic/InitialIncrease/Handles/Total  regressed         1.083-1.083    12 +/- 0 count_smallerIsBetter      13 +/- 0 count_smallerIsBetter
fuchsia.netstack.resource_usage.netstack3: PacedTraffic/InitialIncrease/Memory/Shared  improved          0.972-0.972    290816 +/- 0 bytes_smallerIsBetter  282624 +/- 0 bytes_smallerIsBetter

https://logs.chromium.org/logs/fuchsia/buildbucket/cr-buildbucket/8677463133597809553/+/u/compare_perf_test_results_without_and_with_CL/stdout:
fuchsia.netstack.resource_usage.netstack3: Interfaces/Peak/Handles/Total               regressed         1.053-1.053    189 +/- 0 count_smallerIsBetter        199 +/- 0 count_smallerIsBetter
fuchsia.netstack.resource_usage.netstack3: PacedTraffic/Increase/Handles/Total         regressed         1.083-1.083    12 +/- 0 count_smallerIsBetter         13 +/- 0 count_smallerIsBetter
fuchsia.netstack.resource_usage.netstack3: PacedTraffic/Increase/Memory/Shared         improved          0.290-0.305    289178 +/- 7543 bytes_smallerIsBetter  86016 +/- 0 bytes_smallerIsBetter
fuchsia.netstack.resource_usage.netstack3: PacedTraffic/InitialIncrease/Handles/Total  regressed         1.083-1.083    12 +/- 0 count_smallerIsBetter         13 +/- 0 count_smallerIsBetter

      netstack-socket-integration-test

Original-Original-Bug: 438527741
Test: netdev-rust-client-tests
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1681285
Original-Original-Revision: 4300bea07563f5cd0786a4077c0fc473c8e41037
GitOrigin-RevId: 186bf3a0f6fc743612a5e44757ad9f99a2dd0045
Change-Id: I101bf3aa2c5f845b5a23e811d0c184e66e7bd0d7
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1697260
Cr-Commit-Position: refs/heads/main@{#196361}
1 file changed
tree: b632cc72b2cc2938381f0b6a3788d3432b8e269f
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

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 in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.