{"id":24811178,"url":"https://github.com/thin-edge/tedge-benchmark","last_synced_at":"2025-03-25T13:24:17.815Z","repository":{"id":211176538,"uuid":"728403684","full_name":"thin-edge/tedge-benchmark","owner":"thin-edge","description":"thin-edge.io benchmark script (not intended for public consumption just yet)","archived":false,"fork":false,"pushed_at":"2024-06-20T14:27:45.000Z","size":696,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-30T12:19:45.899Z","etag":null,"topics":["community","iot","thin-edge"],"latest_commit_sha":null,"homepage":"","language":"Python","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/thin-edge.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-06T21:43:21.000Z","updated_at":"2024-06-20T14:27:27.000Z","dependencies_parsed_at":"2023-12-06T23:27:07.413Z","dependency_job_id":"c4ca4761-a691-4dea-822d-6a4c50c5da24","html_url":"https://github.com/thin-edge/tedge-benchmark","commit_stats":null,"previous_names":["thin-edge/tedge-benchmark"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Ftedge-benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Ftedge-benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Ftedge-benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Ftedge-benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thin-edge","download_url":"https://codeload.github.com/thin-edge/tedge-benchmark/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245468775,"owners_count":20620450,"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":["community","iot","thin-edge"],"created_at":"2025-01-30T12:19:35.120Z","updated_at":"2025-03-25T13:24:17.767Z","avatar_url":"https://github.com/thin-edge.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tedge-benchmark\n\n## Plugin summary\n\nBenchmarking script which is run periodically using a systemd timer.\n\n**Technical summary**\n\nThe following details the technical aspects of the plugin to get an idea what systems it supports.\n\n|||\n|--|--|\n|**Languages**|`python3`|\n|**CPU Architectures**|`all/noarch`. Not CPU specific|\n|**Supported init systems**|`systemd`|\n|**Required Dependencies**|python3-paho-mqtt|\n|**Optional Dependencies (feature specific)**|-|\n\n### How to do I get it?\n\nThe following linux package formats are provided on the releases page and also in the [tedge-community](https://cloudsmith.io/~thinedge/repos/community/packages/) repository:\n\n|Operating System|Repository link|\n|--|--|\n|Debian/Raspbian (deb)|[![Latest version of 'tedge-benchmark' @ Cloudsmith](https://api-prd.cloudsmith.io/v1/badges/version/thinedge/community/deb/tedge-benchmark/latest/a=all;d=any-distro%252Fany-version;t=binary/?render=true\u0026show_latest=true)](https://cloudsmith.io/~thinedge/repos/community/packages/detail/deb/tedge-benchmark/latest/a=all;d=any-distro%252Fany-version;t=binary/)|\n|Alpine Linux (apk)|[![Latest version of 'tedge-benchmark' @ Cloudsmith](https://api-prd.cloudsmith.io/v1/badges/version/thinedge/community/alpine/tedge-benchmark/latest/a=noarch;d=alpine%252Fany-version/?render=true\u0026show_latest=true)](https://cloudsmith.io/~thinedge/repos/community/packages/detail/alpine/tedge-benchmark/latest/a=noarch;d=alpine%252Fany-version/)|\n|RHEL/CentOS/Fedora (rpm)|[![Latest version of 'tedge-benchmark' @ Cloudsmith](https://api-prd.cloudsmith.io/v1/badges/version/thinedge/community/rpm/tedge-benchmark/latest/a=noarch;d=any-distro%252Fany-version;t=binary/?render=true\u0026show_latest=true)](https://cloudsmith.io/~thinedge/repos/community/packages/detail/rpm/tedge-benchmark/latest/a=noarch;d=any-distro%252Fany-version;t=binary/)|\n\n### What will be deployed to the device?\n\n* The following service will be installed\n    * `tedge-benchmark` (service and timer) (triggered every hour on the hour)\n    * `tedge-benchmark.py` script which is called from the service, however it can also be called manually for adhoc usage\n\n## Plugin Dependencies\n\nThe following packages are required to use the plugin:\n\n* tedge\n\n\n### Check the timer status\n\nYou can check when the next time the benchmark will run by using the following systemd command:\n\n```sh\nsystemctl status tedge-benchmark.timer\n```\n\n**Output**\n\n```sh\n● tedge-benchmark.timer - thin-edge.io benchmark runner\n     Loaded: loaded (/lib/systemd/system/tedge-benchmark.timer; enabled; preset: enabled)\n     Active: active (waiting) since Wed 2023-12-06 22:33:01 CET; 55min ago\n    Trigger: Thu 2023-12-07 00:00:00 CET; 31min left\n   Triggers: ● tedge-benchmark.service\n\nDec 06 22:33:01 rackfslot1 systemd[1]: Started tedge-benchmark.timer - thin-edge.io benchmark runner.\n```\n\n### Triggering the benchmark on demand\n\nYou can manually trigger the benchmark to run on demand using the following command:\n\n```sh\nsystemctl start tedge-benchmark.service\n```\n\nOtherwise, you can also trigger the benchmark on the commands line.\n\n```sh\ntedge-benchmark.py run --count 1000 --beats 100 --period 500\n```\n\n### Check benchmark output\n\nCheck the results of the benchmark using:\n\n```sh\ntail -f /var/log/tedge-benchmark/tedge-benchmark.log\n```\n\n## About the benchmark script itself\n\nSee the [cli documentation](docs/cli/benchmark.md) for a print out of the usage.\n\nThe benchmark script is used to generate load on thin-edge.io by telemetry data on the thin-edge.io MQTT topic. The benchmark then checks to see if the telemetry data is mapped correctly to the Cumulocity outgoing topic to see if any messages are dropped.\n\nThe telemetry data creation can be controlled in the following ways,\n\n* how many data points should be published in a burst (via `--beats \u003cint\u003e`)\n* how long to wait between publishing a single data point (via `--beats-delay \u003cmilliseconds\u003e`)\n* how long to wait between bursts (from start of one burst to the start of another burst (via `--period \u003cmilliseconds\u003e`)\n* how many data points are to be published in the entire test (across all bursts) (via `--count \u003cint\u003e`)\n* how many times to repeat all of the above (via `--iterations \u003cint\u003e`)\n\nThe diagram aims at clarifying the terms listed above to better visualize which each of the parameters control:\n\n![tedge-benchmark.drawio.png](./docs/tedge-benchmark.drawio.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthin-edge%2Ftedge-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthin-edge%2Ftedge-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthin-edge%2Ftedge-benchmark/lists"}