奇客 Firefox 如何改進(jìn) macOS 版本的響應(yīng)
macOS 用戶可能注意到 Firefox v103 版本的響應(yīng)有了顯著改進(jìn),尤其是在打開大量標(biāo)簽的情況下。Firefox 的內(nèi)存分配器在 macOS 平臺(tái)依賴于系統(tǒng)自帶的 OSSpinLock 去執(zhí)行自旋鎖(spin lock)和互斥量(mutex)功能。但 OSSpinLock 的自旋鎖存在基礎(chǔ)性缺陷,它是在用戶空間內(nèi)執(zhí)行的,用戶空間并不知系統(tǒng)負(fù)載信息,如果是在內(nèi)核空間則能根據(jù)負(fù)載做出合理決策,用戶空間鎖則可能在系統(tǒng)高負(fù)載的情況下執(zhí)行自旋鎖結(jié)果增加了額外負(fù)載。蘋果知道 OSSpinLock 的問題,它提供了 os_unfair_lock 作為 OSSpinLock 的官方替代。但開發(fā)者在測(cè)試后發(fā)現(xiàn) os_unfair_lock 反而會(huì)導(dǎo)致性能下降,進(jìn)一步分析發(fā)現(xiàn) os_unfair_lock 支持內(nèi)核空間鎖,但并沒有在文檔中記錄下來。在啟用了 os_unfair_lock 的內(nèi)核空間自適應(yīng)自旋鎖之后,F(xiàn)irefox 的響應(yīng)有了顯著改進(jìn)。該功能需要 macOS 10.15 及以上版本才能支持。