Procpath 是一个流程树分析工作台
项目描述
程序路径
Procpath 是一个进程树分析命令行工作台。它的目标是为在 Linux 系统上运行的进程的树结构提供自然接口,以用于检查、收集和以后的分析,重点是性能。
安装
pipx install Procpath
建议使用pipx来安装 Procpath(到专用的虚拟环境中)。或者,可以使用pip将 Procpath 安装到 Python 用户安装目录。
pip install --user Procpath
快速开始
获取进程子树的逗号分隔 PID(包括父进程 pid=2610)。
procpath query -d , '$..children[?(@.stat.pid == 2610)]..pid'
获取所述流程子树的 JSON 文档。
procpath query -i 2 '$..children[?(@.stat.pid == 2610)]'
获取所述进程子树的 MiB 中的总 RSS(这是一个 查询生成 JSON 的示例,该 JSON 可以在procpath之外进一步处理,下面是一种更简单的计算聚合的方法)。
procpath query '$..children[?(@.stat.pid == 2610)]' \
| jq '[.. | .stat? | objects | .rss] | add / 1024 * 4'
以简单的方式获取所述进程子树的 MiB 中的总 RSS。
procpath query '$..children[?(@.stat.pid == 2610)]' \
'SELECT SUM(stat_rss) / 1024.0 * 4 total FROM record'
获取 docker-compose 堆栈的总 RSS(以 MiB 为单位)。
L=$(docker ps -f status=running -f name='^project_name' -q | xargs -I{} -- \
docker inspect -f '{{.State.Pid}}' {} | tr '\n' ,)
procpath query "$..children[?(@.stat.pid in [$L])]" \
'SELECT SUM(stat_rss) / 1024.0 * 4 total FROM record'
每秒记录一次两个 Docker 容器的进程树,每 30 次记录重新评估一次容器的根进程 PID。然后可视化每个进程的 RSS(这也只是一个示例,可以以不同的方式可视化输出 SQLite 数据库,包括导出 CSV、sqlite3 -csv ...文档)。
procpath record \
-e C1='docker inspect -f "{{.State.Pid}}" project_db_1' \
-e C2='docker inspect -f "{{.State.Pid}}" project_app_1' \
-i 1 -v 30 -d out.sqlite '$..children[?(@.stat.pid in [$C1, $C2])]'
# press Ctrl + C
sqlite3 out.sqlite \
"SELECT stat_pid, group_concat(stat_rss / 1024.0 * 4) \
FROM record \
GROUP BY stat_pid" \
| sed -z 's/\n/\n\n\n/g' | sed 's/|/\n/' | sed 's/,/\n/g' > special_fmt
gnuplot -p -e \
"plot for [i=0:*] 'special_fmt' index i with lines title columnheader(1)"
用简单的方法可视化上面的记录。
procpath plot -d out.sqlite -o out.svg -q cpu -q rss
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
Procpath-1.6.1.tar.gz
(59.5 kB
查看哈希)
内置分布
Procpath-1.6.1-py3-none-any.whl
(65.4 kB
查看哈希)