- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想法是使用argdist
来测量napi_poll()
的延迟持续时间,它返回已处理的数据包数量(称为工作)。 napi_poll()
的执行延迟与处理的数据包数量之比将以直方图的形式给出处理每个数据包所需的平均时间。
我正在使用以下命令
argdist -H 'r:c:napi_poll():u64:$latency/$retval#每个数据包的平均时间 (ns)'
最终给我错误 Failed to Attach BPF to kprobe
并且在 dmesg 中我收到类似 Could not insertprobe at napi_poll+0: -2
我只是好奇为什么当类似的技巧适用于 net_rx_action()
时我无法将 kretprobes
附加到 napi_poll()
?
最佳答案
大多数情况下,Failed to Attach BPF to kprobe
错误是由内联函数引起的。正如 Kprobes documentation 中所述(Kprobes 功能和限制
部分),如果目标函数被内联,Kprobes 将无法附加。自 napi_poll
is static ,它可能已在编译时内联。
您可以检查内核符号是否内联napi_poll
:
$ cat /boot/System.map-`uname -r` | grep " napi_poll"
$
$ cat /boot/System.map-`uname -r` | grep " net_rx_action"
ffffffff817d8110 t net_rx_action
在我的系统上,napi_poll
是内联的,而 net_rx_action
则不是。
根据您的目标,此问题有多种解决方法。
inline
attribute确保 napi_poll
未内联。napi_poll
调用函数。如果 napi_poll
调用的函数提供了足够的信息并且本身未内联,那么它也可以工作。关于linux-kernel - 无法使用密件抄送工具将 eBPF `kretprobes` 附加到 `napi_poll()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47963531/
kprobes 和 kretprobes 都允许您对内核地址中的特定指令进行探测。 如果注册一个 kprobe,pre_handler 在实际函数之前执行,post_handler 在实际函数之后执行
我正在尝试使用 kretprobe void *__kmalloc(size_t size, gfp_t flags); 拦截 kmalloc我可以使用 kretprobe 结构的 handler 成
当我使用 fork 编写一个小脚本时,系统调用返回两次进程(每个进程一次): #include #include int main(int argc, char *argv[]) { in
想法是使用argdist来测量napi_poll()的延迟持续时间,它返回已处理的数据包数量(称为工作)。 napi_poll() 的执行延迟与处理的数据包数量之比将以直方图的形式给出处理每个数据包所
想法是使用argdist来测量napi_poll()的延迟持续时间,它返回已处理的数据包数量(称为工作)。 napi_poll() 的执行延迟与处理的数据包数量之比将以直方图的形式给出处理每个数据包所
我正在跟踪各种内核函数和系统调用,并在它们之间建立可用于某些性能分析的模式。 我注意到的一件事是,有时,即使在我的简单测试应用程序中,它启动了一些使用一些互斥锁的线程,我也不会收到对 kretprob
/*kprobe_example.c*/ #define FUNCNAME alloc_file /* Find something better. printk() isnt recommended
我正在编写一个内核模块来监视一些系统调用,如果调用成功,这些系统调用希望将函数参数返回给用户空间(通过 netlink 套接字)。 jprobe.kp.symbol_name = "rename";
我是一名优秀的程序员,十分优秀!