Linus Torvalds 再改页面锁逻辑,把 if 替换为 while

域名2025-11-05 13:55:23653

几个月前,改页Linus Torvalds 在 Linux 5.9 版本中重写了 wait_on_page_bit_common() 相关逻辑,面锁原因是逻辑为了解决页面锁竞争的公平性问题。

在这之前,改页页面锁持有者在执行 ”unlock_page()" 时仅会唤醒等待队列里的面锁一个独占进程(FIFO,且该进程正在执行 “lock_page” ),逻辑但是该进程不一定正在运行,特别是改页在负载情况下,只有其获得 CPU 时间才能真正运行,面锁与此同时,逻辑其它正在运行的改页没有进入等待队列的进程可以直接获得页面锁,这个过程虽然依然有效利用了页面,面锁但会导致非常不公平的逻辑情况,被唤醒的网站模板改页等待进程运行后发现页面锁没有释放,于是面锁重新进入等待队列,而且是逻辑最后一个,极端情况下,这个进程可能会重复该过程以至于等待数十秒。

因此 Linus Torvalds 修改为在唤醒等待进程时同时会把锁交给它,无论它是否正在运行。

然而,这并没有完全解决问题。自这之后,偶尔会发生 BUG_ON() ,因为上述 “wait-to-set” 的过程并非原子性的,所以被唤醒的进程仍有可能被“第三者插足”。如果要把 “wait-to-set” 这一过程修改为原子性操作,站群服务器需要修改大约 50 个函数,因此,在上周,Linus Torvalds 把 wait_on_page_writeback () 函数中的 if 修改为 while 来解决这一问题。而这基本上又回到了最开始的情况,不过发生频率要低得多,因此仍然可控。

不过,据外国媒体报道,其在该版上的基准测试中, PostgreSQL 性能下降了 5%-10%,对此,Linus Torvalds 认为这种下降并非由该补丁引起,可能和其测试模型或机器性能有关。

Linux 5.11-rc3 现已发布,感兴趣的同学可以进行相关测试

更多详细内容查看以下 commit:

mm: make wait_on_page_writeback() wait for multiple pending writebacks mm: rewrite wait_on_page_bit_common() logic

本文转自OSCHINA

本文标题:Linus Torvalds 再改页面锁逻辑,源码库把 if 替换为 while

本文地址:https://www.oschina.net/news/126262/linus-torvalds-change-if-2-while

本文地址:http://www.bhae.cn/news/102a20099697.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

系统启动的时候出现 boot from CD: no such device XXXXXXXXXXXXXXXXX grub rescue>在老爷机上google了一阵,发现原来我以为天大的事情不过就是小事一碟,而且还是很常见的那种,汗颜了··· 于是显示按照网上的说法用命令去更新了下启动位置, grub rescue>set grub一般都是在hd0的分区 杯具再次发生了,别人的解决办法到了我这里竟然不惯用了。再次提醒no such service 再次询问google,终于发现一篇:http://www.jb51.net/os/Ubuntu/35922.html 之前也怀疑是引导出了问题,导致系统启动出现错误了,这里提到了MBR这个损坏了,需要修复下,开始的时候我还一阵惆怅,因为我现在系统都进不了不知道该怎么修复,后来发现,之前刻的一张ubuntu安装盘派上了用场,文中作者用的是usb启动,而我省事,直接用该系统盘。 1、插入系统盘,重启系统 2、进入ubuntu的安装界面,不要安装,直接选折试用, 3、进入之后重新安装下mbr即可命令如下: sudo apt-get install lilo 4、退出系统,退出光盘,重启系统··· 终于杯具变喜剧了········

以小觅机器人(深度分析以小觅机器人的功能与优势)

以退热降温仪的功效与使用方法(掌握正确方法有效降温保健康)

夏普55A——革新科技的新一代电视机(揭秘夏普55A的超强画质与智能功能)

我们知道你想拥有一个有格调的ubuntu桌面来炫耀一下 :)在linxu上费一点点劲搭建一个出色的工作环境是很简单的。今天,我们(重新)着重来探讨长驻你脑海中那些东西 :一款自由,开源,能够给你的截图增添光彩的工具。它叫 Live Wallpaper (正如你猜的那样) ,它用由OpenGL驱动的一款动态桌面背景来代替标准的静态桌面背景。最好的一点是:在ubuntu上安装它很容易。动态壁纸主题Live Wallpaper 不是此类软件唯一的一款,但它是最好的一款之一。它附带很多不同的开箱即用的主题。没有桌面图标要想在Ubuntu 14.04 LTS 和更高版本中安装 Live Wallpaper,你首先需要把官方PPA添加进你的软件源。 最快的方法是在终端中执行下列命令:复制代码代码如下:复制代码代码如下:让人不爽的是,安装完成后,程序不会自动打开托盘图标,而仅仅将它自己加入自动启动项,所以,快速来个注销 ->登陆它就会出现啦。总结假如你正处在无聊呆板的桌面中,幻想有一个更有活力的生活,不妨试试。另外,告诉我们你想看到什么样的动态壁纸!

以爱立顺手机怎么样?(全面评测最新款爱立顺手机!)

以喂喂通讯为例,探讨移动通信技术的发展与应用(喂喂通讯)

华为荣耀3c联通版的优势和特点(完美结合卓越性能轻松畅享)

友情链接

滇ICP备2023000592号-9