一句话:提出首个系统化方法检测 Linux 内核中因保守使用非睡眠操作而造成的性能缺陷。
Linux 内核同时提供可睡眠与非睡眠两类等待操作,但只有非睡眠操作能在原子上下文中使用。要判断某处代码是否可能在原子上下文中执行,需要完整的跨过程流分析,且常涉及函数指针,分析难度大。因此开发者可能过于保守,在非原子上下文中也使用非睡眠操作;这类操作会无效占用 CPU,损害系统性能。此前尚不存在系统化检测此类“保守非睡眠”(CNS, conservative non-sleep)缺陷的方法。论文针对该问题提出 DCNS,其核心是结合跨过程流分析与函数指针处理来识别原子上下文,从而定位本可安全使用睡眠操作却仍使用非睡眠操作的位置。给出的摘要未描述具体实现与评估细节。
For waiting, the Linux kernel offers both sleep-able and non-sleep operations. However, only non-sleep operations can be used in atomic context. Detecting the possibility of execution in atomic context requires a complete inter-procedural flow analysis, often involving function pointers. Developers may thus conservatively use non-sleep operations even outside of atomic context, which may damage system performance, as such operations unproductively monopolize the CPU. Until now, no systematic approach has been proposed to detect such conservative non-sleep (CNS) defects.