{"id":18019648,"url":"https://github.com/mgm3746/vmcat","last_synced_at":"2025-03-26T20:31:24.607Z","repository":{"id":96924407,"uuid":"294125702","full_name":"mgm3746/vmcat","owner":"mgm3746","description":"A command line tool to parse Java -XX:+LogVMOutput safepoint statistics.","archived":false,"fork":false,"pushed_at":"2023-10-24T15:06:10.000Z","size":504,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-22T10:42:46.720Z","etag":null,"topics":["java-support","openjdk","support-jvm-tuning"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mgm3746.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-09-09T13:44:59.000Z","updated_at":"2024-08-28T07:49:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"e979b9d0-0b71-4d74-ac83-6d7e58cafc0b","html_url":"https://github.com/mgm3746/vmcat","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgm3746%2Fvmcat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgm3746%2Fvmcat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgm3746%2Fvmcat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgm3746%2Fvmcat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgm3746","download_url":"https://codeload.github.com/mgm3746/vmcat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245731424,"owners_count":20663182,"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":["java-support","openjdk","support-jvm-tuning"],"created_at":"2024-10-30T05:11:40.271Z","updated_at":"2025-03-26T20:31:24.001Z","avatar_url":"https://github.com/mgm3746.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vmcat\nA command line tool to parse Java -XX:+LogVMOutput and do analysis to support JVM tuning and troubleshooting for OpenJDK and Oracle JDK.\n\n## Supports\n\nOpenJDK8 derivatives:\n* AdoptOpenJDK\n* Azul\n* Microsoft Build of OpenJDK\n* Oracle JDK\n* Red Hat build of OpenJDK\n* etc.\n  \n ### Recommended JVM Options\n \n \u003e-XX:+UnlockDiagnosticVMOptions -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:+LogVMOutput -XX:LogFile=/path/to/vm.log\n \n## Building\n\nGet source:\n```\ngit clone https://github.com/mgm3746/vmcat.git\n```\n\nBuild it:\n```\ncd vmcat\nmvn clean (rebuilding)\nmvn assembly:assembly\nmvn javadoc:javadoc\n```\n\n## Usage\n\n```\njava -jar vmcat-1.0.2-SNAPSHOT.jar --help\nusage: vmcat [OPTION]... [FILE]\n -h,--help              help\n -l,--latest            latest version\n -o,--output \u003carg\u003e      output file name (default report.txt)\n -t,--threshold \u003carg\u003e   threshold (0-100) for throughput bottleneck\n                        reporting\n -v,--version           version\n```\n\nNotes:\n  1. By default a report called report.txt is created in the directory where the **vmcat** tool is run. Specifying a custom name for the output file is useful when analyzing multiple vm logs.\n  1. Version information is included in the report by using the version and.or latest version options.\n  1. Preprocessing is sometimes required (e.g. when non-standard JVM options are used). It removes extraneous logging and makes any format adjustments needed for parsing (e.g. combining logging that the JVM sometimes splits across multiple lines). \n  1. If threshold is not defined, it defaults to 90.\n  1. Throughput = (Time outside safepoint) / (Total Time). Throughput of 100 means no time spent in safepoint (good). Throughput of 0 means all time spent in safepoint (bad).\n\n## Report\n\n```\n========================================\nThroughput less than 5%\n----------------------------------------\n822.685: RevokeBias                       [    3077          0              0    ]      [     0\n     0     0    15     0    ]  0\n822.703: BulkRevokeBias                   [    3077          0              1    ]      [     0\n     0     0    15    58    ]  0\n...\n4190.458: RevokeBias                       [    3085          0              4    ]      [     0\n     0     1    14     0    ]  0\n4190.475: BulkRevokeBias                   [    3085          0              1    ]      [     0\n     0     0    13    39    ]  0\n========================================\nJVM:\n----------------------------------------\nVersion: OpenJDK 64-Bit Server VM (25.201-b09) for linux-amd64 JRE (1.8.0_201-b09), built on Mar  \n5 2019 10:14:09 by \u0026quot;mockbuild\u0026quot; with gcc 4.4.7 20120313 (Red Hat 4.4.7-23)\nOptions: -Xms4G -Xmx4G -XX:+UnlockDiagnosticVMOptions -XX:MetaspaceSize=512M \n-XX:MaxMetaspaceSize=1024M -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 \n-XX:+LogVMOutput -XX:LogFile=vm.log -verbose:gc -Xloggc:gc.log -XX:+PrintGCDetails \n-XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCApplicationStoppedTime \n-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M\n========================================\nSUMMARY:\n----------------------------------------\nThroughput: 88%\nMax Pause: 3.121 secs\nTotal Pause: 900.246 secs\nFirst Timestamp: 0.159 secs\nLast Timestamp: 7677.815 secs\n========================================\nTRIGGERS:\n----------------------------------------\n                                       #    Time (s)            Max (s)\nParallelGCFailedAllocation          8491     613.913    68%       3.121\nRevokeBias                         13007     225.595    25%       1.118\nBulkRevokeBias                       725      45.937     5%       0.592\nno vm operation                      535       9.594     1%       0.074\nParallelGCSystemGC                    38       2.902    ~0%       0.352\nForceSafepoint                        73       1.388    ~0%       0.046\nDeoptimize                            97       0.917    ~0%       0.084\nEnableBiasedLocking                    1      ~0.000    ~0%      ~0.000\n========================================\n\n```\n\n## Copyright\n\nCopyright (c) 2020-2023 Mike Millson\n\nAll rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License - v 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/.    ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgm3746%2Fvmcat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgm3746%2Fvmcat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgm3746%2Fvmcat/lists"}