Thread (42 messages) 42 messages, 5 authors, 2021-08-11

Re: [RFC Patch bpf-next] bpf: introduce bpf timer

From: Cong Wang <hidden>
Date: 2021-04-01 17:46:05
Also in: bpf

On Wed, Mar 31, 2021 at 11:38 PM Song Liu [off-list ref] wrote:

quoted
On Mar 31, 2021, at 9:26 PM, Cong Wang [off-list ref] wrote:

From: Cong Wang <redacted>

(This patch is still in early stage and obviously incomplete. I am sending
it out to get some high-level feedbacks. Please kindly ignore any coding
details for now and focus on the design.)
Could you please explain the use case of the timer? Is it the same as
earlier proposal of BPF_MAP_TYPE_TIMEOUT_HASH?

Assuming that is the case, I guess the use case is to assign an expire
time for each element in a hash map; and periodically remove expired
element from the map.

If this is still correct, my next question is: how does this compare
against a user space timer? Will the user space timer be too slow?
Yes, as I explained in timeout hashmap patchset, doing it in user-space
would require a lot of syscalls (without batching) or copying (with batching).
I will add the explanation here, in case people miss why we need a timer.
quoted
This patch introduces a bpf timer map and a syscall to create bpf timer
from user-space.

The reason why we have to use a map is because the lifetime of a timer,
without a map, we have to delete the timer before exiting the eBPF program,
this would significately limit its use cases. With a map, the timer can
stay as long as the map itself and can be actually updated via map update
API's too, where the key is the timer ID and the value is the timer expire
timer.

Timer creation is not easy either. In order to prevent users creating a
timer but not adding it to a map, we have to enforce this in the API which
takes a map parameter and adds the new timer into the map in one shot.
I think we don't have to address "creating a timer but not adding it to a map"
problem in the kernel. If the user forgot it, the user should debug it.
Good point. Initially the timer is created in kernel-space, now it is in user
space, so it is probably fine to create it without a map. But we would have
to provide more syscalls for users to manage the timer, so using a map
still has an advantage of not adding more syscalls.

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