Behavior of pinned perf event array

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Daniel, 

We are looking at sharing perf events amount multiple processes via 
pinned perf event array. However, we found this doesn't really work 
as the perf event is removed from the map when the struct file is
released from user space (in perf_event_fd_array_release). This 
means, the pinned perf event array can be shared among multiple 
process. But each perf event still has single owner. Once the owner 
process closes the fd (or terminates), the perf event is removed 
from the array. I went thought the history of the code and found 
this behavior is actually expected (commit 3b1efb196eee). 

In our use case, however, we want to share the perf event among 
different processes. I think we have a few options to achieve this:

1. Introduce a new flag for the perf event map, like BPF_F_KEEP_PE_OPEN.
   Once this flag is set, we should not remove the fd on struct file 
   release. Instead, we remove fd in map_release_uref. 

2. Allow a different process to hold reference to the perf_event 
   via pinned perf event array. I guess we can achieve this by 
   enabling for BPF_MAP_UPDATE_ELEM perf event array. 

3. Other ideas?

Could you please let us know your thoughts on this?

Thanks,
Song




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux