fleetbench
Author: Ludovic HENRY ludovic.henry@qti.qualcomm.com
Date: 2026-08-14
Scope: RISC-V (riscv64/linux) support status for fleetbench
Audience: Technical leadership, resource allocation strategy
Verification policy: Every claim is cross-referenced to a primary upstream source. Items that could not be verified against a second source are marked [NEEDS VERIFICATION].
1. Project Overview
Fleetbench is a C++ benchmark suite that reproduces workloads representative of Google’s warehouse-scale production fleet. It was published alongside an ISPASS 2024 paper (“A Profiling-Based Benchmark Suite for Warehouse-Scale Computers,” DOI: 10.1109/ISPASS61541.2024.00046). The workload categories are: protocol buffer synthesis, Swiss map (hash table), libc memory operations (memcpy/memset), TCMalloc allocation, compression (Snappy/ZSTD/Brotli/Zlib/chromium-zlib), hashing (CRC32/abseil hash), STL Cord, gRPC RPC, and SIMD (ScaNN LUT16 approximate nearest-neighbor lookup).
Governance: Informal. All substantial contributors are Google-affiliated (Yuying Li, Andreas Abel, Richard O’Grady, Aysylu Greenberg, Chris Kennelly, Abraham Gonzalez, Vitaly Goldshteyn). Commit messages carry PiperOrigin-RevId: tags confirming that development lives in Google’s internal Piper monorepo; GitHub is a mirror. The README explicitly states: “not an officially supported Google product.” There is no steering committee, no foundation membership, no MAINTAINERS or CODEOWNERS file.
License: Apache 2.0.
Activity level: Very low by external metrics - 32 total issues and PRs across the entire project history, 147 stars, 25 forks as of August 2026. This is a companion benchmark to a conference paper, not an actively developed community project.
Corporate sponsor: Google LLC. Google is a RISE Premier Member, but fleetbench itself has no direct RISE project affiliation.
Community culture on new ports: No public position exists. The FAQ states “The supported platforms are the same as TCMalloc’s,” and TCMalloc officially supports x86-64 and AArch64 only, with PPC as best-effort and RISC-V absent. A RISC-V port would require either upstream interest from Google engineers or acceptance of external contributions; neither has materialized. The project’s production-fleet focus (Google runs x86-64 and ARM servers) makes upstream prioritization unlikely absent RISC-V hardware adoption in Google’s own datacenters.
2. Port History and Upstreaming Timeline
| Date | Event | Source |
|---|---|---|
| - | No RISC-V commits, issues, or PRs have ever appeared in the repository | Full scan of all 32 issues/PRs; code search for “riscv”, “risc-v”, “__riscv” |
| - | No RISC-V build config defined in .bazelrc | Direct read of .bazelrc |
| - | No RISC-V CI job defined | Direct read of .github/workflows/ci.yaml |
There is no port history. Zero RISC-V-related commits, issues, pull requests, or documentation have ever been recorded in the google/fleetbench repository. The only architecture-specific history is for AArch64 (issues #26, #24) and ARM (issue #22), all now closed.
Key contributors: None have worked on RISC-V for this project. All top contributors (by commit count) are Google-affiliated; none have filed or commented on RISC-V matters in this repository.
3. Upstream Support Tier
Fleetbench has no formal tier policy document. Support is defined implicitly by the CI matrix and the TCMalloc dependency’s platforms specification.
| Dimension | amd64 (x86-64) | arm64 (AArch64) | riscv64 |
|---|---|---|---|
| Listed in supported platforms | Yes (Haswell+, Westmere) | Yes (Neoverse-N1) | No |
| Build config in .bazelrc | –config=haswell, –config=westmere | –config=arm | None |
| CI runner | ubuntu-latest | arm-ubuntu-arm-22.04-16core | None |
| Release-blocking | Yes (CI required to pass) | Yes (CI required to pass) | N/A |
| Official prebuilt binaries | No (source-only releases) | No (source-only releases) | No |
Releases (v2.1, v2.0.8, v2.0.7, v2.0.6, v2.0.5) contain only auto-generated GitHub source archives (zip/tar.gz). No prebuilt binaries are published for any architecture.
4. Technical Architecture and RISC-V-Specific Subsystems
Fleetbench has no JIT, no garbage collector, and no cryptographic implementation. The architecture-specific surface is narrow but present.
4.1 SIMD dispatch (ScaNN LUT16)
The fleetbench/simd/ benchmark wraps Google ScaNN’s LUT16Interface for approximate nearest-neighbor lookup. ScaNN’s internal dispatch covers AVX2 and AVX-512 on x86 and NEON/SVE on ARM. On any other architecture, the benchmark falls back to a scalar portable path. No RVV (RISC-V Vector) path exists in ScaNN or in fleetbench’s SIMD wrapper.
The simd_benchmark.cc file contains one #ifdef __x86_64__ guard for _mm_clflush (SSE cache-flush intrinsic). Non-x86 paths substitute a portable std::vector<char> dummy-fill. There is no #ifdef __riscv guard or RVV path anywhere in the repository.
The SIMD benchmark is clang-only (if_clang([...]) in BUILD): without --config=clang, the target produces an empty binary.
4.2 Cache flush
Only the x86-64 _mm_clflush SSE intrinsic is used. riscv64 uses the scalar fallback.
4.3 Performance counter access (libpfm4)
The --define=pfm=1 flag (enabled by default in .bazelrc) links libpfm4 for hardware PMU event access. On riscv64, PMU availability depends on hardware support for the RISC-V SBI PMU extension. Platforms lacking this extension will have libpfm silently non-functional at runtime [NEEDS VERIFICATION - no riscv64 runtime test data available].
4.4 Core benchmarks (proto, tcmalloc, libc, compression, hashing, swissmap, rpc)
All written in portable C++17 with no ISA-specific code paths in fleetbench itself. These would compile on riscv64 subject to dependency constraints (see Section 9).
Component summary table:
| Component | amd64 | arm64 | riscv64 |
|---|---|---|---|
| ScaNN LUT16 SIMD dispatch | AVX2/AVX-512 | NEON/SVE (via highway) | Missing (scalar fallback only) |
| Cache flush intrinsic | _mm_clflush (SSE) | scalar (vector fill) | Missing (scalar fallback) |
| Build config in .bazelrc | Full | Full | Missing |
| PMU event access (libpfm4) | Functional | Functional | Hardware-dependent, unverified |
| Proto, compression, hashing, swissmap, RPC, libc benchmarks | Scalar C++ | Scalar C++ | Scalar C++ (no arch-specific code) |
No assembly (.S) files exist anywhere in the repository. All ISA-specific code uses compiler intrinsics or C++ with #ifdef guards.
5. Build System, Cross-Compilation, and Toolchain
Build system: Bazel exclusively. No CMakeLists.txt, no Autoconf, no Meson. No Dockerfiles anywhere in the repository.
Bazel version: 8.0.0 minimum (Bazelisk recommended).
Compiler: LLVM 17.0.1 recommended. GCC is supported for most targets; the SIMD benchmark requires clang.
C++ standard: C++17 required (--cxxopt='-std=c++17').
Standard build commands (from README and .bazelrc):
# x86-64 Haswell
bazel build --config=clang --config=opt --config=haswell //fleetbench/proto:proto_benchmark
# AArch64
bazel build --config=clang --config=opt --config=arm //fleetbench/proto:proto_benchmark
# Run with rseq disabled (required for TCMalloc)
GLIBC_TUNABLES=glibc.pthread.rseq=0 bazel-bin/fleetbench/proto/proto_benchmark
Architecture configs in .bazelrc:
--config=haswell:-march=haswell -m64 -maes -mprefer-vector-width=128--config=westmere:-march=westmere -m64 -maes -mcx16 -mpclmul -mprefer-vector-width=128 -msse4.2--config=arm:-march=armv8-a -mcpu=neoverse-n1 -mtune=neoverse-v2- No
--config=riscv64exists.
Default: build --copt='-march=native' (overridable via --copt).
Hypothetical riscv64 native build (no official support):
# Portable benchmarks only, override TCMalloc with system malloc
bazel build --config=opt \
--copt='-march=rv64gc' \
--custom_malloc="@bazel_tools//tools/cpp:malloc" \
//fleetbench/proto:proto_benchmark
# SIMD benchmark will produce an empty binary unless clang supports target RVV intrinsics
# ScaNN LUT16 has no RVV path; SIMD results would be scalar-only
Cross-compilation: No cross-compilation toolchain files exist. No QEMU usage anywhere in the repository. No Docker images provided.
Known build blockers for riscv64:
- No
--config=riscv64in .bazelrc; must supply-marchmanually. - TCMalloc (the default allocator linked by the tcmalloc benchmark) is officially unsupported on riscv64 and has an explicit unsupported marker in
segv_handler.cc. Overriding with system malloc (--custom_malloc) is required to avoid build or runtime failure in TCMalloc benchmarks. - protobuf: no prebuilt
protocbinary for riscv64; must build from source with cross-compilation toolchain.
6. Feature Coverage and Gap Analysis vs arm64 and amd64
Functional gaps:
| Feature | amd64 | arm64 | riscv64 |
|---|---|---|---|
| SIMD/vector acceleration (ScaNN LUT16) | AVX2, AVX-512 dispatch | NEON/SVE via highway | Not implemented (scalar fallback) |
| TCMalloc allocation benchmark (full fidelity) | Full per-CPU RSEQ slab | Full per-CPU RSEQ slab | Per-thread cache only (RSEQ missing) |
| Cache flush benchmark | _mm_clflush hardware flush | Scalar dummy write | Scalar dummy write |
| PMU event counters (libpfm4) | Functional | Functional | Hardware-dependent |
| Build config support | –config=haswell, –config=westmere | –config=arm | None |
Performance gaps (expected, not measured - no benchmark data exists for riscv64):
- ScaNN LUT16 SIMD benchmark: scalar path vs AVX2/AVX-512 represents a large gap but is unmeasured.
- TCMalloc benchmark: per-thread-only allocator on riscv64 carries an estimated 5-15% throughput regression in high-concurrency scenarios vs the per-CPU RSEQ path on x86 and AArch64. This figure comes from TCMalloc documentation, not from a fleetbench run on riscv64.
Floating-point / NaN semantics: Not applicable. Fleetbench benchmarks do not involve floating-point computation semantics (no numerics workloads, no precision-sensitive paths identified).
Security hardening: The build uses -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST (LLVM libcpp bounds checking). This is portable and applies equally to riscv64 if clang is used.
Data not available: Measured performance comparison between riscv64 and arm64 or amd64 on any fleetbench workload. No published results exist anywhere.
7. CI/CD Infrastructure
CI system: GitHub Actions only. No GitLab CI, no Jenkins, no Cirrus CI.
CI matrix (from .github/workflows/ci.yaml, direct file read):
os: [ubuntu-latest, arm-ubuntu-arm-22.04-16core]
| Dimension | amd64 | arm64 | riscv64 |
|---|---|---|---|
| CI runner | ubuntu-latest (GitHub-hosted) | arm-ubuntu-arm-22.04-16core (GitHub-hosted) | None |
| Trigger | push, pull_request to main | push, pull_request to main | N/A |
| Build action | bazel build + bazel test | bazel build + bazel test | N/A |
| QEMU emulation | No | No | No |
| Compiler variants tested | clang-latest, gcc-latest | clang-latest | N/A |
The string “riscv” does not appear anywhere in ci.yaml or update.yml. There is no QEMU step, no cross-compilation step, and no riscv64 runner anywhere in the repository.
RISE CI runners: Not used by fleetbench.
CI scripts in ci/ directory: linux_clang-latest_libcxx_bazel.sh, linux_gcc-latest_libstdcxx_bazel.sh, linux_arm_clang-latest_libcxx_bazel.sh. No riscv64 script exists.
8. Distribution and Release Status
Fleetbench publishes source-only releases. No binary artifacts are produced for any architecture.
| Distribution channel | riscv64 status |
|---|---|
| GitHub Releases (v2.1, v2.0.8, …) | Source archives only (zip/tar.gz); zero binary assets for any architecture |
| PyPI | HTTP 404 - package does not exist |
| Debian | HTTP 404 - not in Debian package tracker, any suite |
| Ubuntu 24.04 Noble | Not packaged |
| Arch Linux RISC-V (archriscv.felixc.at) | Not found |
| OCI / container image | None found |
To obtain a working binary on riscv64: Build from source using Bazel 8.0.0 on native riscv64 hardware or via cross-compilation. No official guidance or toolchain configuration is provided. The user must: (1) supply -march=rv64gc manually via --copt, (2) override TCMalloc with system malloc for the TCMalloc benchmarks, (3) build protobuf protoc from source, and (4) accept that the SIMD benchmark will produce scalar-only results.
9. Dependencies
Summary table
| Dependency | Role | riscv64 Build | riscv64 Test | riscv64 Release | Blocking Issues |
|---|---|---|---|---|---|
| tcmalloc 0.0.0-20250927 | Memory allocator; all allocation benchmarks | Compiles (generic fallback) | Not run | None | RSEQ/per-CPU slab absent; segv_handler.cc explicitly unsupported |
| highway 1.2.0 | SIMD abstraction for ScaNN LUT16 | Builds (RVV 1.0 intrinsics present) | No riscv64 CI | No binary | Issue #2854 (mold linker); PR #3148 (add riscv64 CI) blocked on CLA |
| abseil-cpp 20260107.1 | Strings, hash, containers, sync | Builds | Two SEGFAULT failures on Debian riscv64 (issue #2002, open) | None | Issue #2002 (GCC 15.2 SEGFAULT); issue #1702 (-latomic undefined refs in shared-lib builds) |
| protobuf 33.0 | Proto serialization; RPC benchmarks | Builds | No riscv64 CI | None | No prebuilt protoc; maintainer stance: unsupported, off-roadmap (2024, 2025) |
| grpc 1.80.0 | RPC framework; fleetbench/rpc/ benchmarks | Builds (portable C fallback) | No riscv64 CI | None | Issue #41591 (riscv64 Python wheel, no activity); issue #36112 (Cython build, openSUSE, effectively unresolved upstream) |
| brotli 1.2.0 | Compression benchmark | Builds | Scalar path tested by distros | Available in distros | PR #1410 (RVV FindMatchLengthWithLimit) - CLA unsigned, no review since Dec 2025 |
| snappy 1.2.2 | Compression benchmark | Builds; RVV optimizations merged 2025 | QEMU-based riscv64 CI running upstream | Available in distros | None blocking |
| zstd 1.4.5 (pinned) | Compression benchmark | Builds (pinned version predates riscv64 CI) | No riscv64 CI for this version | Available in distros (newer versions) | Pinned to 2020 release; all upstream riscv64 improvements unreachable |
| google/benchmark 1.9.5 | Benchmark harness | Builds; RDTIME fix (PR #1727) | No riscv64 CI upstream | Available in distros | No blocking issues |
| re2 2025-11-05 | Regex engine | Builds (pure C++) | No riscv64-specific issues found | Available in distros | None identified |
| ScaNN (pinned commit 084accd) | ANN search / SIMD LUT | Unclear; falls through to highway scalar/RVV | No riscv64 CI | None | No RVV path; heavy AVX-512-specific code paths |
| LLVM libc (pinned 2023 commit e002a38) | libc replacement benchmarks | Stale 2023 pin; riscv64 coverage uncertain | No riscv64 CI for pinned snapshot | N/A | LLVM issues #80792 (riscv64 miscompile) and #216580 (LSan false-leaks) in upstream LLVM |
| libpfm4 4.13.0 | PMU event access | Builds | Not tested on riscv64 | Available in distros | Runtime depends on SBI PMU extension availability on hardware |
| libzip 1.10.1 | Zip compression | Builds (pure C) | No riscv64-specific issues | Available in distros | None |
| chromium/zlib (pinned snapshot 7eda07b) | Deflate/zlib compression | Builds (scalar fallback) | No riscv64 CI for snapshot | N/A | PCLMUL/SSE4.2 SIMD paths not available; scalar fallback only |
| numactl 2.0.19 | NUMA topology, thread pinning | Builds | No riscv64-specific issues | Available in distros | NUMA largely irrelevant on current riscv64 hardware |
Critical dependency deep-dives
tcmalloc (blocking): The default memory allocator for all fleetbench allocation benchmarks. The segv_handler.cc file explicitly marks __riscv as “NOT (yet) supported.” No percpu_rseq_riscv.S file exists, so the per-CPU RSEQ fast-path is unavailable. All allocation benchmarks will run on the per-thread-cache path only, degrading throughput by an estimated 5-15% in high-concurrency scenarios compared to x86-64 and AArch64. No upstream tracking issue exists for riscv64 support. Full analysis in the tcmalloc report.
abseil-cpp (reliability risk): Two open riscv64 issues. Issue #2002: SEGFAULT in hashtablez_sampler_test and cordz_sample_token_test on Debian riscv64 with GCC 15.2 - these are test-level failures, not production crashes. Abseil recommends -DABSL_BUILD_TESTING=OFF as a workaround. Issue #1702: undefined __atomic_compare_exchange_1 / __atomic_exchange_1 when building shared libraries with GCC 11-12 cross-toolchain; static linking avoids this. CRC32C hardware acceleration PR #1986 is blocked waiting for Google to acquire RISC-V hardware for testing.
protobuf (toolchain blocker): No prebuilt protoc binary for riscv64. Google maintainers explicitly stated in August 2024 and August 2025 that riscv64 is unsupported and off-roadmap. PR #23205 (prebuilt protoc for riscv64) was closed due to an unsigned CLA. Building protobuf from source on riscv64 requires a working cross-compilation toolchain.
zstd (version pin issue): Fleetbench pins zstd v1.4.5 (released 2020), predating all upstream riscv64 CI additions (added July 2025 in the 1.5.x line via PR #4435 with QEMU vlen=128/256/512). The pinned version has known riscv64 contrib-build failures. Upgrading to a current release would resolve this but requires fleetbench maintainer action.
highway (SIMD quality): Highway 1.2.0 has RVV 1.0 support (hwy/ops/rvv-inl.h, full API surface implemented). Open issue #2854: mold linker corrupts .riscv.attributes ISA string on riscv64 (cosmetic, not a correctness issue). PR #3148 (add riscv64 to highway’s CI) was opened June 2026 but is blocked on a CLA signature from the contributor. Without riscv64 CI, highway regressions go undetected.
11. Known Bugs and Active Issues
Open issues with architecture relevance (none are RISC-V):
| ID | Title | Status | Severity | Notes |
|---|---|---|---|---|
| #26 | Proto fails with segfault on AArch64 | Closed | Was high | Fixed; AArch64 only |
| #24 | Build failure in ARM64 Ubuntu (Go toolchain arch) | Closed | Was medium | Fixed; ARM64 only |
| #22 | Build failure with gcc on arm | Closed | Was medium | Fixed; ARM only |
All 7 currently open issues (#30, #25, #20, #13, #10, #3, #2) are feature requests or build questions with no architecture-specific content. None involve RISC-V, floating-point correctness, or NaN semantics.
Dependency-level correctness issues affecting riscv64 fleetbench runs:
| Dep | Issue | Status | Severity |
|---|---|---|---|
| abseil-cpp | #2002: SEGFAULT in sampler/cordz tests (Debian riscv64, GCC 15.2) | Open | Medium (test-only; production code path unaffected) |
| abseil-cpp | #1702: -latomic undefined refs with GCC 11-12 cross-toolchain shared libs | Open | Medium (static linking workaround available) |
| highway | #2854: mold linker corrupts .riscv.attributes ISA string | Open | Low (cosmetic) |
| grpc | #41591: riscv64 Python wheel missing | Open | Low (no Python surface in fleetbench) |
| protobuf | No prebuilt protoc for riscv64 | No tracking issue | High (blocks Bazel build bootstrapping) |
12. Objections and Upstream Blockers
Organizational blockers:
-
Google’s production fleet uses x86-64 and AArch64. Fleetbench’s stated purpose is to benchmark workloads representative of this specific fleet. There is no organizational motivation for Google engineers to enable riscv64 until riscv64 servers are present in Google’s production infrastructure.
-
The project is a conference paper companion, not a community product. The README disclaimer (“not an officially supported Google product”) signals minimal maintainer availability for external contributions.
-
The primary dependency, TCMalloc, explicitly marks riscv64 as unsupported. The allocation benchmarks - a core fleetbench workload category - cannot provide full-fidelity results on riscv64 without TCMalloc per-CPU support landing first.
Technical blockers (in priority order):
- No
--config=riscv64in .bazelrc - trivial to add but requires a submitted PR accepted by Google maintainers. - TCMalloc riscv64 per-CPU RSEQ path missing (
percpu_rseq_riscv.Sabsent) - non-trivial kernel and library work. - No prebuilt
protocfor riscv64 - requires either Bazel cross-compilation toolchain setup or protobuf upstream action. - ScaNN LUT16 has no RVV path - the SIMD benchmark will produce scalar-only numbers, which are not representative of what riscv64 hardware can achieve with RVV.
- zstd pinned to v1.4.5 (2020) - upstream riscv64 improvements in 1.5.x are inaccessible without a dependency version bump.
Acceptance probability: Low for upstream Google maintainers acting on riscv64 work without external pressure or hardware adoption. Contributions are technically feasible but face organizational indifference. The most realistic path is a maintained fork or out-of-tree CI that patches the Bazel config and pins updated dependency versions.
13. Investment Analysis
RISE has no prior investment in fleetbench. No RISE blog posts, RFPs, or project descriptions mention fleetbench. All work described below is net new.
13.1 Functional Enablement
Minimum work to get fleetbench building and running portable benchmarks on riscv64:
- Add
--config=riscv64to .bazelrc with appropriate-marchflags. - Add a
clang_or_gcc_riscv64config group tofleetbench/BUILDmirroring the existing arm64 pattern. - Document the
--custom_mallocoverride for TCMalloc benchmarks pending full TCMalloc riscv64 support. - Resolve protobuf
protocbootstrapping on riscv64 (either wait on protobuf upstream or use a pre-staged protoc binary). - Address abseil-cpp issue #1702 (static linking workaround or upstream fix) to ensure clean builds.
The core benchmarks (proto, compression, hashing, swissmap, RPC, libc) are portable C++ and should function once build configuration and dependency blockers are cleared.
13.2 Performance Optimization
For results to be comparable to arm64 and amd64:
- TCMalloc RSEQ per-CPU slab on riscv64: Required for meaningful TCMalloc benchmark numbers. This is the highest-value work but lives entirely in the TCMalloc repository, not in fleetbench itself. See the TCMalloc report for scope.
- ScaNN LUT16 RVV path: Adding a RISC-V Vector implementation of the LUT16 lookup-and-accumulate kernel to ScaNN (or an equivalent path via Google Highway RVV). This is a significant implementation effort in the google-research/ScaNN codebase.
- Brotli RVV
FindMatchLengthWithLimit: PR #1410 exists in the brotli repository but has no CLA. Could be landed with CLA-cleared contributor effort. - zstd version bump: Update the pinned
http_archivefrom v1.4.5 to a current release to access upstream RVV optimizations and riscv64 CI.
13.3 CI/CD Infrastructure
- Add a riscv64 CI job to
.github/workflows/ci.yaml, either via a QEMU step on an existing GitHub-hosted runner or via a native riscv64 runner (RISE or other). - The SIMD benchmark job requires hardware with RVV support for meaningful results; QEMU with
vlen=512is sufficient for correctness testing. - Add a
ci/linux_riscv64_clang-latest_libcxx_bazel.shscript mirroring the existing arm script.
13.4 Ecosystem Enablement
Not applicable. Fleetbench has no package ecosystem, no plugin architecture, and no downstream consumers that require independent enablement.
13.5 Summary Table
| Area | Work Item | Effort (person-weeks) | Owner | Priority |
|---|---|---|---|---|
| Functional | Add –config=riscv64 to .bazelrc and BUILD config group | 0.5 | Contributor + Google review | Critical |
| Functional | Resolve protobuf protoc bootstrapping on riscv64 | 1 | Contributor (depends on protobuf upstream) | Critical |
| Functional | Abseil-cpp issue #1702 static linking / upstream fix | 1 | RISE or contributor | High |
| Functional | Bump zstd pin from v1.4.5 to current release | 0.5 | Contributor | High |
| CI/CD | Add riscv64 QEMU CI job to ci.yaml | 1 | Contributor | High |
| Performance | TCMalloc per-CPU RSEQ slab for riscv64 | 8-12 | RISE (see TCMalloc report) | High |
| Performance | ScaNN LUT16 RVV kernel implementation | 6-10 | RISE or hardware vendor | Medium |
| Performance | Brotli RVV FindMatchLengthWithLimit (land PR #1410) | 2 | RISE (CLA + upstream review) | Low |
| Performance | Highway riscv64 CI (land PR #3148) | 1 | RISE (CLA resolution) | Medium |
Total functional enablement (build + basic CI): approximately 4 person-weeks, with the protobuf bootstrapping item dependent on work outside fleetbench.
Total for full-fidelity riscv64 benchmark results (matching arm64 coverage): approximately 20-26 person-weeks, dominated by TCMalloc RSEQ and ScaNN RVV work that lives in upstream repositories rather than in fleetbench itself.
14. Updates
No updates yet - initial report dated 2026-08-14.
15. References
- google/fleetbench repository
- fleetbench CI configuration (.github/workflows/ci.yaml)
- fleetbench .bazelrc
- fleetbench README
- fleetbench SIMD benchmark (simd_benchmark.cc)
- fleetbench issue tracker
- ISPASS 2024 paper DOI: 10.1109/ISPASS61541.2024.00046
- TCMalloc platforms documentation
- abseil-cpp issue #2002 (SEGFAULT on Debian riscv64)
- abseil-cpp issue #1702 (-latomic undefined refs, riscv64 cross-toolchain)
- highway issue #2854 (mold linker riscv64)
- highway PR #3148 (add riscv64 CI)
- brotli PR #1410 (RVV FindMatchLengthWithLimit)
- zstd PR #4435 (RVV CI, QEMU vlen=128/256/512)
- grpc issue #41591 (riscv64 Python wheel)
- protobuf PR #23205 (prebuilt protoc for riscv64, closed)
- google/benchmark PR #1727 (RDTIME for riscv64)
- snappy riscv64-qemu-test.yaml CI workflow
- Arch Linux RISC-V package search
- RISE Project member list