[roll] Roll fuchsia [vfs] Reduce the size of idle connections

Future objects in rust can easily grow to be several KBs. If we have a
thousand open connections each being handled by a multi KB future then
we're using MBs of memory. Most of this memory is wasted because the
connections sit idle most of the time and it's unlikely that more than a
dozen connections will ever be handling a request at the same time.

This change introduces a RequestListener that is optimized to reduce the
memory usage of idle connections. The RequestListener dynamically heap
allocates the futures for handling requests so the memory of these
futures isn't consumed while the connections are idle.

RequestListener manually implements Future to work around
https://github.com/rust-lang/rust/issues/62958 and
https://github.com/rust-lang/rust/issues/108906. This further reduces
the size of an idle RequestListener to typically less than 80 bytes.

RequestListener only reduces the idle memory overhead of the futures
downstream from itself. There's still work to be done to reduce the size
of futures upstream from the RequestListeners.

Original-Bug: 398886282
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1198690
Original-Revision: b911230aa356d2ead30455ed1828e9ae110b5772
GitOrigin-RevId: 03c5334b28b787f6f99cbdb5e01fb26f7300e66f
Change-Id: I9d6d5cc1e66b5d2af3b937f28811599f2798594a
1 file changed
tree: 872bb24a93a9bba57310fbd16ba8da1e161b99ce
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
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.