From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Wang Subject: Re: [PATCH RFC 0/3] tun zerocopy stats Date: Thu, 12 Oct 2017 19:21:12 +0800 Message-ID: References: <20171006222516.90654-1-willemdebruijn.kernel@gmail.com> <20171009.205228.714368596112967819.davem@davemloft.net> <20171010.103918.358738948563291074.davem@davemloft.net> <3ef92f5f-b242-a66a-860f-31da29216dc4@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: David Miller , Network Development , "Michael S. Tsirkin" , Willem de Bruijn To: Willem de Bruijn Return-path: Received: from mx1.redhat.com ([209.132.183.28]:33116 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752410AbdJLLVS (ORCPT ); Thu, 12 Oct 2017 07:21:18 -0400 In-Reply-To: Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 2017年10月12日 05:44, Willem de Bruijn wrote: > On Tue, Oct 10, 2017 at 11:15 PM, Jason Wang wrote: >> >> On 2017年10月11日 03:11, Willem de Bruijn wrote: >>> On Tue, Oct 10, 2017 at 1:39 PM, David Miller wrote: >>>> From: Willem de Bruijn >>>> Date: Tue, 10 Oct 2017 11:29:33 -0400 >>>> >>>>> If there is a way to expose these stats through vhost_net directly, >>>>> instead of through tun, that may be better. But I did not see a >>>>> suitable interface. Perhaps debugfs. >>>> Please don't use debugfs, thank you :-) >>> Okay. I'll take a look at tracing for on-demand measurement. >> >> This reminds me a past series that adding tracepoints to vhost/net[1]. It >> can count zero/datacopy independently and even contains a sample program to >> show the stats. > Interesting, thanks! > > For occasional evaluation, we can also use a bpf kprobe for the time being: > > bpf_program = """ > #include > #include > > BPF_ARRAY(count, u64, 2); > > void inc_counter(struct pt_regs *ctx) { > bool success; > int key; > u64 *val; > > success = PT_REGS_PARM2(ctx); > key = success ? 0 : 1; > val = count.lookup(&key); > if (val) > lock_xadd(val, 1); > } > """ > > b = bcc.BPF(text=bpf_program) > b.attach_kprobe(event="vhost_zerocopy_callback", fn_name="inc_counter") > > time.sleep(5) > > print("vhost_zerocopy_callback: Y:%d N:%d" % > (b["count"][ctypes.c_int(0)].value, > b["count"][ctypes.c_int(1)].value)) Thanks for the tips, looks flexible.