关于操作系统调度器的三篇论文

news2025/1/18 17:02:35

【引子】没有忘记,目前从事的是DingOS 操作系统相关工作,没有因为LLM 而迷失。LLM 会成为基础设施,LLM 会为操作系统赋能,但是操作系统的价值是客观存在的,除非,计算机体系结构发生了翻天覆地的变化。

在任何多路复用资源的系统中,计算在哪里运行以及何时运行的调度问题都可能是最基本的问题。然而,就像计算机中许多其他重要问题一样(例如数据库中的查询优化),调度器的研究像钟摆一样,时而活跃,时而处于休眠状态,因为它被认为是一个“已解决”的问题。

调度一直是系统和网络中最基本的操作之一。它涉及将任务分配给CPU并在它们之间进行切换,这些决策对应用程序性能和系统效率都至关重要。长期以来,操作系统(OS)调度专注于公平性。

然而,近年来的两个发展导致了OS调度研究的复兴。首先,云计算的出现赋予了不同的,难以优化的指标。例如,微延迟和微秒(µs)尺度,这些指标在传统的调度器中没有被考虑。其次,摩尔定律的结束使得操作系统堆栈(包括调度)的专业化成为了继续提高性能的必要条件。

近年来有三篇论文或许实现了性能、可扩展性和策略选择相关的突破。第一篇论文挑战了低延迟(通常通过配置专用核心实现)和高利用率(需要核心重新分配)之间的假定权衡,通过在单微秒粒度上实现分配决策来解决这个问题。第二篇论文通过将策略的创建和操作进行分解,使得用户空间代理完全可以处理策略的创建和操作,而固定的内核机制则负责向代理通信事件和应用实施调度决策。第二篇论文根据微秒级灵活策略进行负载均衡和分配决策的能力,最终选择了根据应用程序选择策略的问题。

1. 微秒级核心重新分配

第一篇论文由Ousterhout等人回答了一个基本问题,即操作系统中核心分配可以多快进行以及这种重新分配是否有益于应用程序的性能。该论文介绍的系统名为Shenango,挑战了广泛存在的观念,即在微秒级别上跨应用程序分配核心是不可行的,因为存在高开销和潜在的缓存污染。

在这篇论文中,作者们详细阐述了Shenango系统的设计和实现,包括如何实现快速核心重新分配,以及如何避免因重新分配而导致的性能下降。此外,作者们还通过大量的实验验证了Shenango系统的有效性,快速核心重新分配确实是可能的,并展示了其在性能方面的显著优势。

3d80119c00935c303f487010d4520ec1.jpeg

在Shenango操作系统中,我们实现了微秒级别的核心重新分配,其关键在于使用了专用调度核心。该核心每5微秒可以做出一次CPU核心的分配决策,以确保系统的高效性。为了确定何时从应用程序中分配或回收核心,Shenango监视每个应用程序的线程运行队列和网络数据包队列的长度,并使用其导数作为拥塞信号。这种方法可以有效避免系统拥塞,保障了系统的稳定性和可靠性。同时,该算法完全在专用核心上运行,该核心还管理将传入的网络数据包引导到其相应的目标应用程序的CPU核心。这使得整个系统的运行更加高效,同时也提高了系统的可靠性和安全性。

作者们展示了这种方法的有效性,通过展示如何通过细粒度的CPU核心重新分配,来改善在同一系统上共存的延迟敏感和批处理应用程序的性能。通过基于瞬时输入的数据包速率分配CPU核心,Shenango操作系统在使用5微秒核心重新分配间隔与100微秒间隔相比,前者的延迟降低了,后者的吞吐量提高了6倍以上。随后的研究表明,Shenango的微秒级调度程序还可以帮助缓解其他系统资源(例如缓存和内存带宽)的干扰,并向网络提供细粒度反馈以防止过载。

2. 部署操作系统调度到Linux的框架

构建像Shenango这样高效的调度器是一个有趣的实验室练习,但是在生产环境中需要考虑更多的因素。比如,如何兼容现有的应用程序和操作系统(如Linux),如何满足不同的需求以及如何实现更高的可扩展性和可靠性等等。为了解决这些问题,一些Google的工程师构建了一个名为ghOSt的框架,该框架可以实现不同的调度策略,并将它们部署到Linux内核中,以方便用户更容易地使用。

d545f9d0c6ba9695e1ea0cfb0d92414d.jpeg

ghOSt设计背后的关键理由是为了提高操作系统的灵活性。ghOSt从微内核中汲取灵感,将OS调度委托给用户空间代理,可以是全局的或每个CPU。这种方法的优点显而易见:用户空间代理可以根据不同的需求和场景制定不同的调度策略,而不仅仅是受限于内核代码的固有规则。因此,开发人员可以享受用户空间开发的灵活性,而不受内核代码的限制和长时间部署周期的困扰。

为了在用户空间代理和内核之间实现无缝的通信,ghOSt使用了共享内存来传递提示信息,使代理能够做出更明智的调度决策。这种方法不仅提高了操作系统的性能,而且还为应用程序提供了更广泛的功能和更高的效率。而最简化内核调度类,是ghOSt设计中最为重要的组成部分之一。内核调度类负责将代理传递的调度事件转换为内核可以理解的格式,并将处理结果返回给代理。

总的来说,ghOSt的设计使得操作系统变得更加灵活和高效,从而能够更好地满足不同用户的需求。它为开发人员提供了更多的自由度和创造空间,使得他们可以更好地实现自己的想法和创意。同时,ghOSt的设计也为用户提供了更好的体验和更快的响应速度,使得他们能够更加高效地完成工作。

ghOSt面临的最大挑战是内核组件与用户空间代理之间的通信延迟,可能需要达到5微秒。这可能会导致

(1)竞争条件,例如,用户空间代理向已从线程的CPU掩码中删除的CPU来调度线程);

(2)低利用率,因为CPU保持空闲等待代理的调度决策。

ghOSt通过在共享内存上实现事务API来避免竞争条件,该API允许代理以原子方式提交调度决策。为了减轻第二个问题,作者们建议使用自定义的eBPF程序,在每个核心上本地运行并临时调度任务,直到收到代理的决策。当将其他操作系统功能卸载到用户空间(例如内存管理)时,相同的技术也适用。

3.选择最佳调度策略选项

在引入ghOSt之后,可以轻松开发和部署自定义调度策略,但问题在于每个应用程序应该使用哪种策略。为了回答这个问题,McClure等人进行了全面的分析。

在引入ghOSt之后,可以轻松开发和部署自定义调度策略。然而,虽然这是一个不错的进展,但是使用哪种策略对于每个应用程序来说都是一个重要的问题。为了解决这个问题,McClure等人进行了全面的分析,并提出了以下建议:

首先,应该考虑应用程序的需求以及其性质。例如,一些应用程序需要保持高可用性,需要在任何时候都能够提供服务,因此需要使用具有高容忍度的策略。另一些应用程序可能会经常需要进行扩展,因此需要使用具有良好扩展性的策略。了解应用程序的性质是选择调度策略的关键。

其次,应该考虑数据中心的资源利用率。在数据中心中运行的应用程序通常会共享物理资源,例如CPU,内存和网络带宽。因此,应该选择那些可以最大程度利用这些资源的策略。例如,可以使用负载均衡策略来确保每个节点都能够平均分配负载,从而使整个数据中心的资源利用率最大化。

最后,应该考虑操作和管理的成本。一些策略可能会增加管理和操作的成本,因此需要权衡这些成本和性能。应该选择那些既能够满足应用程序的需求,又可以最小化操作和管理成本的策略。

作者们将调度过程分为两个不同的策略:在应用程序之间分配核心和在每个应用程序内的CPU之间平衡负载任务。令人惊讶的是,他们发现第二个策略相对简单;无论任务服务时间分布,核心数量,核心分配策略和负载均衡的开销如何,无论是延迟还是效率,都是最好的负载均衡策略。

相比之下,核心分配策略要复杂得多。例如,与过去的工作相反,作者们发现根据平均延迟或利用率主动回收应用程序的核心对于小任务的性能表现更好,而不是等待CPU变为空闲状态。他们还发现,在处理小任务时,最好为每个应用程序分配一定数量的CPU,而不是动态分配。

55f14d0a1717bc60f4f6ffb908ab5ec3.jpeg

这项分析开辟了新的研究领域,例如开发实现可扩展为全局队列的新硬件,在模拟中表现甚至优于任务获取。此外,该研究没有考虑抢占的存在,因此需要进一步研究抢占策略如何影响调度决策。

4.小结

这三篇论文,探讨了在操作系统调度器中如何引入现代化的方法。第一篇论文专注于构建尽可能快速的调度器,第二篇旨在简化实现并与现有应用程序和操作系统兼容的新策略。第三篇论文则探讨不同类型应用程序的最佳调度策略。最终,这三篇论文为致力于开发现代计算系统更好的调度策略作出了有益的贡献。这些论文强调了需要更好、更有效率、更灵活的操作系统调度程序,开辟了新的研究领域,并展示了操作系统调度策略持续发展和创新的重要性。

【参考文献与关联阅读】

  • Amy Ousterhout, Joshua Fried, Jonathan Behrens, Adam Belay, 和 Hari Balakrishnan (MIT CSAIL). “Shenango: Achieving High CPU Efficiency for Latencysensitive Datacenter Workloads. Proceedings of the 16th Usenix Symposium on Networked Systems Design and Implementation”, 2019. https://dl.acm.org/doi/10.5555/3323234.3323265 (https://www.usenix.org/conference/nsdi19/presentation/ousterhout)

  • Jack Tigar Humphries (Google), Neel Natu (Google),Ashwin Chaugule (Google), Ofir Weisse (Google), Barret Rhoden (Google), Josh Don (Google), Luigi Rizzo (Google), Oleg Rombakh (Google), Paul Turner (Google), 和 Christos Kozyrakis (Stanford University and Google). “ghOSt: Fast & Flexible User-space Delegation of LinuxScheduling. Proceedings of the 28th ACM Symposium on Operating Systems Principles”, 2021. https://dl.acm.org/doi/10.1145/3477132.3483542

  • Sarah McClure (UC Berkeley), Amy Ousterhout (UCBerkeley), Scott Shenker (UC Berkeley and ICSI), Sylvia Ratnasamy (UC Berkeley). "Efficient Scheduling Policies for Microsecond-scale Tasks." Proceedings of the 19th Usenix Symposium on Networked Systems Design and Implementation, 2022. https://www.usenix.org/conference/nsdi22/presentation/mcclure

  • 温故知新:从计算机体系结构看操作系统

  • 一种编译器视角下的python性能优化

  • 计算机网络的元认知、实践与未来

  • 异想天开!没有CPU的操作系统

  • 嵌入式Linux的网络连接管理

  • 计算机体系结构的一知半解

  • 机器学习与微分方程的浅析

  • Linux 内核裁剪框架初探

  • 操作系统中的系统抽象

  • 感知人工智能操作系统

  • 从操作系统看Docker

  • IoT中的Linux选择

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/626071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试都只是背答案吗

Java 八股文面试当然要背,不背很难通过面试的 Java基础 Java基础面试题 Java的特点Java 与 C 的区别JDK/JRE/JVM三者的关系Java程序是编译执行还是解释执行?面向对象和面向过程的区别?面向对象有哪些特性?数组到底是不是对象&a…

编写Python程序求数组中最长的字符串

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 移船相近邀相见,添酒回灯重开宴。 大家好,我是皮皮。 一、前言 前几天在Python白银群【王子】问了一个Python基础的问题&#x…

Ubuntu离线安装docker与nvidia-docker

Ubuntu离线安装docker与nvidia-docker 安装 docker 20.10.17安装 nvidia-docker 和 nvidia-container-toolkit docker与nvidia-docker离线安装包 安装 docker 20.10.17 查看Ubuntu操作系统版本的详细信息,不同的版本所依赖的deb不同。 lsb_release -aCodename为&a…

一文带你读懂:TCP连接的三次握手和四次挥手(上篇)

TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。 天下没有不散的宴席,对于 TCP 连接也是这样, TCP 断开连接是通过四次挥手方式。 下面我们通过实操,来彻底理解三次握手和四次…

linux ubi文件系统更新失败问题分析2

昨天打包了一个ubi根文件系统,打包成功,写板子flash成功,但系统运行后还是老的文件系统,具体过程如下: 使用脚本1,打包rootfs系统: 打包后的文件系统,下载到板子后,查看…

01_MySQL索引简介

影响性能下降、SQL慢体现在:执行时间长或者等待时间长 影响sql性能的常见情况: 数据过多:分库分表(根据微服务划分库、按照地域或时间分表存储、按照数据的特定字段对分库数量求余)关联了太多的表,太多join:允许表出现…

在口袋妖怪世界中理解ChatGPT的思维

深度学习自然语言处理 原创作者:Winni 今天为大家分享一篇研究,当ChatGPT穿越到口袋妖怪世界,是否会理解并应用这个虚构世界的知识呢? 熟悉口袋妖怪的朋友们一定知道,这些可爱的生物们有着各种不同的属性、类别和技能。…

TypeScript Vs JavaScript 区别

一、观察 1. JS 平常的复制类型 let val; val 123; val "123"; val true; val [1, 3, 5]; 注意点: 由于JS是弱类型的, 所以只要定义了一个变量, 就可以往这个变量中存储任意类型的数据 也正是因为如此, 所以会给我们带来一个问题 2. 假设a是一个数组, b是一个数值…

java+SSM+vue停车场管理系统

家家户户对于汽车的需求日益的增长。在促进了汽车行业的发展的同时,也对我国的交通造成了较大的压力。首先在日常的出行中,老旧城区道路狭窄,容易造成车辆的堵塞,每天早晚,接送孩子的车辆数密集,会造成相应…

【工业控制系统安全】深入了解 ICS612:ICS 网络安全:第 1 部分

ICS 从业者可以立即在实际情况中使用他们的 ICS612 培训。 降落飞机 我认识一家生产工厂的首席执行官,我们就叫他比尔吧,他希望他的关键团队成员真正了解他的运营团队每天为实现生产目标而承受的压力。比尔还希望他的经理和支持人员能够理解“让它发生”…

你知道支付宝转账怎么在自己的手机上不留痕迹吗

支付宝和微信支付是现代社会中非常普遍的移动支付方式,可以方便快捷地完成各种线上和线下交易。然而,在一些情况下,用户可能希望隐藏或删除某些转账的痕迹,以保护个人隐私或避免不必要的麻烦。对于支付宝而言,实际上有…

RabbitMQ - 幂等性、优先级、惰性

RabbitMQ - 幂等性、优先级、惰性 幂等性优先级队列惰性队列 幂等性 概念 用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付…

Mysql中联合索引的最左匹配

联合索引 通过将多个字段组合成一个索引,该索引就被称为联合索引。 比如,将商品表中的 product_no 和 name 字段组合成联合索引(product_no, name),创建联合索引的方式如下: CREATE INDEX index_product_no_name ON product(pr…

尝试用Go goroutine实现一个简单的聊天服务

hello,大家好,我是张张,「架构精进之路」公号作者。 对于聊天服务,想必大家都不会陌生,因为在我们的生活中经常会用到。 我们用 Go 并发来实现一个聊天服务器,这个程序可以让一些用户通过服务器向其它所有用…

总有人问我 Cookie 是什么?

苏生不惑第432 篇原创文章,将本公众号设为星标,第一时间看最新文章。 之前分享过我写的微博批量下载工具2023 更新版:苏生不惑开发过的那些原创工具和脚本 ,因为要输入自己账号的cookie,总有人问我cookie是什么?今天写…

FPGA 的数字信号处理:重写 FIR 逻辑以满足时序要求

在上一篇文章中(FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器)演示了在 Verilog 中编写自定义 FIR 模块的初始demo。该项目在行为仿真中正常,但在布局和布线时未能满足时序要求。 所以今天的文章让我们来看看当设计不能满足…

Nacos集群Raft反序列化漏洞-修复

近日,奇安信CERT监测到 Nacos 集群Raft反序列化漏洞(QVD-2023-13065),在Nacos集群处理部分Jraft请求时,攻击者可以无限制使用hessian进行反序列化利用,最终实现代码执行。鉴于该漏洞仅影响集群间通信端口 7848(默认配置下)&#x…

计算机网络管理-实验6-使用SNMPc开展网管活动

一、实验目的 全面学习SNMPc网络管理软件业务服务监控功能,了解如何使用网管软件从事网络管理工作 二、实验内容与设计思想 1)操作映射数据库。 2)查看管理对象的MIB数据。 3)创建、保存长期统计数据(要求一定时长…

spring事务隔离

在数据库中读取数据时,可能会遇到以下三个常见的问题:脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻读(Phantom Read)。 这些问题主要涉及并发事务的隔离性和一致性。 脏…

ChatGPT 4 的 6 个最佳使用场景

作者:SYDNEY BUTLER 译者:明明如月 无论是在 ChatGPT 中还是通过 API,对 OpenAI 的 GPT-4 模型的访问比 GPT-3.5 限制更多。这意味着你需要慎重考虑在何种情况下使用 GPT-4,并选择性地将最适合的任务交给它,以便让其发…