互联网+大赛-龙蜥社区赛题解析(基于 Pluasched 优化内核调度器)|学习笔记

简介: 快速学习互联网+大赛-龙蜥社区赛题解析(基于 Pluasched 优化内核调度器)

开发者学堂课程【第八届大学生创新创业大赛阿里命题龙蜥社区赛题解析:互联网+大赛-龙蜥社区赛题解析(基于 Pluasched 优化内核调度器)】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/1019/detail/15088


互联网+大赛-龙蜥社区赛题解析(基于 Pluasched 优化内核调度器)

 

内容介绍:

一、赛题背景

二、赛题介绍

 

一、赛题背景

1、什么是调度器

CPU 资源的抽象

给线程分配 CPU

 CPU 指派线程

(1)教科书 vs 业界

理论模型:FCFS、SJF、PS、RR、多级反馈队列。

实用模型:CFS、硬实时调度。

CFS应用广泛:服务器/云计算/超算/桌面/移动…

(2)变化的场景

不同的行业有不同的定制需求:

数据分析平台、交易平台、云服务器、终端设备 …

(3)不变的问题

公平性 延迟 吞吐 局部性 利用率 QoS  能耗

调度器是操作系统中最古老、最核心的子系统 cpu 资源抽象出来,分配给线程使用或者说给 cpu 指派一些线程去运行常见的期模型有先来先服务等等。这些算法都是课文中常见的,但是工业界一般使用的最多的是 nicks ,是最实用也最常用的调器,全身是完全公平调度器,支持单核、多核以及众核架构,应用场景也非常多,包括数据中心、云计算、桌面端、移动端等等。不同的行业和场景对调度器做一些不同的定制需求,但是调度器的公平性、延迟、吞吐利用率、能耗 QoS 等等呈现出来问题和关注点都一样的,所以变化的场景有些不的问题

2、Linux 调度器现状

Plugsched 能将调度器子系统从内核中提取出来,以模块的形式对内核调度器进行热升级,能够针对不同业务定制化调度器。

新的应用场景越来越多,操作系统面临的机遇和挑战也随之而来。Linux 调度器前进却很慢。Linux  CFS 调度器的设计理念是要求适用于各种场景,无论是移动端、桌面端是云端,然而不同的场景对调有不同的需求。调度器的开发更新迭代会遇到以下几点问题

(1)调度器迭代慢

Linux 内核经过很多年的更新迭代,代码变得越来越繁重。调度器是内核最核心的子系统之一,它的结构复杂,与其它子系统紧密耦合,这使得开发和调试变得越发困难。此外,Linux 很增加新的调度类,尤其是不太可能接受非调用或场景针对型的调度器,上游社区在调度领域发展缓慢。

(2)升级内核困难

调度器内嵌(built-in)在内核中,上线调度器的优化或新特性需要升级内核版本。内核发布周期通常是数月之久这将导致新的调度器无法及时应用在生产系统中。再者要在集群范围升级新内核,涉及业务迁移和停机升级,对业务方来说代价昂贵。

(3)无法升级子系统

kpatch  livepatch 是函数粒度的热升级方案,可修改能力较弱,不能实现复杂的逻辑改动或者整个子系统的升级;eBPF 技术在内核网络中广泛应用。但现在调度器还不支持 ebpfhook,将来即使支持,也只是实现局部策略的灵活修改,可修改能力同样较弱。

(3)应用场景不同,最佳调度策略不同

应用种类极大丰富,特征也是千变万化,尤其在云场景下调度策略的优化比较复杂,不存在“一劳永逸”的策略。因此,允许用户定制调度器满足不同的场景是必要的。各公司都意识到了这个问题,并提出自己的解决方案,比如说 mate  sketch edpf,谷歌的 ghost,以及阿里的 plus,希望更多人参加到领域中

3、Plugsched 简介

Plugsched 是 Linux 内核调度器子系统热升级的 SDK,它可以实现在不重启系统、应用的情况下动态替换调度器子系统,毫秒级 downtime。Plugsched 可以对生产环境中的内核调度特性动态的进行增、删、改,以满足不同场景或应用的需求,且支持回滚。

https://gitee.com/anolis/plugsched

Plugsched 已经在龙溪社区开源,Plugsched 能将调度器系统从内核中提取出来,以模块的形式对内核调度器进行升级。通过对调度器模块的修改,能够针对不同业务定制化调度器,并且使用模块能够更敏捷的开发新特性,优化点,在不中断业务的情况下上线。

4、Plugsched 优势与价值

调度器与内核解耦,以模块的形式对内核调度器进行热升级,可针对不同的业务定制化调度器,而且可以在不中断业务的情况下上线。

(1)与内核发布解耦:调度器版本与内核版本解耦,不同业务可以使用不同调度策略建立持续运维能力,加速调度问题修复、策略优化落地;加快调度器技术演进和迭代;

(2)可修改能力强:可以实现复杂的调度特性和优化策略;

(3)维护简单:不修改内核代码,或少量修改内核代码,保持内核主线干净整洁;在内核代码 Tree 外独立维护非通用调度策略,采用RPM 的形式发布和上线;

(4)简单易用:容器化的 SDK 开发环境,一键生成 RPM,开发测试简洁高效;

(5)向下兼容:支持老内核版本,使得存量业务也能及时享受新技术红利;

(6)高效的性能:毫秒级 downtime,可忽略的 overhead。

Plugsched 在工业生产中的一些优势。

5、Plugsched 教学价值

我是学生、教师,plugsched 对我有什么用?

Plugsched为工业生产设计,但也非常适合学习教学。

(1)环境简单:容器化,且依托成熟的龙蜥 OS,一键搭建。

(2)敏捷开发测试:无需编译内核,无需重启,安装测试。

(3)开发聚焦:只需关注调度器,代码量少,干扰小。

(4)接触实际应用:接触到业界真正使用的 OS 技术。

task 的 PCB、task 状态转移、上下文切换、CPU 队列管理、CPU负载均衡、抢占机制、组调度、核间通信、核间同步、优先级、限流……

除了优势之外对于学生、教师也非常合适,开发环境很简单,plugsched 提供容器化的开发环境,并且依托成熟龙溪 OS 一键搭建开发环境。开发测试也变得敏捷,不需要编译内核,不需要重启系统,安装到系统中就可以测试验证,plugsched 将调度器从内核中提取出来,只需要关注调度器,不需要关注其他子系统。开发变得比较简单,最后可以接触到一些真正使用的 OS 技术。

 

二、赛题介绍

1、基于 Plugsched 优化内核调度器

(1)如何参与?

阅读 README  Quick Start,半小时学习就能使用

Plugsched 实现最简单的内核调度器。选择下面内容:

开发调度器,优化常见应用程序性能,例如 web

server、database、深度学习等等。

开发调度器,优化常见benchmark性能,例如 schbenchunixbench、hackbench等等。

参与 plugsched 技术的研发,解决项目的 issue。(可选)

(2)赛题我能学到什么?

由于 plugsched 大幅简化调度器研发测试,缩短周期。

大学生也能轻易上手实验内核开发,学习和开发业界真实场景的调度器

image.png

plugsched 利用技术解决了现在调气领域的几大难题。plugsched 的工作原理,图架构图,首先是初始化开发环境目的是生成调器模块代码以供进行开发,以及打包生成二片包,安装到系统中就可以测试验证。

可以根据 plugsched 开元仓库中的 red meat quick start 章节很快可以学会如何使用,也能实现最简单调度器。本赛题主要是想帮助参赛者学习 Linux 内核调度器相关知识和调试方法,掌握调度器子系统热升级的基本原理,针对实际的场景提升应用性能。评判标准如下,可以开发调度器,优化成绩的应用性能,比如web service等,或者可以优化常见的 benchmark 性能,比如scale bench,最后也可以参与plugsched 技术的研发,解决项目技术是个加分项。

通过赛题因为 plugsched 大幅简化了调度器的开发测试,能够轻易的上手学习和实验内核开发,并且可以学习到业界真实场景的调度器。

相关文章
|
9月前
|
弹性计算 运维 安全
优化管理与服务:操作系统控制平台的订阅功能解析
本文介绍了如何通过操作系统控制平台提升系统效率,优化资源利用。首先,通过阿里云官方平台开通服务并安装SysOM组件,体验操作系统控制平台的功能。接着,详细讲解了订阅管理功能,包括创建订阅、查看和管理ECS实例的私有YUM仓库权限。订阅私有YUM仓库能够集中管理软件包版本、提升安全性,并提供灵活的配置选项。最后总结指出,使用阿里云的订阅和私有YUM仓库功能,可以提高系统可靠性和运维效率,确保业务顺畅运行。
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
2561 10
|
6月前
|
网络协议 安全 区块链
DNS+:互联网的下一个十年,为什么域名系统正在重新定义数字生态? ——解读《“DNS+”发展白皮书(2023)》
DNS+标志着域名系统从基础寻址工具向融合技术、业态与治理的数字生态中枢转变。通过与IPv6、AI和区块链结合,DNS实现了智能调度、加密传输等新功能,支持工业互联网、Web3及万物互联场景。当前,中国IPv6用户达7.6亿,全球DNSSEC支持率三年增长80%,展现了其快速发展态势。然而,DNS+仍面临安全威胁、技术普惠瓶颈及生态协同挑战。未来,需推动零信任DNS模型、加强威胁情报共享,并加速标准制定,以筑牢数字时代网络根基,实现更安全、高效的数字生态建设。
481 3
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
382 8
|
9月前
|
机器学习/深度学习 人工智能 JSON
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
Resume Matcher 是一款开源AI简历优化工具,通过解析简历和职位描述,提取关键词并计算文本相似性,帮助求职者优化简历内容,提升通过自动化筛选系统(ATS)的概率,增加面试机会。
1192 18
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
|
10月前
|
数据采集 机器学习/深度学习 人工智能
静态长效代理IP利用率瓶颈解析与优化路径
在信息化时代,互联网已深度融入社会各领域,HTTP动态代理IP应用广泛,但静态长效代理IP利用率未达百分百,反映出行业结构性矛盾。优质IP资源稀缺且成本高,全球IPv4地址分配殆尽,高质量IP仅占23%。同时,代理服务管理存在技术瓶颈,如IP池更新慢、质量监控缺失及多协议支持不足。智能调度系统也面临风险预判弱、负载均衡失效等问题。未来需构建分布式IP网络、引入AI智能调度并建立质量认证体系,以提升资源利用率,推动数字经济发展。
192 2
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
589 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
缓存 并行计算 Linux
深入解析Linux操作系统的内核优化策略
本文旨在探讨Linux操作系统内核的优化策略,包括内核参数调整、内存管理、CPU调度以及文件系统性能提升等方面。通过对这些关键领域的分析,我们可以理解如何有效地提高Linux系统的性能和稳定性,从而为用户提供更加流畅和高效的计算体验。
524 24
|
12月前
|
缓存 边缘计算 网络协议
深入解析CDN技术:加速互联网内容分发的幕后英雄
内容分发网络(CDN)是现代互联网架构的重要组成部分,通过全球分布的服务器节点,加速网站、应用和多媒体内容的传递。它不仅提升了访问速度和用户体验,还减轻了源站服务器的负担。CDN的核心技术包括缓存机制、动态加速、流媒体加速和安全防护,广泛应用于静态资源、动态内容、视频直播及大文件下载等场景,具有低延迟、高带宽、稳定性强等优势,有效降低成本并保障安全。
1935 4
|
存储 Linux API
深入探索Android系统架构:从内核到应用层的全面解析
本文旨在为读者提供一份详尽的Android系统架构分析,从底层的Linux内核到顶层的应用程序框架。我们将探讨Android系统的模块化设计、各层之间的交互机制以及它们如何共同协作以支持丰富多样的应用生态。通过本篇文章,开发者和爱好者可以更深入理解Android平台的工作原理,从而优化开发流程和提升应用性能。

热门文章

最新文章

推荐镜像

更多
  • DNS