On 17 Jan 2025, at 15:25, Adrian Moreno wrote:
> This patch makes it possible to display only succeeded or errored
> upcalls.
>
> Signed-off-by: Adrian Moreno <[email protected]>
In general, this looks good to me. One comment below.
//Eelco
> ---
> utilities/usdt-scripts/upcall_monitor.py | 42 +++++++++++++++++-------
> 1 file changed, 30 insertions(+), 12 deletions(-)
>
> diff --git a/utilities/usdt-scripts/upcall_monitor.py
> b/utilities/usdt-scripts/upcall_monitor.py
> index c985dd5b3..333e23d51 100755
> --- a/utilities/usdt-scripts/upcall_monitor.py
> +++ b/utilities/usdt-scripts/upcall_monitor.py
> @@ -62,6 +62,9 @@
> # Set maximum packet size to capture, default 64
> # -w PCAP_FILE, --pcap PCAP_FILE
> # Write upcall packets to specified pcap file.
> +# -r, --result {error,succeed,both}
> +# Display only events with the given result,
> +# default: both
> #
> # The following is an example of how to use the script on the running
> # ovs-vswitchd process with a packet and flow key dump enabled:
> @@ -157,6 +160,7 @@ void report_missed_event() {
> __sync_fetch_and_add(value, 1);
> }
>
> +#if <INSTALL_OVS_UPCALL_RECV_PROBE>
> int do_trace(struct pt_regs *ctx) {
> uint64_t addr;
> uint64_t size;
> @@ -198,7 +202,9 @@ int do_trace(struct pt_regs *ctx) {
> events.ringbuf_submit(event, 0);
> return 0;
> };
> +#endif
>
> +#if <INSTALL_OVS_UPCALL_DROP_PROBE>
> struct inflight_upcall {
> u32 cpu;
> u32 upcall_type;
> @@ -267,6 +273,7 @@ int kretprobe__ovs_dp_upcall(struct pt_regs *ctx)
> events.ringbuf_submit(event, 0);
> return 0;
> }
> +#endif
> """
>
>
> @@ -526,6 +533,10 @@ def main():
> parser.add_argument("-w", "--pcap", metavar="PCAP_FILE",
> help="Write upcall packets to specified pcap file.",
> type=str, default=None)
> + parser.add_argument("-r", "--result",
> + help="Display only events with the given result, "
> + "default: both",
> + choices=["error", "succeed", "both"], default="both")
I think this should be success, succeed sounds odd to me in this context.
> options = parser.parse_args()
>
> @@ -560,20 +571,23 @@ def main():
> #
> # Attach the usdt probe
> #
> - u = USDT(pid=int(options.pid))
> - try:
> - u.enable_probe(probe="recv_upcall", fn_name="do_trace")
> - except USDTException as e:
> - print("ERROR: {}"
> - "ovs-vswitchd!".format(
> - (re.sub('^', ' ' * 7, str(e), flags=re.MULTILINE)).strip().
> - replace("--with-dtrace or --enable-dtrace",
> - "--enable-usdt-probes")))
> - sys.exit(-1)
> + usdt = []
> + if options.result in ["succeed", "both"]:
> + u = USDT(pid=int(options.pid))
> + try:
> + u.enable_probe(probe="recv_upcall", fn_name="do_trace")
> + usdt.append(u)
> + except USDTException as e:
> + print("ERROR: {}"
> + "ovs-vswitchd!".format(
> + (re.sub('^', ' ' * 7, str(e), flags=re.MULTILINE)).
> + strip().replace("--with-dtrace or --enable-dtrace",
> + "--enable-usdt-probes")))
> + sys.exit(-1)
>
> #
> # Uncomment to see how arguments are decoded.
> - # print(u.get_text())
> + # print(u.get_text())
unnecessary change.
> #
>
> #
> @@ -583,8 +597,12 @@ def main():
> source = source.replace("<MAX_KEY_VAL>", str(options.flow_key_size))
> source = source.replace("<BUFFER_PAGE_CNT>",
> str(options.buffer_page_count))
> + source = source.replace("<INSTALL_OVS_UPCALL_RECV_PROBE>", "1"
> + if options.result in ["succeed", "both"] else
> "0")
> + source = source.replace("<INSTALL_OVS_UPCALL_DROP_PROBE>", "1"
> + if options.result in ["error", "both"] else "0")
>
> - b = BPF(text=source, usdt_contexts=[u], debug=options.debug)
> + b = BPF(text=source, usdt_contexts=usdt, debug=options.debug)
>
> #
> # Print header
> --
> 2.48.1
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev