当前位置:首页 > 嵌入式 > Linux阅码场
[导读]关注了就能看到更多这么棒的文章哦~SynchronizedGPUpriorityschedulingByJonathanCorbetOctober22,2021DeepLassistedtranslationhttps://lwn.net/Articles/873334/在Uni...

关注了就能看到更多这么棒的文章哦~


Synchronized GPU priority scheduling

By Jonathan Corbet
October 22, 2021
DeepL assisted translation
https://lwn.net/Articles/873334/


在 Unix 之类的系统很早期的时候,就已经实现了进程优先级的概念,优先级高的进程可以得到更多的 CPU 时间来完成它们的工作。如今这里的实现方式已经发生了很大变化,开始有了一些替代方案(比如 deadline scheduling)可用在一些特殊场景,但其核心的优先级概念(或者反序的 niceness)本质上是没有变化的。然而,如今的世界里越来越多的计算工作是在 CPU 之外完成的,那我们应该如何改进这一点呢?Tvrtko Ursulin 已经准备了一组 patch set,展示了如何将 nice 机制也扩展到 GPU 这边来用起来。


正如 Ursulin 所描述的情况,"目前的处理方式似乎越来越多地由 pipeline 来构成,计算工作是在多个硬件设备上来完成的"。内核直接控制了那些需要依靠 CPU 计算来完成的工作的 CPU 时间的分配。但是,越来越多的计算工作被转移(offload)到 GPU、AI 加速器或者用于加密货币挖掘的外设上。这些处理器虽然能力很强,但也可能会因为给它们的工作过多而超出了自己的能力。如果它们运行 workload 的方式与内核对进程优先级的想法不一致,那么就会出现用户意料之外的结果。


Ursulin 举了一个例子,Chrome 浏览器会把目前不在前台(foreground)的 tab 的优先级。但是,如果其中一个 background tab 在 GPU 中做了大量的渲染(render)工作,它可能会拖慢当前 foreground tab 的响应速度,尽管 background 工作应该还是要以低优先级来运行。事实证明,至少其中一些 GPU (比如某些英特尔 i915 版本),可以在内部根据优先级进行调度。但这需要提前告知 GPU 相关的优先级,而目前还没有办法将这些在用户空间做出的决定传达给 GPU。


Ursulin 的方案是在 i915 驱动中添加 "context nice" 的概念。这个值与提交这个 job 的进程的优先级相关联,会在有相应能力的 GPU 中使用,来影响该工作的调度情况。这种方法是有效果的,但如果 CPU 上的进程的优先级发生变化了就不再准确了。如果浏览器切换到了一个新的 tab 并想提高其优先级,那么继续在 GPU 侧以较低的优先级来运行相关的工作,肯定会让用户不满意的。为了避免这个问题,Ursulin 的 patch set 为调度器添加了一个新的 notifier 机制。这样一来,每当一个进程的优先级发生变化时,相关的内核子系统就可以得到通知。然后,i915 驱动会跟这个 notifier 关联起来,从而可以修改相应的优先级信息,这样就能确保 GPU 上运行 job 的那些进程的 CPU 优先级总是有效的。


notifier 目前看来是这组 patch set 中最有争议的部分。Ursulin 指出,每当一个进程的优先级发生变化时,从 scheduler 的代码深处来调用设备驱动程序,可能会引入 security 问题。John Wangghui 建议可以增加一个单独的 "I/O nice" 值来控制 GPU 上的优先级,这个值跟现存的用于 block I/O 的 "ionice" 并不相同,但其功能类似。相反,Barry Song 抱怨说,使用简单的 nice 值是不够的,因为它没有考虑 cgroup 或者之前累计运行的时间对占有 CPU 时间比例的影响。这可能导致 GPU 上的调度结果与 CPU 上的情况不一致。


Ursulin 基本上同意 Song 的批评,但也声称,即使只是使用进程的 nice 值,也比在 GPU 上完全不控制执行优先权要好。这个初版的实现可以在今后有必要的时候进行扩展来添加 cgroup 等支持。同时,他得出结论,也许 scheduler notifier 根本就是没有必要的。直接使用提交 job 给 GPU 时当前的进程的优先级也能得到类似的效果,主要的区别是,优先级的改变将不会影响那些已经交给 GPU 的 job。这个 patch set 的下一个版本中估计会放弃 notifier。


Ursulin 做了一些简单的基准测试,其中一个图形应用程序与一个 "GPU hog" 进程一起运行。如果给 GPU hog 一个低优先级,那么图形应用程序比起没有优先级控制时能生成更高的帧率。他总结说:"所以看起来这个功能确实可以改善用户体验"。因此,这项工作的未来版本应该最终会进入 mainline 的。不确定的是,在进入 mainline 之前,它需要完成哪些改动。


全文完



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭