{"id":16021353,"url":"https://github.com/cirocosta/perfer","last_synced_at":"2026-05-02T03:31:52.073Z","repository":{"id":73883872,"uuid":"156877783","full_name":"cirocosta/perfer","owner":"cirocosta","description":"A wrapper on top of `perf` and `flamegraphs` to generate flamegraphs on demand.","archived":false,"fork":false,"pushed_at":"2019-03-13T18:18:55.000Z","size":14,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-25T13:58:26.190Z","etag":null,"topics":["flamegraph","golang","linux","perf"],"latest_commit_sha":null,"homepage":"","language":"Go","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/cirocosta.png","metadata":{"files":{"readme":"README.txt","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":"2018-11-09T15:04:42.000Z","updated_at":"2019-11-11T01:50:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"6d7332a3-b53b-45d6-9df1-449710d69144","html_url":"https://github.com/cirocosta/perfer","commit_stats":{"total_commits":11,"total_committers":2,"mean_commits":5.5,"dds":0.2727272727272727,"last_synced_commit":"a2809ff5aab29aa68c6c9c5ccd9082d155de451f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cirocosta/perfer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fperfer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fperfer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fperfer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fperfer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cirocosta","download_url":"https://codeload.github.com/cirocosta/perfer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fperfer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32522245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["flamegraph","golang","linux","perf"],"created_at":"2024-10-08T18:03:46.079Z","updated_at":"2026-05-02T03:31:52.049Z","avatar_url":"https://github.com/cirocosta.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"A wrapper on top of `perf` and `flamegraphs` to generate flamegraphs on demand.\n\n\nRATIONALE\n\tpprof[1] is great for a user to understand what's going under\n\tthe hood of a particular golang application, but it limits\n\tits reach to the userspace.\n\n\tperf[2] + flamegraph[3] gives us a deeper view into how the\n\tkernel is seeing the execution of a given process (or set\n\tof them).\n\n\tBy providing an agent that can perform such analysis, we're\n\table to mimic the greatness of pprof: providing a known\n\tendpoint which a remote user can use to gather insights\n\tabout the runtime behavior of an application.\n\n\t[1]: https://golang.org/pkg/runtime/pprof/\n\t[2]: http://man7.org/linux/man-pages/man1/perf.1.html\n\t[3]: https://github.com/brendangregg/FlameGraph\n\nUSAGE\n\n\tRun the server in a given machine you want to analyze:\n\n\t\tperfer --addr=:1313\n\n\n\tCreate a flamegraph that samples all procs:\n\n\t\tcurl machine_ip:1313/flamegraph?freq=99\u0026seconds=10'\n\n\n\tCreate a flamegraph that samples a specific pid:\n\n\t\tcurl machine_ip:1313/flamegraph?freq=99\u0026seconds=10\u0026pid=3212'\n\n\nDEPENDENCIES\n\t- perf\n\t- flamegrapudo \n\t- kallsyms available\n\n\nAPI\n\tGET /profile?pid=$PID\u0026freq=$FREQ\u0026seconds=$SECONDS\n\n\t\tPerforms the capture and streams back in tgz the `perf script`\n\t\tresults (after a record happens) so that further processing can \n\t\tbe performed by the user.\n\n\t\tIf no `PID` specified, all of processes get sampled.\n\n\n\tGET /flamegraph?pid=$PID\u0026freq=$FREQ\u0026seconds=$SECONDS\n\n\t\tPerforms the capture and then returns a URL where a given\n\t\tflamegraph.svg is served, allowing the user to share it.\n\n\t\tIf no `PID` specified, all of processes get sampled.\n\n\n\tGET /static/\u003ccontent\u003e \t\n\n\t\tRetrieves the contents stored under the configured assets\n\t\tdirectory (this is where profiles and framegraphs get saved).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcirocosta%2Fperfer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcirocosta%2Fperfer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcirocosta%2Fperfer/lists"}