首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >票证锁定算法性能?

票证锁定算法性能?
EN

Stack Overflow用户
提问于 2012-05-01 14:54:04
回答 1查看 2.7K关注 0票数 3

有人熟悉票证锁定算法,它取代了linux内核中的基本自旋锁算法吗?我希望能找到这方面的专家。我从一些在线消息来源中了解到,票证锁定算法应该更快,因为朴素算法在CPU总线上淹没了所有试图同时获得锁的线程。有人能为我确认/否认吗?

我自己做了一些实验。票证锁定确实是公平的,但它的性能与线程自旋锁算法相当。事实上,它只是稍微慢了一点。

在我看来,一个不公平的算法应该更快一点,因为在早期占据锁的线程完成得更快,使调度程序的工作量更少。

我想对此有更多的看法。如果它不是更快,为什么在内核中实现票证锁,为什么没有在用户空间中使用它?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-07-17 01:44:50

有人熟悉票证锁定算法,它取代了linux内核中的基本自旋锁算法吗?我希望能找到这方面的专家。我从一些在线消息来源中了解到,票证锁定算法应该更快,因为朴素算法在CPU总线上淹没了所有试图同时获得锁的线程。有人能为我确认/否认吗? 我自己做了一些实验。票证锁定确实是公平的,但它的性能与线程自旋锁算法相当。事实上,它只是稍微慢了一点。

笔者认为,售票锁的引入主要是出于公平的考虑。与可伸缩锁相比较,票证锁和自旋锁的速度和可扩展性基本相同。它们都引入了大量的缓存线失效和内存读取,使CPU总线无法工作。

在我看来,一个不公平的算法应该更快一点,因为在早期占据锁的线程完成得更快,使调度程序的工作量更少。

不需要调度程序。票证锁和自旋锁是繁忙的等待锁,在等待时不会被阻塞,但是要检查锁的值。一旦锁被释放,程序就会继续运行。控制流永远不会离开调度程序并返回。我们使用自旋锁而不是块唤醒锁的原因是,阻塞唤醒涉及上下文切换,这很昂贵,相反,我们只是等待和消耗cpu时间变得更便宜。因此,繁忙的等待锁只能在“短”关键部分使用。

我想对此有更多的看法。如果它不是更快,为什么在内核中实现票证锁,为什么没有在用户空间中使用它?谢谢!

它在内核中,因为内核代码也有关键部分,所以需要内核空间锁来保护内核数据。但是当然,您可以实现一个use空间票证锁,并在您的应用程序中使用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10399474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档