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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 快速学习互联网+大赛-龙蜥社区赛题解析(基于 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 大幅简化了调度器的开发测试,能够轻易的上手学习和实验内核开发,并且可以学习到业界真实场景的调度器。

相关文章
|
1月前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
190 9
|
2月前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
75 8
|
22天前
|
缓存 边缘计算 网络协议
深入解析CDN技术:加速互联网内容分发的幕后英雄
内容分发网络(CDN)是现代互联网架构的重要组成部分,通过全球分布的服务器节点,加速网站、应用和多媒体内容的传递。它不仅提升了访问速度和用户体验,还减轻了源站服务器的负担。CDN的核心技术包括缓存机制、动态加速、流媒体加速和安全防护,广泛应用于静态资源、动态内容、视频直播及大文件下载等场景,具有低延迟、高带宽、稳定性强等优势,有效降低成本并保障安全。
69 4
|
1月前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
72 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
1月前
|
存储 Linux API
深入探索Android系统架构:从内核到应用层的全面解析
本文旨在为读者提供一份详尽的Android系统架构分析,从底层的Linux内核到顶层的应用程序框架。我们将探讨Android系统的模块化设计、各层之间的交互机制以及它们如何共同协作以支持丰富多样的应用生态。通过本篇文章,开发者和爱好者可以更深入理解Android平台的工作原理,从而优化开发流程和提升应用性能。
|
1月前
|
前端开发 UED
React 文本区域组件 Textarea:深入解析与优化
本文介绍了 React 中 Textarea 组件的基础用法、常见问题及优化方法,包括状态绑定、初始值设置、样式自定义、性能优化和跨浏览器兼容性处理,并提供了代码案例。
73 8
|
2月前
|
缓存 NoSQL Java
千万级电商线上无阻塞双buffer缓冲优化ID生成机制深度解析
【11月更文挑战第30天】在千万级电商系统中,ID生成机制是核心基础设施之一。一个高效、可靠的ID生成系统对于保障系统的稳定性和性能至关重要。本文将深入探讨一种在千万级电商线上广泛应用的ID生成机制——无阻塞双buffer缓冲优化方案。本文从概述、功能点、背景、业务点、底层原理等多个维度进行解析,并通过Java语言实现多个示例,指出各自实践的优缺点。希望给需要的同学提供一些参考。
60 7
|
1月前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
2月前
|
缓存 并行计算 Linux
深入解析Linux操作系统的内核优化策略
本文旨在探讨Linux操作系统内核的优化策略,包括内核参数调整、内存管理、CPU调度以及文件系统性能提升等方面。通过对这些关键领域的分析,我们可以理解如何有效地提高Linux系统的性能和稳定性,从而为用户提供更加流畅和高效的计算体验。
54 2
|
2月前
|
存储 人工智能 安全
操作系统的心脏——内核深度解析
【10月更文挑战第29天】 本文深入探讨了操作系统的核心组件——内核,包括其定义、功能、架构以及在现代计算中的重要性。通过对比不同操作系统内核的设计哲学和技术实现,揭示了内核如何影响系统性能、稳定性和安全性。此外,文章还讨论了未来内核技术的潜在发展方向,为读者提供了一个全面了解内核工作原理的平台。

热门文章

最新文章

推荐镜像

更多