IT之家12月28日消息,LinuxKernel在数年前就已经合并了可重启序列(TheRestartableSequences,简称RSEQ),GNUCLibrary已经使用RSEQ对每个CPU数据进行更快的用户空间操作。在明年推出的Linux6。3中将会进一步改进RSEQ。 通过递增每个CPU计数器、修改每个CPU自旋锁、读取写入每个CPU环形缓冲区等情况下避免原子操作(atomicoperation,是指不会被线程调度机制打断的操作),RSEQ可以明显优化性能,从而提供出色的基准测试结果。 主导RSEQ大部分工作的MathieuDesnoyers最近一直致力于扩展RestartableSequencesABI,并公开了NUMAnodeID、mmcid和mmnumacid字段。 IT之家了解到,Desnoyers在补丁介绍中表示:NUMAnodeID允许在libc中实现更快的getcpu(2)。 permemorymapconcurrencyid(mmcid)允许用户空间percpu数据结构进行理想缩放(向下或向上)。 内存映射中分配的并发ID可以通过调度程序跟踪。而这个调度程序根据并发运行的线程数、CPU亲和性(affinity)、应用于这些线程的cpuset和逻辑核心数等等参数进行判断。 NUMAawareconcurrencyid(mmnumacid)与mmcid类似,不同之处在于它跟踪与每个cid相关联的NUMAnodeID。 在NUMA系统上,当用户空间观察到NUMA感知并发ID与NUMA节点相关联时,它保证永远不会更改NUMA节点,除非发生内核级NUMA配置更改。这对于在属于cpuset的进程或一组进程被固定到属于系统NUMA节点子集的一组内核的环境中运行的NUMA感知percpu数据结构很有用。