{"id":13813188,"url":"https://github.com/rigtorp/hiccups","last_synced_at":"2025-06-23T11:33:02.786Z","repository":{"id":53901092,"uuid":"250181485","full_name":"rigtorp/hiccups","owner":"rigtorp","description":"Measures the system induced jitter (\"hiccups\") a CPU bound thread experiences","archived":false,"fork":false,"pushed_at":"2023-09-25T07:05:27.000Z","size":5,"stargazers_count":122,"open_issues_count":1,"forks_count":23,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-06-20T13:10:25.999Z","etag":null,"topics":["jitter","latency","latency-analysis","latency-test","latency-tester","low-latency","real-time","realtime","sysjitter"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rigtorp.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":"2020-03-26T06:44:27.000Z","updated_at":"2025-06-17T05:30:32.000Z","dependencies_parsed_at":"2024-08-04T04:03:34.594Z","dependency_job_id":"57d99133-19ec-404e-a87f-544ff5a2b720","html_url":"https://github.com/rigtorp/hiccups","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rigtorp/hiccups","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigtorp%2Fhiccups","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigtorp%2Fhiccups/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigtorp%2Fhiccups/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigtorp%2Fhiccups/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rigtorp","download_url":"https://codeload.github.com/rigtorp/hiccups/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigtorp%2Fhiccups/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261469181,"owners_count":23163040,"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":["jitter","latency","latency-analysis","latency-test","latency-tester","low-latency","real-time","realtime","sysjitter"],"created_at":"2024-08-04T04:01:06.401Z","updated_at":"2025-06-23T11:32:57.771Z","avatar_url":"https://github.com/rigtorp.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# hiccups\n\n[![License](https://img.shields.io/github/license/rigtorp/hiccups)](https://github.com/rigtorp/hiccups/blob/master/LICENSE)\n\n*hiccups* measures the system induced jitter (\"hiccups\") a CPU bound thread\nexperiences.\n\nIt runs a thread on each processor core that loops for a fixed interval (by\ndefault 5 seconds). Each loop iteration acquires a timestamp and if the\ndifference between the last two successive timestamps exceeds a threshold, the\nthread is assumed to have been interrupted and the difference is recorded. At\nthe end of the run the number of interruptions, 99th percentile, 99.9th\npercentile and maximum interruption per processor core is output.\n\nBy default the threshold is calculated as 8 times the smallest difference\nbetween two consecutive timestamps out of 10000 runs. Difference between two\nsuccessive timestamps exceeding the threshold is indicative of jitter introduced\nby thread context switching, interrupt processing, TLB shootdowns etc.\n\n*hiccups* was inspired by [David Riddoch's](mailto:david@riddoch.org.uk)\n[sysjitter](https://www.openonload.org/download/sysjitter/sysjitter-1.4.tgz).\n\nLinux kernel version 5.14 introduces the [*osnoise\ntracer*](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/trace/osnoise-tracer.rst)\nthat also measures the system jitter / noise. It additionally shows you the\nsources of the jitter.\n\n## Example\n\nMeasure jitter on CPUs 0 through 3:\n```\n$ taskset -c 0-3 hiccups | column -t -R 1,2,3,4,5,6\ncpu  threshold_ns  hiccups  pct99_ns  pct999_ns    max_ns\n  0           168    17110     83697    6590444  17010845\n  1           168     9929    169555    5787333   9517076\n  2           168    20728     73359    6008866  16008460\n  3           168    28336      1354       4870     17869\n```\n\nIn this example CPU 3 is a quiet CPU with low jitter as indicated by the 99.9th\npercentile being much lower then the other CPUs.\n\n## Building \u0026 Installing\n\n*hiccups* requires [CMake](https://cmake.org/) 3.2 or higher and a C++17\ncompiler.\n\nBuilding on Debian/Ubuntu:\n\n```\nsudo apt install cmake g++\ncd hiccups\nmkdir build \u0026\u0026 cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake\n```\n\nBuilding on RHEL/CentOS:\n\n```\nsudo yum install cmake3 g++\ncd hiccups\nmkdir build \u0026\u0026 cd build\ncmake3 .. -DCMAKE_BUILD_TYPE=Release\nmake\n```\n\nInstalling:\n\n```\n$ sudo make install\n```\n\n## About\n\nThis project was created by [Erik Rigtorp](https://rigtorp.se)\n\u003c[erik@rigtorp.se](mailto:erik@rigtorp.se)\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frigtorp%2Fhiccups","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frigtorp%2Fhiccups","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frigtorp%2Fhiccups/lists"}