Thread (4 messages) flat view 4 messages, 2 authors, 2014-07-30

Re: [PATCH RFC v3 net-next 3/3] samples: bpf: eBPF dropmon example in C

From: Frank Ch. Eigler <hidden>
Date: 2014-07-30 17:39:08
Also in: lkml, netdev

Hi, Alexei -
My understanding of systemtap is that the whole .stp script is converted
to C, compiled as .ko and loaded, so all map walking and prints are
happening in the kernel. Similarly for ktap which has special functions
in kernel to print histograms.
That is correct.
I thought dtrace printf are also happening from the kernel. What is
the trick they use to know which pieces of dtrace script should be
run in user space?
It appears as though the bytecode language running in the kernel sends
some action commands back out to userspace, not just plain data.

In ebpf examples there are two C files: one for kernel with ebpf isa
and one for userspace as native. I thought about combining them,
but couldn't figure out a clean way of doing it.
(#if ?)

quoted
What kind of locking/serialization is provided by the ebpf runtime
over shared variables such as my_map?
it's traditional rcu scheme.
OK, that protects the table structure, but:
[...] In such case concurrent write access to map value can be done
with bpf_xadd instruction, though using normal read/write is also
allowed. In some cases the speed of racy var++ is preferred over
'lock xadd'.
... so concurrency control over shared values is left up to the
programmer.
There are no lock/unlock function helpers available to ebpf
programs, since program may terminate early with div by zero
for example, so in-kernel lock helper implementation would
be complicated and slow. It's possible to do, but for the use
cases so far there is no need.
OK, I hope that works out.  I've been told that dtrace does something
similiar (!)  by eschewing protection on global variables such as
strings.  In their case it's less bad than it sounds because they are
used to offloading computation to userspace or to store only
thread-local state, and accept the corollary limitations on control.

(Systemtap does fully & automatically protect shared variables, even
in the face of run-time script errors.)


- FChE
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help