【Erlang】优化排查工具

本文介绍了VM内部调优的排查方法,包括fprof的使用进行函数调用分析、pstack和etop用于进程栈和CPU/Mem监控,以及eprof和gc_all用于性能优化。此外,还提供了 scheduler_usage 和 scheduler_stat 用于调度器资源监控,以及 trace 和 proc_mem 用于内存高负载问题诊断。
%%%-------------------------------------------------------------------
%%% @author cnkizy
%%% @copyright (C) 2020
%%% @doc
%%%    VM内部调优排查
%%%    https://www.cnblogs.com/lulu/p/4149204.html
%%% @end 
%%% Created : 2021/1/23-12-05
%%%-------------------------------------------------------------------
-module(analysis_lib).
-description("analysis_lib").
-author("cnkizy").
-vsn(1).
%% API
-export([fp_pid/1, fp_apply/3, pstack/1, etop/0, etop_mem/0, etop_stop/0, gc_all/0, eprof_all/1, eprof/2]).
-export([scheduler_usage/0, scheduler_usage/1]).
-export([scheduler_stat/0, scheduler_stat/1]).
-export([trace/1, trace/2, trace_stop/0]).
-export([proc_mem_all/1, proc_mem/1, proc_mem/2]).
%% -----------------------------------------------------------------
%% Function: fp_apply/3
%% Description: 执行一次MFA并进行过程分析,fprof 结果比较详细,能够输出热点调用路径
%% CNT表示总的函数调用次数,ACC表示Trace起始经历的时间,OWN是Trace中所有函数执行的时间和(不包含调用函数的执行时间
%% 时间单位:ms
%% Detail Reference: https://www.it610.com/article/519481.htm
%% -----------------------------------------------------------------
fp_apply(M, F, A) ->
	fprof:start(),
	fprof:apply(M, F, A),
	fprof:stop(),
	fprof:profile(),
	fprof:analyse({dest, "profile.txt"}).

fp_pid(Pid) ->
	fprof:start(),
	fprof:trace([start, {procs, Pid}]),
	fprof:stop(),
	fprof:profile(),
	fprof:analyse({dest, "profile.txt"}).

%% ================================== 进程栈 =======================================
%% -----------------------------------------------------------------
%% Function: pstac
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值