# top-analyzer **Repository Path**: Xi_Tong/top-analyzer ## Basic Information - **Project Name**: top-analyzer - **Description**: 分析top日志的工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-06 - **Last Updated**: 2026-01-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Proc Sampler 进程统计工具,用于分析和统计系统进程的CPU、内存和IO使用情况。 ## 功能特性 - 解析 top 命令日志文件,统计进程资源使用情况 - 支持按命令名或 PID 聚合统计 - 支持进程名模糊过滤 - 显示瞬时和累计资源占用 Top N - 支持 iotop 日志解析,统计 IO 读写情况 - 将统计结果导出到 Excel 文件 ## 安装依赖 ```bash go mod download ``` ## 使用方法 ```bash go run main.go [参数] ``` ## 参数说明 | 参数 | 默认值 | 说明 | |------|--------|------| | -f | top.log | top 日志文件路径 | | -iof | | iotop 输入文件路径(可选) | | -sortType | | IO 排序方式(可选) | | -mode | cmd | 聚合模式:cmd(按命令名)或 pid(按进程ID) | | -n | 20 | 显示前 N 个结果 | | -filter | | 进程名模糊过滤(子串匹配) | | -output | both | 输出模式:console(仅控制台)、excel(仅Excel)、both(两者) | ## 使用示例 1. 基本使用(使用默认参数): ```bash go run main.go ``` 2. 指定日志文件: ```bash go run main.go -f current.log ``` 3. 按 PID 聚合统计: ```bash go run main.go -f current.log -mode pid ``` 4. 过滤特定进程: ```bash go run main.go -f current.log -filter java ``` 5. 显示前 50 个结果: ```bash go run main.go -f current.log -n 50 ``` 6. 包含 IO 统计: ```bash go run main.go -f current.log -iof iotop-current.log ``` 7. 仅输出到控制台: ```bash go run main.go -f current.log -output console ``` 8. 仅输出到 Excel 文件: ```bash go run main.go -f current.log -output excel ``` 9. 同时输出到控制台和 Excel(默认): ```bash go run main.go -f current.log -output both ``` ## 输出说明 程序支持三种输出模式,通过 `-output` 参数控制: ### 控制台输出(console 或 both) 在控制台输出以下信息: 1. **瞬时 MEM 占用 Top10**:当前内存占用最高的进程 2. **瞬时 CPU 占用 Top10**:当前CPU占用最高的进程 3. **累计统计结果**:包含以下列: - RANK:排名 - COUNT:采样次数 - RES:总物理内存占用 - CPU_SUM:CPU总占用 - MEM_SUM:内存总占用 - CPU_AVG:CPU平均占用 - MEM_AVG:内存平均占用 - PROCESS:进程名 ### Excel 文件输出(excel 或 both) 生成 Excel 文件 `process_stat.xlsx`,包含详细的统计数据,包括: - 瞬时 CPU/MEM Top10 - 累计统计结果 - 瞬时最大 CPU/MEM 统计 - IO 读写统计(如果提供了 iotop 文件) ## 输入文件格式 ### top 日志格式 程序支持标准的 top 命令输出格式,需要包含以下字段: - PID - %CPU - %MEM - RES - COMMAND ### iotop 日志格式 支持 iotop 命令的输出格式,用于统计进程的读写IO情况。 ## 依赖项 - Go 1.25.0+ - github.com/xuri/excelize/v2 v2.10.0