[roll] Roll fuchsia [starnix] Read into uninitialized buffers

By default, rust will always make sure objects are properly initialized.
For byte buffers (arrays/`Vec`s), that means making sure that the buffer
is zero initialized. Often, this zero-initializing is unnecessary since
the buffer will be immediately written to, overwriting zero values.

Note that x64 has more observable performance wins than arm64 because
x64 takes advantage of unified address spaces. ARM64 will leverage the
same once Zircon supports unified address spaces on ARM64. Until then
however, we spend (relatively) lots of time performing the VMO read
syscall which dwarfs the zero initializing cost.

Performance wins...

...on x64:
```
Test case                                                                                       Improve/regress?  Factor change  Mean before            Mean after
----------------------------------------------------------------------------------------------  ----------------  -------------  ---------------------  ---------------------
fuchsia.microbenchmarks.starnix: Filesystem_Open_Bpf                                            improved          0.961-0.990    5992 +/- 50 ns         5844 +/- 38 ns
fuchsia.microbenchmarks.starnix: Filesystem_Open_DevTmpfs                                       improved          0.956-0.998    5171 +/- 44 ns         5051 +/- 66 ns
fuchsia.microbenchmarks.starnix: Filesystem_Open_Sysfs                                          improved          0.953-0.996    5215 +/- 70 ns         5081 +/- 46 ns
fuchsia.microbenchmarks.starnix: Filesystem_Open_Tmpfs                                          improved          0.954-0.994    5190 +/- 22 ns         5052 +/- 82 ns
fuchsia.microbenchmarks.starnix: Filesystem_Stat_Ext4                                           improved          0.937-0.979    2444 +/- 34 ns         2340 +/- 19 ns
fuchsia.network.socket.loopback.starnix.fake_netstack: MultiWriteRead/UDP/IPv4/60kB/10Messages  improved          0.944-0.996    1108575 +/- 17193 ns   1074954 +/- 12097 ns
fuchsia.network.socket.loopback.starnix.fake_netstack: MultiWriteRead/UDP/IPv4/60kB/50Messages  improved          0.943-1.000    5948720 +/- 65013 ns   5776879 +/- 106042 ns
fuchsia.network.socket.loopback.starnix.fake_netstack: MultiWriteRead/UDP/IPv6/60kB/10Messages  improved          0.944-0.998    1100971 +/- 11828 ns   1069182 +/- 18188 ns
fuchsia.network.socket.loopback.starnix.fake_netstack: WriteRead/TCP/IPv4/100kB                 improved          0.867-0.986    79799 +/- 2015 ns      73795 +/- 2893 ns
fuchsia.network.socket.loopback.starnix.fake_netstack: WriteRead/TCP/IPv6/100kB                 improved          0.865-0.990    78324 +/- 2464 ns      72468 +/- 2596 ns
fuchsia.network.socket.loopback.starnix.fake_netstack: WriteRead/UDP/IPv4/60kB                  improved          0.934-0.991    77362 +/- 1592 ns      74414 +/- 698 ns
fuchsia.network.socket.loopback.starnix.netstack3: MultiWriteRead/UDP/IPv6/60kB/50Messages      improved          0.945-0.999    6574377 +/- 61807 ns   6391809 +/- 117468 ns
fuchsia.network.socket.loopback.starnix.netstack3: WriteRead/TCP/IPv4/100kB                     improved          0.919-0.970    137008 +/- 1632 ns     129384 +/- 1978 ns
fuchsia.network.socket.loopback.starnix.netstack3: WriteRead/TCP/IPv6/100kB                     improved          0.919-0.986    136746 +/- 2428 ns     130110 +/- 2267 ns
fuchsia.network.socket.loopback.starnix: MultiWriteRead/UDP/IPv4/60kB/50Messages                improved          0.884-0.953    2554290 +/- 60204 ns   2343678 +/- 32839 ns
fuchsia.network.socket.loopback.starnix: MultiWriteRead/UDP/IPv6/60kB/50Messages                improved          0.833-0.979    2590619 +/- 138927 ns  2336662 +/- 62735 ns
fuchsia.starnix.gvisor_benchmarks: GetdentsNewFd/512                                            improved          0.982-0.995    323.09 +/- 0.56 ns     319.4 +/- 1.5 ns
fuchsia.starnix.gvisor_benchmarks: Pipe/4096                                                    improved          0.827-0.920    4666 +/- 105 ns        4070 +/- 127 ns
fuchsia.starnix.gvisor_benchmarks: Stat/1                                                       improved          0.926-0.996    4447 +/- 71 ns         4270 +/- 88 ns
fuchsia.starnix.gvisor_benchmarks: Stat/8                                                       improved          0.941-0.997    6504 +/- 94 ns         6299 +/- 89 ns
fuchsia.storage: OpenFile/starnix_data                                                          improved          0.947-0.997    84014 +/- 977 ns       81626 +/- 1165 ns
```

...on arm64:
```
Test case                                     Improve/regress?  Factor change  Mean before       Mean after
--------------------------------------------  ----------------  -------------  ----------------  ----------------
fuchsia.starnix.gvisor_benchmarks: Pipe/4096  improved          0.499-0.772    12950 +/- 290 ns  8187 +/- 1580 ns
```

Original-Fixed: b/303711008
Cq-Include-Trybots: luci.fuchsia.try:core.arm64-cxx20,core.x64-cxx20,core.x64-debug,core.arm64-debug,terminal.x64-release-perfcompare,terminal.vim3-release-perfcompare
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/946740
Original-Revision: 7e57bc73ed4e5cc4825ac21ead38488fad4e66f4
GitOrigin-RevId: deb4938f5c8643522c6a690841a95bfec8b073c7
Change-Id: I34e669e8088cee9fb5d061b945fd51a65d613097
1 file changed
tree: 1ae5a4acaf5f4687c579206f9263a32424583583
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. 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 via the IRC channel #fuchsia on Freenode.

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.