{"id":13452678,"url":"https://github.com/worstcase/gumshoe","last_synced_at":"2025-04-06T12:12:15.751Z","repository":{"id":73715775,"uuid":"54892286","full_name":"worstcase/gumshoe","owner":"worstcase","description":null,"archived":false,"fork":false,"pushed_at":"2016-06-13T19:05:40.000Z","size":789,"stargazers_count":460,"open_issues_count":2,"forks_count":128,"subscribers_count":60,"default_branch":"master","last_synced_at":"2024-07-31T08:05:05.455Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/worstcase.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":"2016-03-28T12:58:20.000Z","updated_at":"2024-05-17T07:27:31.000Z","dependencies_parsed_at":"2023-07-09T13:16:04.026Z","dependency_job_id":null,"html_url":"https://github.com/worstcase/gumshoe","commit_stats":null,"previous_names":["dcm-oss/gumshoe"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/worstcase%2Fgumshoe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/worstcase%2Fgumshoe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/worstcase%2Fgumshoe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/worstcase%2Fgumshoe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/worstcase","download_url":"https://codeload.github.com/worstcase/gumshoe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478325,"owners_count":20945266,"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":"2024-07-31T08:00:20.177Z","updated_at":"2025-04-06T12:12:15.722Z","avatar_url":"https://github.com/worstcase.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"\nGumshoe Load Investigator \n=========================\n\nOverview\n--------\n\nMonitor application performance statistics associated with individual calling stacks,\ninteractively filter and view as a flame graph or root graph.\n\nGumshoe was first created initially for internal use in the Dell Cloud Manager application but\nsource code has since been released for public use under [these terms](COPYRIGHT).  \n\n[Features](docs/features.md)\n--------\n\n* Analyze resource usage: measure TCP, UDP, filesystem or processor utilization\n* Pinpoint lines of code: all statistics are associated with a call stack and individual stack frames\n* Capture, filter and visualize as statistics are generated\n* Intuitive views: flame graph and root graph\n* Filter stack frames at capture and/or during visualization, modify on the fly. \n\nDocumentation\n-------------\n\n* Short intro and demo on youtube: [latest](https://www.youtube.com/watch?v=GGJFZfwXJ44) or the original [boring version](https://www.youtube.com/watch?v=1M9GX4ENMeI).\n* [Quick start guide](QUICK-START.md) walks through using with a sample application.\n* Full [user guide](docs/index.md)\n\nDon't Just Measure and Report:  Understand\n------------------------------------------\n\nLooking at stack traces scaled by metrics gives a fast, intuitive way to understand application resource usage.  Consider\nnetwork I/O in a hypothetical application...\n\nFlame graph example:\n\n![image](docs/flame-graph.png)\n\nLooking at callers into an application, Invoker.invoke is responsible for \u003e90% of the read operations\nin this application.  It always calls RestRequestHandler.handle which in turn calls three different REST\noperations.  One -- showItemDetails -- is responsible for \u003e80% of read operations as it makes different calls\ninto the DAO layer.\n\nRoot graph example:\n\n![image](docs/root-graph.png)\n\nGrouping now by the last frame where the application calls out to a resource,\nthe couchdb Database.getDocument is responsible for over half of the read operations,\nwhile the JDBC Statement.execute about 25%, the vast majority of those from getItemDetails.\n\nThese two examples are completely contrived, but not overly simplified.  The original call stacks in\nyour application are generally huge, with hundreds of frames,\nbut gumshoe uses [stack filters](docs/filters.md) to find\njust the relevant portions and focus the view on just those parts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworstcase%2Fgumshoe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fworstcase%2Fgumshoe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworstcase%2Fgumshoe/lists"}