Hasty Briefsbeta

双语

Bringing restartable sequences out of the niche

8 months ago
  • #concurrency
  • #kernel
  • #performance
  • 可重启序列(rseq)通过允许关键代码段在中断时重新执行,帮助用户空间应用程序高效实现无锁算法。
  • 内核通过rseq()系统调用设置的共享内存区域,向用户空间传递CPU和NUMA节点信息,从而优化了sched_getcpu()等功能。
  • 最近对时间片扩展(允许关键代码段线程请求延长CPU时间)的研究,使可重启序列获得更多关注。
  • Thomas Gleixner发现可重启序列实现中的性能问题,如不必要的位操作和过时功能,从而推动了优化工作。
  • Gleixner的改进包括用简单的布尔标志替代复杂的事件跟踪,并移除冗余的用户空间内存访问,提升了性能。
  • 内核现在以不同方式处理可重启序列中的系统调用和中断,这可能导致误用该功能的应用程序出现问题。
  • 调试版内核强制执行严格规则(如终止在关键代码段内发起系统调用的进程),以确保可重启序列的正确使用。
  • 随着Gleixner持续审查和改进可重启序列代码,预计将会有更多优化和修复。