From b00dd6fba212d1d12074df2ac3fb4ed795e77869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 6 Jun 2011 14:26:47 +0200 Subject: Add a 'profile' environment variable to start a profiler when the app starts. --- src/cowboy_app.erl | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/cowboy_app.erl b/src/cowboy_app.erl index 91f9818..114eb9a 100644 --- a/src/cowboy_app.erl +++ b/src/cowboy_app.erl @@ -15,7 +15,7 @@ -module(cowboy_app). -behaviour(application). --export([start/2, stop/1]). %% API. +-export([start/2, stop/1, profile_output/0]). %% API. -type application_start_type() :: normal | {takeover, node()} | {failover, node()}. @@ -24,8 +24,29 @@ -spec start(application_start_type(), any()) -> {ok, pid()}. start(_Type, _Args) -> + consider_profiling(), cowboy_sup:start_link(). -spec stop(any()) -> ok. stop(_State) -> ok. + +-spec profile_output() -> ok. +profile_output() -> + eprof:stop_profiling(), + eprof:log("procs.profile"), + eprof:analyze(procs), + eprof:log("total.profile"), + eprof:analyze(total). + +%% Internal. + +-spec consider_profiling() -> profiling | not_profiling. +consider_profiling() -> + case application:get_env(profile) of + {ok, true} -> + eprof:start(), + eprof:start_profiling([self()]); + _ -> + not_profiling + end. -- cgit v1.2.3