【问题标题】:Linux kernel: the cost of immediate deschedulingLinux 内核:立即取消调度的代价
【发布时间】:2010-02-15 15:58:29
【问题描述】:

http://lkml.indiana.edu/hypermail/linux/kernel/0103.1/0030.html我了解到linux中一种新型的互斥锁,一种adaptive_np:

PTHRED_MUTEX_ADAPTIVE_NP 是一个新的 用于高的互斥锁 以牺牲吞吐量为代价 公平甚至 CPU 周期。这个 互斥锁不会将所有权转让给 等待线程,而是允许 竞赛。此外,通过 SMP 内核, 锁定操作使用旋转到 重试锁定以避免成本 立即取消计划。

提到了“立即取消计划的成本”。这个费用是多少? (就 cpu ticks 而言;TLB、TSS、smth else reloading)内核在“立即取消调度请求”和重新调度回运行状态之间做了什么?

如何进行显式取消计划以及如何衡量其成本?

【问题讨论】:

    标签: linux linux-kernel scheduling


    【解决方案1】:

    看起来它只是一个轻量级联锁,旨在让线程避开调度程序。

    这个想法是用在自旋锁中花费的希望较短的时间来替换相对繁重的基于上下文切换的操作。

    忽略“新”的使用,自旋锁与山丘一样古老。我想,大约 10 年前,它对那个 pthread 库来说是新的。

    “显式取消调度”可能与上下文切换相同,因此您可以通过让两个线程yield() CPU 相互连接一百万次并测量运行时间来衡量这一点。

    【讨论】:

    • 据我了解,它更多的是“在获得服务时被忽略”而不是“避免”。父母(AFAIK)的优先级仍然发挥作用。它应该是大型 SMP 机器上 futex 地狱的答案。让内核在没有实际仲裁的情况下进行仲裁,或者类似的东西。无论如何,简单地表达它+1。
    • 上下文切换有多重?重新调度器的计算量有多大?我认为,yield() 不会立即启动其他线程,而是会等待“sched tick”,1s / HZ = 1 毫秒
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    相关资源
    最近更新 更多