Linux内核中的工作延迟机制:任务和工作队列详解
1. ksoftirqd线程概述
在运行 top 命令后,你会看到一些 ksoftirqd/n 条目,其中 n 是运行 ksoftirqd 线程的CPU的逻辑索引。由于 ksoftirqd 在线程上下文中运行,它们类似于经典的进程或线程,并且也会竞争CPU资源。如果 ksoftirqd 长时间占用CPU,这可能表明系统处于高负载状态。
2. 任务(Tasklets)
任务是基于 HI_SOFTIRQ 和 TASKLET_SOFTIRQ 软中断构建的下半部机制。基于 HI_SOFTIRQ 的任务会在基于 TASKLET_SOFTIRQ 的任务之前运行。任务本质上是软中断,遵循相同的规则,但相同的两个任务不会同时运行。
2.1 任务的数据结构
任务由 struct tasklet_struct 结构表示,定义在 <linux/interrupt.h> 中:
struct tasklet_struct {
struct tasklet_struct *next; /* 列表中的下一个任务 */
unsigned long state;
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



