高并发的中断下半部tasklet实例解析

最近为了解决一个技术问题,需要用到内核里中断下半部的tasklet机制,使用过程遇到了非常有趣的问题。在解决问题过程中,也逐步加深了对tasklet机制的理解。本文把这些收获记录下来和大家一起分享,经3.10测试通过

一、问题发生的场景

出于排查磁盘IO方面问题的原因,需要利用内核tracepoint技术详细地监测磁盘IO的明细行为信息,如下git为代码示例。

image.png

其中关键部分代码摘要如下。

image.png

这里不必对tracepoint机制进行深究,只需要了解blk_add_trace_rq_insert1回调函数对应于linux内核函数中的block_rq_insert静态探针点,block_rq_insert探针点在__elv_add_request内核函数的开头处打点(trace_block_rq_insert处),如下代码所示。每一次__elv_a

猜你喜欢

转载自yq.aliyun.com/articles/710857