1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors_Tencent-flare

Клонировать/Скачать
profiler.md 3.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Luo Bo Отправлено 26.05.2021 09:11 9cc00d3

Profiller

Flare 开发的服务支持在运行期间对程序进行动态分析,以发现程序的性能热点或者内存分配情况。

目前支持CpuProfiler以及MemProfiler来分别分析程序cpu和内存使用情况, 找到程序中的热点函数或可能的内存泄漏。

要使用Profiler程序需要先运行一个flare::Server, 如果只是客户端服务或没有使用flare::Server, 可以创建一个dummy server, 可以参考例子。 可以在程序运行中间动态启动Profiler, 得到函数调用图, 停止。 通过httpGet方法访问控制, 可以通过命令行curl调用, 也可通过浏览器直接访问查看svg格式的函数调用图。

Profiler的原理大致都是采样收集函数调用栈,得到汇总调用图。通过设置合理的采样频率, profiler对程序的性能影响不明显。

Cpu Profiler

flag::Server默认已经链接了prof_cpu_handler。运行中可以Http访问uri: /prof/cpu/start, /prof/cpu/view, /prof/cpu/stop分别来开启, 查看, 停止。需要在运行机器上提前安装pprof, 在/prof/cpu/view的时候会通过shell调用pprof分析采样结果生成对应的函数调用图。采样频率由环境变量CPUPROFILE_FREQUENCY控制, 默认每秒钟100次。

Mem Profiler

提供了TcmallocProfilerHttpHandlerJemallocProfilerHttpHandler分别适用于使用tcmallocjemalloc来分配内存的程序。 两者只能选其一链接, 同时链接编译时就会报错。链接方式为在bin程序BUILD中依赖//flare/rpc/builtin:tcmalloc_profiler_http_handler//flare/rpc/builtin:jemalloc_profiler_http_handler, 可以参考例子中的cc_binary:server以及je_server

Tcmalloc Mem Profiler

需要在运行机器上提前安装pprof

当链接tc_prof_mem_handler后, 程序启动就已经开始采样了, 可以通过Http访问uri : /prof/mem/view来查看采样的结果调用图。

可以启动时设置环境变量TCMALLOC_SAMPLE_PARAMETER来控制采样频繁, 当程序每分配此大小的内存时就会进行一次采样, 默认值524288(512K)字节为官方建议设置值, 设置小了对程序的性能影响较为明显。

Jemalloc Mem Profiler

需要在运行机器上提前安装jeprof

当链接je_prof_mem_handler后, 如果想要在程序运行期间开启采样功能, 需要在程序启动时设置环境变量MALLOC_CONFprof:true来开启采样功能。设置后采样就会默认开启。如果想启动时先不激活, 可以设置MALLOC_CONFprof:true,prof_active:false。然后访问uri: /prof/mem/start, /prof/mem/view, /prof/mem/stop 来动态开启, 查看, 停止。

可以启动时设置环境变量MALLOC_CONF中的lg_prof_sample来控制采样频率, 默认频率也为每分配512K字节采样一次。


返回目录

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors_Tencent-flare.git
git@api.gitlife.ru:oschina-mirror/mirrors_Tencent-flare.git
oschina-mirror
mirrors_Tencent-flare
mirrors_Tencent-flare
master