File 2212-erts-Remove-scheduler_poll-lttng-event.patch of Package erlang
From 16ea222223d579f20375e59585a3b64f05cf0402 Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Wed, 4 Sep 2019 09:34:36 +0200
Subject: [PATCH 2/2] erts: Remove scheduler_poll lttng event
This event is not really useful for anything since the
poll events moved to a seperate thread so remove it.
---
erts/emulator/beam/erl_process.c | 2 --
erts/emulator/beam/erlang_lttng.h | 15 ----------
erts/emulator/test/lttng_SUITE.erl | 60 +++----------------------------------
lib/runtime_tools/doc/src/LTTng.xml | 8 -----
4 files changed, 4 insertions(+), 81 deletions(-)
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index a247258eff..c0b26ef6d8 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -44,7 +44,6 @@
#include "erl_thr_queue.h"
#include "erl_async.h"
#include "dtrace-wrapper.h"
-#include "lttng-wrapper.h"
#include "erl_ptab.h"
#include "erl_bif_unique.h"
#define ERTS_WANT_TIMER_WHEEL_API
@@ -9562,7 +9561,6 @@ Process *erts_schedule(ErtsSchedulerData *esdp, Process *p, int calls)
erts_runq_unlock(rq);
ERTS_MSACC_SET_STATE_CACHED_M(ERTS_MSACC_STATE_CHECK_IO);
- LTTNG2(scheduler_poll, esdp->no, 1);
erts_check_io(esdp->ssi->psi, ERTS_POLL_NO_TIMEOUT, 0);
ERTS_MSACC_POP_STATE_M();
diff --git a/erts/emulator/beam/erlang_lttng.h b/erts/emulator/beam/erlang_lttng.h
index e5fc56d3ec..213830e6fd 100644
--- a/erts/emulator/beam/erlang_lttng.h
+++ b/erts/emulator/beam/erlang_lttng.h
@@ -30,21 +30,6 @@
#include <lttng/tracepoint.h>
-/* Schedulers */
-
-TRACEPOINT_EVENT(
- org_erlang_otp,
- scheduler_poll,
- TP_ARGS(
- int, id,
- int, runnable
- ),
- TP_FIELDS(
- ctf_integer(int, scheduler, id)
- ctf_integer(int, runnable, runnable)
- )
-)
-
#ifndef LTTNG_CARRIER_STATS
#define LTTNG_CARRIER_STATS
typedef struct {
diff --git a/erts/emulator/test/lttng_SUITE.erl b/erts/emulator/test/lttng_SUITE.erl
index c3d846d8b5..18d72cc16a 100644
--- a/erts/emulator/test/lttng_SUITE.erl
+++ b/erts/emulator/test/lttng_SUITE.erl
@@ -32,8 +32,7 @@
t_driver_ready_input_output/1,
t_driver_timeout/1,
t_driver_caller/1,
- t_driver_flush/1,
- t_scheduler_poll/1]).
+ t_driver_flush/1]).
-export([ets_load/0]).
@@ -43,7 +42,7 @@ suite() ->
[{ct_hooks,[ts_install_cth]},
{timetrap, {minutes, 1}}].
-all() ->
+all() ->
[t_lttng_list,
t_memory_carrier,
t_carrier_pool,
@@ -52,9 +51,7 @@ all() ->
t_driver_control,
t_driver_timeout,
t_driver_caller,
- t_driver_flush,
- t_scheduler_poll].
-
+ t_driver_flush].
init_per_suite(Config) ->
case erlang:system_info(dynamic_trace) of
@@ -103,7 +100,6 @@ end_per_testcase(Case, _Config) ->
%% org_erlang_otp:driver_outputv
%% org_erlang_otp:driver_init
%% org_erlang_otp:driver_start
-%% org_erlang_otp:scheduler_poll
%%
%% Testcases
@@ -262,35 +258,6 @@ t_driver_caller(Config) ->
ok = check_tracepoint("org_erlang_otp:driver_init", Res),
ok = check_tracepoint("org_erlang_otp:driver_finish", Res),
ok.
-
-%% org_erlang_otp:scheduler_poll
-t_scheduler_poll(Config) ->
- ok = lttng_start_event("org_erlang_otp:scheduler_poll", Config),
-
- N = 100,
-
- Me = self(),
- Pid = spawn_link(fun() -> tcp_server(Me, {active, N*2}) end),
- receive {Pid, accept} -> ok end,
-
- %% We want to create a scenario where the fd is moved into a scheduler
- %% pollset, this means we have to send many small packages to the
- %% same socket, but not fast enough for them to all arrive at the
- %% same time.
- {ok, Sock} = gen_tcp:connect("localhost", 5679, [binary, {packet, 2}]),
- [begin gen_tcp:send(Sock,txt()), receive ok -> ok end end || _ <- lists:seq(1,N)],
-
- ok = memory_load(),
-
- [begin gen_tcp:send(Sock,txt()), receive ok -> ok end end || _ <- lists:seq(1,N)],
-
- ok = gen_tcp:close(Sock),
- Pid ! die,
- receive {Pid, done} -> ok end,
-
- Res = lttng_stop_and_view(Config),
- ok = check_tracepoint("org_erlang_otp:scheduler_poll", Res),
- ok.
%% org_erlang_otp:driver_flush
t_driver_flush(Config) ->
@@ -331,24 +298,6 @@ chk_caller(Port, Callback, ExpectedCaller) ->
ExpectedCaller = Caller
end.
-memory_load() ->
- Me = self(),
- Pids0 = [spawn_link(fun() -> memory_loop(Me, 20, <<42>>) end) || _ <- lists:seq(1,30)],
- timer:sleep(50),
- Pids1 = [spawn_link(fun() -> memory_loop(Me, 20, <<42>>) end) || _ <- lists:seq(1,30)],
- [receive {Pid, done} -> ok end || Pid <- Pids0 ++ Pids1],
- timer:sleep(500),
- ok.
-
-memory_loop(Parent, N, Bin) ->
- memory_loop(Parent, N, Bin, []).
-
-memory_loop(Parent, 0, _Bin, _) ->
- Parent ! {self(), done};
-memory_loop(Parent, N, Bin0, Ls) ->
- Bin = binary:copy(<<Bin0/binary, Bin0/binary>>),
- memory_loop(Parent, N - 1, Bin, [a,b,c|Ls]).
-
ets_load(Config) ->
%% Have to do on a fresh node to guarantee that carriers are created
@@ -441,8 +390,7 @@ txt() ->
"%% org_erlang_otp:driver_output\n"
"%% org_erlang_otp:driver_outputv\n"
"%% org_erlang_otp:driver_init\n"
- "%% org_erlang_otp:driver_start\n"
- "%% org_erlang_otp:scheduler_poll">>.
+ "%% org_erlang_otp:driver_start">>.
load_driver(Dir, Driver) ->
case erl_ddll:load_driver(Dir, Driver) of
diff --git a/lib/runtime_tools/doc/src/LTTng.xml b/lib/runtime_tools/doc/src/LTTng.xml
index 85adbcc616..e6fa8d484c 100644
--- a/lib/runtime_tools/doc/src/LTTng.xml
+++ b/lib/runtime_tools/doc/src/LTTng.xml
@@ -313,14 +313,6 @@ $ make </code>
<p>All tracepoints are in the domain of <c>org_erlang_otp</c></p>
<p>All Erlang types are the string equivalent in LTTng.</p>
- <p><em>scheduler_poll</em></p>
- <list type="bulleted">
- <item><c>scheduler : integer</c> :: Scheduler ID. Ex. <c>1</c></item>
- <item><c>runnable : integer</c> :: Runnable. Ex. <c>1</c></item>
- </list>
- <p>Example:</p>
- <code type="none">scheduler_poll: { cpu_id = 4 }, { scheduler = 1, runnable = 1 }</code>
-
<p><em>driver_init</em></p>
<list type="bulleted">
<item><c>driver : string</c> :: Driver name. Ex. <c>"tcp_inet"</c></item>
--
2.16.4