今天看啥  ›  专栏  ›  OSC开源社区

Linus Torvalds再改页面锁逻辑

OSC开源社区  · 公众号  · 程序员  · 2021-01-12 17:30
喜欢就关注我们吧!几个月前,Linus Torvalds 在 Linux 5.9 版本中重写了 wait_on_page_bit_common() 相关逻辑,原因是为了解决页面锁竞争的公平性问题。在这之前,页面锁持有者在执行 ”unlock_page()" 时仅会唤醒等待队列里的一个独占进程(FIFO,且该进程正在执行 “lock_page” ),但是该进程不一定正在运行,特别是在负载情况下,只有其获得 CPU 时间才能真正运行,与此同时,其它正在运行的没有进入等待队列的进程可以直接获得页面锁,这个过程虽然依然有效利用了页面,但会导致非常不公平的情况,被唤醒的等待进程运行后发现页面锁没有释放,于是重新进入等待队列,而且是最后一个,极端情况下,这个进程可能会重复该过程以至于等待数十秒。因此 Linus Torvalds 修改为 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照