netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexei Starovoitov <alexei.starovoitov@gmail.com>
To: Song Liu <songliubraving@fb.com>
Cc: bpf@vger.kernel.org, netdev@vger.kernel.org, ast@kernel.org,
	daniel@iogearbox.net, kernel-team@fb.com
Subject: Re: [PATCH v7 bpf-next 3/3] bpf: add selftest for BPF_ENABLE_STATS
Date: Tue, 28 Apr 2020 21:57:20 -0700	[thread overview]
Message-ID: <20200429045720.kl737inpxduutemn@ast-mbp.dhcp.thefacebook.com> (raw)
In-Reply-To: <20200429035841.3959159-4-songliubraving@fb.com>

On Tue, Apr 28, 2020 at 08:58:41PM -0700, Song Liu wrote:
> +
> +	skel = test_enable_stats__open_and_load();
> +	if (CHECK(!skel, "skel_open_and_load", "skeleton open/load failed\n"))
> +		return;
> +
> +	stats_fd = bpf_enable_stats(BPF_STATS_RUNTIME_CNT);

Just realized that the name is wrong.
The stats are enabling run_cnt and run_time_ns.
runtime_cnt sounds like 'snark' from 'The Hunting of the Snark' :)
May be BPF_STATS_RUN_TIME ?

> +	if (CHECK(stats_fd < 0, "get_stats_fd", "failed %d\n", errno)) {
> +		test_enable_stats__destroy(skel);
> +		return;
> +	}
> +
> +	err = test_enable_stats__attach(skel);
> +	if (CHECK(err, "attach_raw_tp", "err %d\n", err))
> +		goto cleanup;
> +
> +	/* generate 100 sys_enter */
> +	for (i = 0; i < 100; i++)
> +		usleep(1);
> +
> +	test_enable_stats__detach(skel);
> +
> +	prog_fd = bpf_program__fd(skel->progs.test_enable_stats);
> +	memset(&info, 0, info_len);
> +	err = bpf_obj_get_info_by_fd(prog_fd, &info, &info_len);
> +	if (CHECK(err, "get_prog_info",
> +		  "failed to get bpf_prog_info for fd %d\n", prog_fd))
> +		goto cleanup;
> +	if (CHECK(info.run_time_ns == 0, "check_stats_enabled",
> +		  "failed to enable run_time_ns stats\n"))
> +		goto cleanup;
> +
> +	bss_fd = bpf_map__fd(skel->maps.bss);
> +	err = bpf_map_lookup_elem(bss_fd, &zero, &count);

'count' is a global var. It's accessible directly via skeleton.
No need for map_lookup.
Even after __detach(skel) the global data is still valid.

> +	if (CHECK(err, "map_lookup_elem",
> +		  "failed map_lookup_elem for fd %d\n", bss_fd))
> +		goto cleanup;
> +
> +	CHECK(info.run_cnt != count, "check_run_cnt_valid",
> +	      "invalid run_cnt stats\n");

what happens if there are other syscalls during for(i<100) loop?
The count will still match, right?
Then why 100 ? and why usleep() at all?
test_enable_stats__attach() will generate at least one syscall.

> +
> +cleanup:
> +	test_enable_stats__destroy(skel);
> +	close(stats_fd);

May be close(stats_fd) first.
Then test_enable_stats__attach(skel); again.
Generate few more syscalls and check that 'count' incrementing,
but info.run_cnt doesnt ?
That check assumes that sysctl is off. Overkill?

  reply	other threads:[~2020-04-29  4:57 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29  3:58 [PATCH v7 bpf-next 0/3] bpf: sharing bpf runtime stats with Song Liu
2020-04-29  3:58 ` [PATCH v7 bpf-next 1/3] bpf: sharing bpf runtime stats with BPF_ENABLE_STATS Song Liu
2020-04-29  4:39   ` Alexei Starovoitov
2020-04-29  3:58 ` [PATCH v7 bpf-next 2/3] libbpf: add support for command BPF_ENABLE_STATS Song Liu
2020-04-29  5:32   ` Andrii Nakryiko
2020-04-29  5:36     ` Song Liu
2020-04-29  3:58 ` [PATCH v7 bpf-next 3/3] bpf: add selftest for BPF_ENABLE_STATS Song Liu
2020-04-29  4:57   ` Alexei Starovoitov [this message]
2020-04-29  5:32     ` Song Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200429045720.kl737inpxduutemn@ast-mbp.dhcp.thefacebook.com \
    --to=alexei.starovoitov@gmail.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=kernel-team@fb.com \
    --cc=netdev@vger.kernel.org \
    --cc=songliubraving@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).