From 054606a3d3ed0d2b6355b790bb44b752b8471790 Mon Sep 17 00:00:00 2001 From: "feliks.pobiedzinski@swmansion.com" Date: Mon, 5 Feb 2024 16:58:18 +0100 Subject: [PATCH] Some inspects --- benchmark/metric/in_progress_memory.ex | 2 +- benchmark/metric/message_queues_length.ex | 4 +- benchmark/metric/time.ex | 6 +- benchmark/run.exs | 58 +++++++++--------- benchmark/run.sh | 11 ++++ feature_branch | Bin 0 -> 554 bytes feature_branch_results | Bin 0 -> 335 bytes .../core/element/buffer_controller.ex | 1 + .../demand_controller/auto_flow_utils.ex | 1 + lib/membrane/core/element/event_controller.ex | 2 + lib/membrane/core/element/state.ex | 4 +- master_branch | Bin 0 -> 536 bytes master_results | Bin 0 -> 317 bytes 13 files changed, 54 insertions(+), 35 deletions(-) create mode 100755 benchmark/run.sh create mode 100644 feature_branch create mode 100644 feature_branch_results create mode 100644 master_branch create mode 100644 master_results diff --git a/benchmark/metric/in_progress_memory.ex b/benchmark/metric/in_progress_memory.ex index fe179c6bc..f512dfdb2 100644 --- a/benchmark/metric/in_progress_memory.ex +++ b/benchmark/metric/in_progress_memory.ex @@ -11,7 +11,7 @@ defmodule Benchmark.Metric.InProgressMemory do if cumulative_memory > cumulative_memory_ref * (1 + @tolerance_factor), do: - raise( + IO.warn( "The memory performance has got worse! For test case: #{inspect(test_case, pretty: true)} the cumulative memory used to be: #{cumulative_memory_ref} MB and now it is: #{cumulative_memory} MB" ) diff --git a/benchmark/metric/message_queues_length.ex b/benchmark/metric/message_queues_length.ex index 61ad10494..76158dd45 100644 --- a/benchmark/metric/message_queues_length.ex +++ b/benchmark/metric/message_queues_length.ex @@ -4,6 +4,8 @@ defmodule Benchmark.Metric.MessageQueuesLength do @tolerance_factor 0.5 @sampling_period 100 + require Membrane.Logger + @impl true def assert(queues_lengths, queues_lengths_ref, test_case) do cumulative_queues_length = integrate(queues_lengths) @@ -12,7 +14,7 @@ defmodule Benchmark.Metric.MessageQueuesLength do if cumulative_queues_length > cumulative_queues_length_ref * (1 + @tolerance_factor), do: - raise( + IO.warn( "The cumulative queues length has got worse! For test case: #{inspect(test_case, pretty: true)} the cumulative queues length to be: #{cumulative_queues_length_ref} and now it is: #{cumulative_queues_length}" ) diff --git a/benchmark/metric/time.ex b/benchmark/metric/time.ex index 211738f49..46b545c1a 100644 --- a/benchmark/metric/time.ex +++ b/benchmark/metric/time.ex @@ -5,12 +5,12 @@ defmodule Benchmark.Metric.Time do @impl true def assert(time, time_ref, test_case) do - if time > time_ref * (1 + @tolerance_factor), - do: - raise( + if time > time_ref * (1 + @tolerance_factor) do + IO.warn( "The time performance has got worse! For test case: #{inspect(test_case, pretty: true)} the test used to take: #{time_ref} ms and now it takes: #{time} ms" ) + end :ok end diff --git a/benchmark/run.exs b/benchmark/run.exs index e671fcd74..055632e42 100644 --- a/benchmark/run.exs +++ b/benchmark/run.exs @@ -61,43 +61,43 @@ defmodule Benchmark.Run do require Membrane.Pad @test_cases [ - linear: [ - reductions: 1_000, - max_random: 1, - number_of_filters: 10, - number_of_buffers: 500_000, - buffer_size: 1 - ], - linear: [ - reductions: 1_000, - max_random: 1, - number_of_filters: 100, - number_of_buffers: 50_000, - buffer_size: 1 - ], - linear: [ - reductions: 1_000, - max_random: 5, - number_of_filters: 10, - number_of_buffers: 50_000, - buffer_size: 1 - ], + # linear: [ + # reductions: 1_000, + # max_random: 1, + # number_of_filters: 10, + # number_of_buffers: 500_000, + # buffer_size: 1 + # ], + # linear: [ + # reductions: 1_000, + # max_random: 1, + # number_of_filters: 100, + # number_of_buffers: 50_000, + # buffer_size: 1 + # ], + # linear: [ + # reductions: 1_000, + # max_random: 5, + # number_of_filters: 10, + # number_of_buffers: 50_000, + # buffer_size: 1 + # ], with_branches: [ struct: [{1, 3}, {3, 2}, {2, 1}], reductions: 100, number_of_buffers: 50_000, buffer_size: 1, max_random: 1 - ], - with_branches: [ - struct: [{1, 2}, {1, 2}, {2, 1}, {2, 1}], - reductions: 100, - number_of_buffers: 500_000, - buffer_size: 1, - max_random: 10 + # ], + # with_branches: [ + # struct: [{1, 2}, {1, 2}, {2, 1}, {2, 1}], + # reductions: 100, + # number_of_buffers: 500_000, + # buffer_size: 1, + # max_random: 10 ] ] - @how_many_tries 5 + @how_many_tries 3 # [ms] @test_timeout 300_000 # the greater the factor is, the more unevenly distributed by the dispatcher will the buffers be diff --git a/benchmark/run.sh b/benchmark/run.sh new file mode 100755 index 000000000..330ebdbbe --- /dev/null +++ b/benchmark/run.sh @@ -0,0 +1,11 @@ +echo "FEATURE BRANCH" +git checkout queue-buffers-when-auto-demand-is-low-v2 +MIX_ENV=benchmark mix do deps.get, deps.compile --force --all, run benchmark/run.exs feature_branch_results + +echo "MASTER BRANCH" +git checkout master +MIX_ENV=benchmark mix do deps.get, deps.compile --force --all, run benchmark/run.exs master_results + +MIX_ENV=benchmark mix run benchmark/compare.exs feature_branch_results master_results + +git checkout queue-buffers-when-auto-demand-is-low-v2 diff --git a/feature_branch b/feature_branch new file mode 100644 index 0000000000000000000000000000000000000000..a5c290703c80da5cb8bf90dabcce14740768233c GIT binary patch literal 554 zcmZoJVPIfj%wQ_#Ezc~;h)*g?%uCKlEzSXovI0ffic5-0lS@Ec<_xAp#zYXwoX7+u zfxIlB3a+Bm6rhUC{Ji2M1_pHjppal*X>L+#QG9+{d{SvzT51tU=5PQ|h8x0m77=*541BSKNn~m$Sus}+O9d76`4hPPN_hr-naZ6lEp@sp8_q^whx8 z)Y8;qpVYkck_?c;_}zd67z`{Ut6T$@%RTb~it^KofbREA&CM^WggD#5`^L`6)jR*V zIr#8u2;Q5P4P>bLuzmk!0AzTJb$+`FlFDy%xNH9i$VdxJYV17>WJK+@+`4BTkkK93 zTABt@Gg-DKGOh#2n6`{>wa-l;WBGk!hI>9h#^Uy^+3glU#><;LdyiTH8Lx9C@0|+= cGM-f1_Azi|mCN9Ac1UJ!s++@%(ohfp0QWhU!+<^>exrx&Fb z7yG8><`-3ho#f`={Ua)5#ZCpnA0u4z_PYo case do {{:value, {:buffer, buffer}}, popped_queue} -> state = PadModel.set_data!(state, pad_ref, :auto_flow_queue, popped_queue) + state = Map.update!(state, :queued_buffers, & &1 + 1) state = BufferController.exec_buffer_callback(pad_ref, [buffer], state) pop_stream_formats_and_events(pad_ref, state) diff --git a/lib/membrane/core/element/event_controller.ex b/lib/membrane/core/element/event_controller.ex index d6c803f2f..8802c0a4f 100644 --- a/lib/membrane/core/element/event_controller.ex +++ b/lib/membrane/core/element/event_controller.ex @@ -131,6 +131,8 @@ defmodule Membrane.Core.Element.EventController do state ) + IO.inspect({state.name, state.queued_buffers, state.unqueued_buffers}, label: "STATS") + Message.send( state.parent_pid, :stream_management_event, diff --git a/lib/membrane/core/element/state.ex b/lib/membrane/core/element/state.ex index 4febe6293..377e0a945 100644 --- a/lib/membrane/core/element/state.ex +++ b/lib/membrane/core/element/state.ex @@ -85,6 +85,8 @@ defmodule Membrane.Core.Element.State do :playback_queue, :pads_data, :satisfied_auto_output_pads, - :awaiting_auto_input_pads + :awaiting_auto_input_pads, + queued_buffers: 0, + unqueued_buffers: 0 ] end diff --git a/master_branch b/master_branch new file mode 100644 index 0000000000000000000000000000000000000000..401b925beb5bc30daa7ba83843fc496efb0a949f GIT binary patch literal 536 zcmZoJVPIfj%wQ_#Ezc~;h)*g?%uCKlEzSXovI0ffic5-0lS@Ec<_xAp#zYXwoX7+u zfxIlB3a+Bm6rhUC{Ji2M1_pHjppal*X>L+#QG9+{d{SvzT51tU=5PQ|h8x0m77=*541BSKNn~m$Sus}+O9d76`4hPPN_hr-naZ6lEp@sp8_q^whx8 z)Y8;qpVYkck_?c;_}qX57z_v_t6T$@gFW*Cit^KofX?Px# literal 0 HcmV?d00001 diff --git a/master_results b/master_results new file mode 100644 index 0000000000000000000000000000000000000000..21133fcf559d515e41086f1c65a910a840948917 GIT binary patch literal 317 zcmZ`zu}TCn5Y6qP#fgQzjh!G|;}0x?3vwQupmmtto!w;JBrr+Hsiohb|6=WD*!u&P zHcsxq?xuJ%Z{{)Yy#^t~Ocm)k>7ZmoU|WTL;_U%%4}GB6hD=LUzzi~$P%ttZSurQ< zSfQQu&@n%;(KJZX^|Fb5kK`L6KG%FX+HvXiGeWkU8`wxT?403WIY^l