Skip to main content

Procpath 是一个流程树分析工作台

项目描述

PyPI - 许可证 管道状态 测试代码覆盖率 基准 派皮 RTFD

程序路径

程序路径

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 RSS 与 CPU SVG

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

Procpath-1.6.1.tar.gz (59.5 kB 查看哈希

已上传 source

内置分布

Procpath-1.6.1-py3-none-any.whl (65.4 kB 查看哈希

已上传 py3