[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
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.