内核配置
MM
内存管理子系统
NUMA_MIGRATION
NUMA内存迁移.
当使用NUMA时,若 node 0的进程经常访问node 1的memory, NUMA迁移会把node 1的Page迁移过来.
PREEMPT
内核抢占模型
从PREEMPT_NONE -> PREEMPT_VOLUNTARY -> CONFIG_PREEMPT, 抢占越来越积极
PREEMPT的三个是 完全抢占 如果要抢占就尽快抢占.PREEMPT_LAZY是 先标记抢占 如果要抢占 等到合适的时候抢占.PREEMPT_RT和前面两个不一样,前两种调度的平均latency很好,但可能偶尔出现一个很大的lantency.
RT对最坏复杂度做了防范.
RT做了非常多的改造来防止这种情况: 比如spinlock变成可睡眠与被抢占, IRQ调度改造等.
PREEMPT_NONE
通常不会抢占
PREEMPT_VOLUNTARY
内核的一些位置有cond_resched, 这些位置代表: 如果有高优先级的任务 可以考虑调度.
开启这个选项代表 如果有这些位置 可以考虑调度
CONFIG_PREEMPT
只要当前执行位置允许抢占, scheduler 可以更积极地让出 CPU.
PREEMPT_LAZY
CONFIG_PREEMPT_DYNAMIC
编译内核后 可以在启动的cmdlien指定不同的抢占行为.
CONFIG_PREEMPT_RT
sched
调度器