Skip to content

Commit 6a6164e

Browse files
authored
Merge pull request #47 from emqx/perf/EMQX-13727/tp
perf: use lazy tracepoints in hot code paths
2 parents a14bfff + 4498fc7 commit 6a6164e

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

include/logger.hrl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,10 @@
3939

4040
-define(log(Level, Format, Args),
4141
begin
42-
(logger:log(Level,#{},#{report_cb => fun(_) -> {(Format), (Args)} end}))
42+
(logger:log(Level,fun(_) -> {(Format), (Args)} end,[]))
43+
end).
44+
45+
-define(slog(Level, Report),
46+
begin
47+
(logger:log(Level,fun(_) -> Report end, []))
4348
end).

src/gen_rpc_acceptor.erl

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ waiting_for_data(info, {Passive, Socket},
102102
keep_state_and_data;
103103
waiting_for_data(info, {Driver,Socket,Data},
104104
#state{socket=Socket, driver=Driver, driver_mod=DriverMod, peer=Peer, control=Control, list=List} = State) ->
105-
?tp(gen_rpc_acceptor_receive, #{ socket => gen_rpc_helper:socket_to_string(Socket)
105+
?tp_ignore_side_effects_in_prod(
106+
gen_rpc_acceptor_receive, #{ socket => gen_rpc_helper:socket_to_string(Socket)
106107
, peer => Peer
107108
, packet => catch erlang:binary_to_term(Data)
108109
}),
@@ -333,13 +334,14 @@ handle_cast(M, F, A, Ordered, #state{socket=Socket, driver=Driver, peer=Peer, co
333334
true ->
334335
case ModVsnAllowed of
335336
true ->
336-
?tp(debug, gen_rpc_exec_cast,
337-
#{ module => M
338-
, function => F
339-
, arity => length(A)
340-
, socket => gen_rpc_helper:socket_to_string(Socket)
341-
, peer => gen_rpc_helper:peer_to_string(Peer)
342-
}),
337+
?slog(debug,
338+
#{ msg => gen_rpc_exec_cast
339+
, module => M
340+
, function => F
341+
, arity => length(A)
342+
, socket => gen_rpc_helper:socket_to_string(Socket)
343+
, peer => gen_rpc_helper:peer_to_string(Peer)
344+
}),
343345
exec_cast(RealM, F, A, Ordered);
344346
false ->
345347
?log(debug, "event=incompatible_module_version driver=~s socket=\"~s\" module=~s",[Driver, gen_rpc_helper:socket_to_string(Socket), RealM])

src/gen_rpc_client.erl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,8 @@ handle_info({{sbcast,_Name,_Msg,_Caller} = PacketTuple, undefined}, State) ->
346346
%% Handle any TCP packet coming in
347347
handle_info({Driver,Socket,Data}, #state{socket=Socket, driver=Driver, driver_mod=DriverMod} = State) ->
348348
MessageFromWire = erlang:binary_to_term(Data),
349-
?tp(gen_rpc_client_receive_message, #{ socket => gen_rpc_helper:socket_to_string(Socket)
349+
?tp_ignore_side_effects_in_prod(
350+
gen_rpc_client_receive_message, #{ socket => gen_rpc_helper:socket_to_string(Socket)
350351
, packet => MessageFromWire
351352
}),
352353
_Reply = case MessageFromWire of
@@ -420,7 +421,8 @@ terminate(_Reason, #state{keepalive=KeepAlive}) ->
420421
%%% Private functions
421422
%%% ===================================================
422423
send_cast(PacketTuple, #state{socket=Socket, driver=Driver, driver_mod=DriverMod} = State, SendTimeout, Activate) ->
423-
?tp(gen_rpc_send_packet, #{ packet => PacketTuple
424+
?tp_ignore_side_effects_in_prod(
425+
gen_rpc_send_packet, #{ packet => PacketTuple
424426
, timeout => SendTimeout
425427
, driver => Driver
426428
, socket => gen_rpc_helper:socket_to_string(Socket)
@@ -465,7 +467,8 @@ send_ping(#state{socket=Socket, driver=Driver, driver_mod=DriverMod} = State) ->
465467
cast_worker(NodeOrTuple, Cast, Ret, SendTimeout) ->
466468
%% Create a unique name for the client because we register as such
467469
PidName = ?NAME(NodeOrTuple),
468-
?tp(gen_rpc_input, #{ input => Cast
470+
?tp_ignore_side_effects_in_prod(
471+
gen_rpc_input, #{ input => Cast
469472
, target => NodeOrTuple
470473
, sendto => SendTimeout
471474
, pid => PidName
@@ -484,7 +487,8 @@ cast_worker(NodeOrTuple, Cast, Ret, SendTimeout) ->
484487
Ret
485488
end;
486489
Pid ->
487-
?tp(debug, gen_rpc_client_process_found, #{pid => Pid, target => NodeOrTuple}),
490+
?tp_ignore_side_effects_in_prod(
491+
gen_rpc_client_process_found, #{pid => Pid, target => NodeOrTuple}),
488492
erlang:send(Pid, {Cast, SendTimeout}),
489493
Ret
490494
end.

0 commit comments

Comments
 (0)