numa balance
在上一节中我们对内存分配策略做了一定的了解,并且留了一个话题 -- numa balance。也就是内核为了在进程迁移过程中保持内存分配策略做的工作。
进程在运行过程中有可能会迁移到不同的cpu上执行,如果被迁移到的cpu和内存之前不满足mempolicy,那么numa balance就会尝试将用符合策略的内存来替换。所以整个过程分为两个步骤:
扫描内存是否符合策略,并将不符合的pte设置为pronnone
通过numa hinting page fault替换页
扫描进程空间
说到扫描就有一个扫描时机,当使用cfs调度时,这个时机由task_tick_fair时刻触发。经过一系列的检查后,会插入curr->numa_work等待执行。
这个numa_work的回调函数是task_numa_work,而这个函数的核心就是扫描符合条件的vma,并通过change_prot_numa把对应的pte属性添加上PAGE_NONE。
numa hinting page fault
Last updated