On 1/2/23 14:12, Eelco Chaudron wrote:


On 23 Dec 2022, at 18:05, Adrian Moreno wrote:

On 12/23/22 10:49, Eelco Chaudron wrote:


On 22 Dec 2022, at 18:42, Adrian Moreno wrote:

Hi Eelco,

I am not done reviewing this patch. I'm still tyring to figure why I can't make 
the pahole thing work so I'll continue tomorrow. For now, see some questions 
below.

Are you sure you are on the next branch, not on main, that was my issue earlier 
:)

On 12/22/22 09:55, Eelco Chaudron wrote:
This patch adds a Python script that can be used to analyze the
revalidator runs by providing statistics (including some real time
graphs).

The USDT events can also be captured to a file and used for
later offline analysis.

The following blog explains the Open vSwitch revalidator
implementation and how this tool can help you understand what is
happening in your system.

https://developers.redhat.com/articles/2022/10/19/open-vswitch-revalidator-process-explained

Signed-off-by: Eelco Chaudron <[email protected]>
---

v2: Added note that script only works a with single datapath configured.
v3: Updated patch to use pahole to get OVS structures dynamically from
       debug data.
v4: Added script to usdt_SCRIPTS

    Documentation/topics/usdt-probes.rst    |   84 +++
    ofproto/ofproto-dpif-upcall.c           |   11
    utilities/automake.mk                   |    4
    utilities/usdt-scripts/reval_monitor.py |  858 
+++++++++++++++++++++++++++++++
    4 files changed, 956 insertions(+), 1 deletion(-)
    create mode 100755 utilities/usdt-scripts/reval_monitor.py

diff --git a/Documentation/topics/usdt-probes.rst 
b/Documentation/topics/usdt-probes.rst
index 7ce19aaed..bc250e723 100644
--- a/Documentation/topics/usdt-probes.rst
+++ b/Documentation/topics/usdt-probes.rst
@@ -214,6 +214,10 @@ Available probes in ``ovs_vswitchd``:
    - dpif_recv:recv_upcall
    - main:poll_block
    - main:run_start
+- revalidate_ukey\_\_:entry
+- revalidate_ukey\_\_:exit
+- udpif_revalidator:start_dump
+- udpif_revalidator:sweep_done
       dpif_netlink_operate\_\_:op_flow_del
@@ -327,6 +331,7 @@ probe main:run_start
    ~~~~~~~~~~~~~~~~~~~~
     **Description**:
+
    The ovs-vswitchd's main process contains a loop that runs every time some 
work
    needs to be done. This probe gets triggered every time the loop starts from 
the
    beginning. See also the ``main:poll_block`` probe below.
@@ -344,6 +349,7 @@ probe main:poll_block
    ~~~~~~~~~~~~~~~~~~~~~
     **Description**:
+
    The ovs-vswitchd's main process contains a loop that runs every time some 
work
    needs to be done. This probe gets triggered every time the loop is done, and
    it's about to wait for being re-started by a poll_block() call returning.
@@ -358,6 +364,84 @@ See also the ``main:run_start`` probe above.
    - ``utilities/usdt-scripts/bridge_loop.bt``
     +revalidate_ukey\_\_:entry
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**Description**:
+
+This probe gets triggered on entry of the revalidate_ukey__() function.
+

Why not trace the begining and end of revalidate_ukey so we can also detect 
when a flow is evicted because should_revalidate() returns false?

Because the need for this trace event is to capture the actual revalidate of a 
ukey, not the potential one. If we need this we can add a more specific one, 
but I think Kevin’s probe will do this.


So, the main goal is to perform timing measurements? I'm asking because if you 
really want the result of the revalidation, moving the PROBE a fiew lines up 
and adding the reval_context might help providing insights into what actually 
happened (i.e: the computed odp_actions).

Not sure if I get it… So you mean moving the probe to revalidate_ukey() entry 
and exit? This will require an additional flag to tell us if we did the 
revalidate, and it might also increase the number of actual calls to the probe. 
Every reval interval vs only the time we do the actual revalidate of the flow.

With this in mind, I would rather have two separate probes, or do you have a 
different vision?


No, I agree we should have two separate probes. My question was: do you see this probe used only for timing/profiling purposes or also for tools to be able to introspect the results of revalidations? If you see the latter useful it might be worth considering moving the probe before we call "netflow_flow_clear" and adding "(struct reval_context *) &ctx" as parameter since the context seems to hold useful information such as the odp_actions and the xlated flow.

Thanks.
--
Adrián Moreno

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to