{"id":29376490,"url":"https://github.com/twitter/rpc-perf","last_synced_at":"2025-07-09T22:43:12.658Z","repository":{"id":38956008,"uuid":"46767238","full_name":"twitter/rpc-perf","owner":"twitter","description":"A tool for benchmarking RPC services","archived":false,"fork":false,"pushed_at":"2023-04-03T22:55:54.000Z","size":1353,"stargazers_count":468,"open_issues_count":8,"forks_count":79,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-05-31T02:43:21.848Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twitter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-24T04:39:03.000Z","updated_at":"2025-03-25T06:13:36.000Z","dependencies_parsed_at":"2023-02-12T06:00:26.008Z","dependency_job_id":null,"html_url":"https://github.com/twitter/rpc-perf","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/twitter/rpc-perf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frpc-perf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frpc-perf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frpc-perf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frpc-perf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twitter","download_url":"https://codeload.github.com/twitter/rpc-perf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Frpc-perf/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262953595,"owners_count":23390231,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-09T22:43:11.878Z","updated_at":"2025-07-09T22:43:12.649Z","avatar_url":"https://github.com/twitter.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rpc-perf\n\nrpc-perf is a tool for measuring the performance of RPC services and is\nprimarily used to benchmark caching systems.\n\n[![License: Apache-2.0][license-badge]][license-url]\n[![Build Status: CI][ci-build-badge]][ci-build-url]\n\n# Content\n* [Getting rpc-perf](#getting-rpc-perf)\n* [Configuration](#configuration)\n* [Sample Usage](#sample-usage)\n* [Sample Output](#sample-output)\n* [Practices](#practices)\n* [Features](#features)\n* [Future Work](#future-work)\n* [Contributing](#contributing)\n\n# Getting rpc-perf\n\nrpc-perf is built through the `cargo` command which ships with rust. If you \ndon't have Rust installed, you can use [rustup][rustup] to manage your Rust\ninstallation. Otherwise, follow the instructions on\n[rust-lang.org](https://rust-lang.org) to get Rust and Cargo installed. rpc-perf\nis developed and tested against the stable Rust toolchain.\n\n## Build from source\n\nWith Rust installed, clone this repo, and cd into this folder:\n\n```shell\ngit clone https://github.com/twitter/rpc-perf.git\ncd rpc-perf\ncargo build --release\n```\n\nThis will produce a binary at `target/release/rpc-perf` which can be run\nin-place or copied to a more convenient location on your system.\n\n# Configuration\n\nrpc-perf takes a configuration file to define the test parameters and runtime\noptions.\n\n## Sample Usage\n\n**BEWARE** rpc-perf can write to its target and can generate many requests\n* *run only* if data in the server can be lost/destroyed/corrupted/etc\n* *run only* if you understand the impact of sending high-levels of traffic\n  across your network\n\n```shell\n# run rpc-perf using the specified configuration file\nrpc-perf configs/memcache.toml\n```\n\n## Practices\n\n* Start with a short test before moving on to tests spanning larger periods of\n  time\n* If comparing latency between two setups, be sure to set a ratelimit that's\n  achievable on both\n* Keep `--clients` below the number of cores on the machine generating workload\n* Increase `--poolsize` as necessary to simulate production-like connection\n  numbers\n* You may need to use multiple machines to generate enough workload and/or\n  connections to the target\n* Log your configuration and results to make repeating and sharing experiments\n  easy\n* Use waterfalls to help visualize latency distribution over time and see\n  anomalies\n\n## Features\n\n* high-resolution latency metrics\n* supports memcache and redis protocols\n* [mio][mio] for async networking\n* optional waterfall visualization of latencies\n* powerful workload configuration\n\n## Support\n\nCreate a [new issue](https://github.com/twitter/rpc-perf/issues/new) on GitHub.\n\n## Contributing\n\nWe feel that a welcoming community is important and we ask that you follow\nTwitter's [Open Source Code of Conduct] in all interactions with the community.\n\n## Authors\n\n* Brian Martin \u003cbmartin@twitter.com\u003e\n\nA full list of [contributors] can be found on GitHub.\n\nFollow [@TwitterOSS](https://twitter.com/twitteross) on Twitter for updates.\n\n## License\n\nCopyright 2015-2019 Twitter, Inc.\n\nLicensed under the Apache License, Version 2.0:\nhttps://www.apache.org/licenses/LICENSE-2.0\n\n## Security Issues?\n\nPlease report sensitive security issues via Twitter's bug-bounty program\n(https://hackerone.com/twitter) rather than GitHub.\n\n[ci-build-badge]: https://img.shields.io/github/workflow/status/twitter/rpc-perf/CI/master?label=CI\n[ci-build-url]: https://github.com/twitter/rpc-perf/actions/workflows/cargo.yml?query=branch%3Amaster+event%3Apush\n[contributors]: https://github.com/twitter/rpc-perf/graphs/contributors?type=a\n[license-badge]: https://img.shields.io/badge/license-Apache%202.0-blue.svg\n[license-url]: https://github.com/twitter/rpc-perf/blob/master/LICENSE\n[mio]: https://github.com/carllerche/mio\n[Open Source Code of Conduct]: https://github.com/twitter/code-of-conduct/blob/master/code-of-conduct.md\n[rustlang]: https://rust-lang.org/\n[rustup]: https://rustup.rs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitter%2Frpc-perf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwitter%2Frpc-perf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitter%2Frpc-perf/lists"}