python 3.12.0 perf 试用
python 3.12.0 的发布,官方支持了基于perf 的调用链分析,基于容器搞了一个简单的环境测试下
环境准备
包含了包含perf 的python 基础镜像,以及一个使用flask 的web 服务, 使用flamescope 的可视化页面分析
- docker-compose 文件
version: '3'
services:
flamescope:
image: dalongrong/flamescope
ports:
- "9080:5000"
volumes:
- "./profiles:/profiles"
app:
build:
context: ./
dockerfile: Dockerfile-app
privileged: true
environment:
- PYTHONPERFSUPPORT=1
volumes:
- ./app.py:/app/app.py
- ./profiles:/profiles
ports:
- 3000:3000
cap_add:
- ALL
perf-base:
profiles:
- perf
build: .
image: dalongrong/python:3.12.0-perf
- dockerfile 说明
基础镜像
FROM python:3.12.0
RUN apt update && apt-get install -y linux-perf procps && apt-get clean
Dockerfile-app app
FROM dalongrong/python:3.12.0-perf
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
COPY app.py /app/app.py
ENTRYPOINT [ "flask", "--app", "app","run", "--host", "0.0.0.0", "--port", "3000" ]
app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
体验
- 注意需要先构建基础镜像
- 启动
docker-compose up -d
- perf 采样数据
容器kernel 配置
sh -c " echo 0 > /proc/sys/kernel/kptr_restrict"
sh -c " echo 0 > /proc/sys/kernel/perf_event_paranoid"
perf record -ag -F 999p -p 1
perf script --header > /profiles/myappperf.perf
- flamescope 查看
从效果上来看,似乎并不是很好
说明
目前python 对于perf 的支持是以linux 为主的,同时从体验上来说不是很好
参考资料
https://github.com/pyenv/pyenv
https://pythoninsider.blogspot.com/2023/10/python-3120-final-now-available.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-10-07 openmetadata 系统技术栈学习
2022-10-07 webvm 基于webassembly 的虚拟机
2019-10-07 class-transformer 方便的json 对象转class
2019-10-07 isopod dsl 框架管理kubernetes 配置
2019-10-07 cloudevents js sdk 简单试用
2019-10-07 AsyncAPI 几个方便的工具