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

posted on   荣锋亮  阅读(135)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用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 几个方便的工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示