{"id":2119066,"url":"https://github.com/NiceNode/bench-buddy","last_synced_at":"2025-07-10T23:30:52.183Z","repository":{"id":65495411,"uuid":"593403144","full_name":"NiceNode/bench-buddy","owner":"NiceNode","description":"a simple benchmark tool for container systems","archived":false,"fork":false,"pushed_at":"2023-11-08T19:18:12.000Z","size":94,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-08-05T15:35:25.221Z","etag":null,"topics":["benchmark","benchmarking","containers","docker","docker-image","performance-testing","podman"],"latest_commit_sha":null,"homepage":"https://benchbuddy.xyz","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NiceNode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-01-25T22:55:15.000Z","updated_at":"2023-11-09T22:34:48.000Z","dependencies_parsed_at":"2023-11-07T23:15:54.246Z","dependency_job_id":"ad2b050e-3c2a-4c17-8715-b74c3aca5fb9","html_url":"https://github.com/NiceNode/bench-buddy","commit_stats":null,"previous_names":["nicenode/bench-buddy","nicenode/speedometer"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceNode%2Fbench-buddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceNode%2Fbench-buddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceNode%2Fbench-buddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceNode%2Fbench-buddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NiceNode","download_url":"https://codeload.github.com/NiceNode/bench-buddy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225663433,"owners_count":17504427,"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":["benchmark","benchmarking","containers","docker","docker-image","performance-testing","podman"],"created_at":"2024-01-21T21:28:17.903Z","updated_at":"2024-11-21T02:30:23.718Z","avatar_url":"https://github.com/NiceNode.png","language":"JavaScript","readme":"# benchbuddy\nRuntime environment performance testing for containers - outputs cpu, memory, storage (ssd) read and write speeds, internet speeds, and more. This is valuable to test a container environment's resources and setup.\n## Getting started\n### Pre-requisite\nInstall a container runtime like [Podman](https://podman.io/) or [Docker](https://www.docker.com/)\n### Run\n```\npodman run ghcr.io/nicenode/benchbuddy\ndocker run ghcr.io/nicenode/benchbuddy\n\n(sample output...)\nStarting performance tests and other testing...\n\nNumber of cpu cores: 8 cores\nTotal memory: 12 GB\n\nrunning a ~10 second file input and output speed test ...\n(mount a volume to directory /test-volume to test the mount speed.)\nRead: 3429 IOPS, 2972 min IOPS\nWrite: 1142 IOPS, 998 min IOPS\n\nrunning a 10-30 second www.speedtest.net internet speed test ...\nPing: average 6.073ms, max 8.073ms\nDownload: average 294Mbps, latency: iqm 9.174ms and max 123.8ms\nUpload: average 175Mbps, latency: iqm 85.826ms and max 268.886ms\nSpeedtest link: https://www.speedtest.net/result/c/3e219403-e33c-426b-9c2a-1983126a6e4e\n```\nTo test a mounted disk or ssd speed, mount it to /test-volume like so\n```\ndocker run -v /path/to/host/disk:/test-volume ghcr.io/nicenode/benchbuddy\n```\nOutput JSON\n```\ndocker run ghcr.io/nicenode/benchbuddy -f json\n{\n  \"cpu\":{\n    \"cores\":8,\n    \"maxThreads\":94296,\n    \"sysbenchTest\":{\n      \"1\":10738,\n      \"4\":42018,\n      \"8\":75840,\n      \"32\":75818\n    }\n  },\n  \"memory\":{\n    \"total\":11928,\n    \"sysbenchTest\":{\n      \"read\":{\n        \"32MB\":40749,\n        \"1G\":40819\n      },\n      \"write\":{\n        \"32MB\":32409,\n        \"1G\":32186\n      }\n    }\n  },\n  \"storage\":{\n    \"readIOPS\":30068,\n    \"writeIOPS\":10049,\n    \"readMinIOPS\":25966,\n    \"writeMinIOPS\":8638\n  },\n  \"internet\":{\n    \"download\":365,\n    \"upload\":175,\n    \"latency\":6.194,\n    \"resultsUrl\":\"https://www.speedtest.net/result/c/a433dc9e-cb55-443b-8253-37a83a5cf591\"\n  }\n}\n```\nThis project is in early stages, so expect the output format to change.\nRun a limited set of tests\nExample only run cpu and memory tests\n```\ndocker run ghcr.io/nicenode/benchbuddy -t cpu memory\n```\nCLI documentation\n```\ndocker run ghcr.io/nicenode/benchbuddy --help\n```\n### Develop\nLocal environment setup: \n1. In the Containerfile, swap commenting out the `entrypoint` with `cmd bash`\n2. Build a local container `podman build -t benchbuddy-local .`\n3. Run the container interactively with a volume mount from this repo to `/workdir` in the container `podman run -it -v $(pwd):/workdir benchbuddy-local` so that changes to code on your host machine will reflect inside the container.\n4. Modify index.js code\n5. Run `node /workdir/index.js` inside the container\n\n## Why is my node not syncing?\nThe first goal of this project is to answer this question.\n\nSecondly, this project can be used by developers and users who want to evaluate the performance and setup of their specific container environment. Example, a person who is a solo-home-ethereum-staker!\n\n## Credits\nThe first version of benchbuddy was based off of Stakehouse's eth-wizard's tests inside its Ethereum validator installation wizard. Code at https://github.com/stake-house/eth-wizard/blob/main/ethwizard/platforms/ubuntu/install.py#L51\n## Terms, agreements, privacy, etc\nBy using or running this code or container, you agree to the following agreements set by a third-party tool used inside this software:\n\n### Speedtest\nFrom https://www.speedtest.net/apps/cli\n\n\u003eYou may only use this Speedtest software and information generated\n\u003efrom it for personal, non-commercial use, through a command line\n\u003einterface on a personal computer. Your use of this software is subject\n\u003eto the End User License Agreement, Terms of Use and Privacy Policy at\n\u003ethese URLs:\n\u003e\n\u003e\thttps://www.speedtest.net/about/eula\n\u003e\n\u003e\thttps://www.speedtest.net/about/terms\n\u003e \n\u003e\thttps://www.speedtest.net/about/privacy\n\n### WorldTimeAPI\nFrom http://worldtimeapi.org/pages/privacypolicy\n\n\u003eWe do not...\n\u003eWorldTimeAPI is a simple service, and there is no requirement for us to persist any \u003einformation about our visitors. Therefore:\n\u003e\n\u003ewe do not issue Cookies or any other form of tracking tokens\n\u003ewe do not \"fingerprint\" visitors\n\u003eWe do not use Google Analytics or any other browser-based tracking service.\n\u003e\n\u003eWe do...\n\u003eWe do log a small amount of information about the requests made to the service. This \u003einformation includes the date and time of requests, the IP the request came from, and it's \u003elocation. Some of this information is temporary; for example we keep the IP of the request \u003eonly for a few minutes so we can guard against attacks from malicious agents.\n\u003e\n\u003eWe also store details about system errors so they can be investigated and rectified.\n\u003e\n\u003eAny information we do store long-term is purely to allow us plan for future enhancements to \u003ethe system, and there is no identifying information, pseudo or otherwise.\n\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNiceNode%2Fbench-buddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNiceNode%2Fbench-buddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNiceNode%2Fbench-buddy/lists"}