| 导语本文主要是讲Linux的调度系统, 由于全部内容太多,分三部分来讲,本篇是中篇(主要讲抢占和时钟),上篇请看(CPU和中断):Linux调度系统全景指南(上篇),调度可以说是操作系统的灵魂,为了让CPU资源利用最大化,Linux设计了一套非常精细的调度系统,对大多数场景都进行了很多优化,系统扩展性强,我们可以根据业务模型和业务场景的特点,有针对性的去进行性能优化,在保证客户网络带宽前提下,隔离客户互相之间的干扰影响,提高CPU利用率,降低单位运算成本,提高市场竞争力。欢迎大家相互交流学习!
如果你想周期性的做一些事情,那么必然,会与时间产生联系。比如,每天早晨7点吃早餐,每天晚上10点进入梦乡。当然,如果你有伴侣的话,晚上这个时间可能不会这么固定。
作者简介: 程磊,一线码农,在某手机公司担任系统开发工程师,日常喜欢研究内核基本原理。 一、时间概念解析 1.1 时间使用的需求 1.2 时间体系的要素 1.3 时间的表示维度 1.4 时钟与走时 1.5 时间需求之间的关系 二、时间子系统的硬件基础 2.1 时钟硬件类型 2.2 x86平台上的时钟 2.3 ARM平台上的时钟 三. 时间子系统的软件架构 3.1 系统时钟的设计 3.2 系统时钟的实现 3.3 动态tick与定时器 3.4 用户空间API的实现 四. 总结回顾 一、时间概念解析 我们住在空间
严格来说,Linux 不是实时操作系统,但 Linux 却支持实时调度算法。与通用调度算法(如完全公平调度算法)相比,实时调度算法更注重任务(进程)的实时性。为什么 Linux 支持实时调度算法,却不是实时操作系统呢?有兴趣的同学可以去网上查阅相关的文献或者资料。
实时分为硬实时和软实时,硬实时要求绝对保证响应时间不超过期限,如果超过期限,会造成灾难性的后果,例如汽车在发生碰撞事故时必须快速展开安全气囊;软实时只需尽力使响应时间不超过期限,如果偶尔超过期限,不会造成灾难性的后果.
上一篇文章我们简单了解了一些关于时间的概念,以及Linux内核中的关于时间的基本理解。而本篇则会简单说明时钟硬件,以及Linux时间子系统相关的一些数据结构。
实时系统要求对事件的响应时间不能超过规定的期限,响应时间是指从某个事件发生到负责处理这个事件的进程处理完成的时间间隔,最大响应时间应该是确定的、可以预测的。
无论是任务处于用户态还是内核态,经常会因为等待某些事件而睡眠(可能是等待IO读写完成,也可能等待其他内核路径释放一把锁等)。本文来探讨一下,任务处于睡眠中有哪些状态?睡眠对于任务来说究竟意味着什么?内核是如何管理睡眠的任务的?我们会结合内核源代码来分析任务的睡眠,力求全方位角度来剖析。
可以发现sleep主要调用clock_nanosleep系统调用来进行睡眠(也就是说用户态任务睡眠需要调用系统调用陷入内核)。
硬件架构 从硬件架构图中可以看出以下特点: 每个 CPU 核都包含各自的 local timer,相互独立。 每个 local timer 都支持中断的产生,中断类型为 PPI,即 CPU 的私有中断,GIC 负责分发到指定的 CPU,这些中断都可以用来产生系统事件。local timer的中断为以下四种: Secure Physical Timer event (ID 29,也就是上面device node中的13,29 = 16 + 13) Non-secure Physical Timer even
源于一次线上 P0 故障,一个生产集群被误操作删除(不只是业务被删,是集群也被删了),集群规模较大,在集群恢复后 Pod 进行了重新、调度的过程,整个过程(从开始恢复集群到业务服务就绪)耗时略长,其中涉及到调度环节耗时的计算,由于当时监控服务也部署在集群中,导致故障时的调度器监控数据丢失,最后的最后,又回到了原点:故障驱动,自证清白。于是就有了 scheduler-stress-test 项目,就有了本篇关于此项目的介绍,希望可以帮助到有类似需求(调度器压测)的同志们。
本文为 PingCAP Observability 团队研发工程师钟镇炽在 Rust China Conf 2020 大会上所做演讲 《高性能 Rust tracing 库设计》的详细文本,介绍了对性能要求非常苛刻的分布式 KV 数据库 TiKV 如何以不到 5% 的性能影响实现所有请求的耗时追踪。
“2020 SONiC产业生态研讨会”于9月19日圆满落幕,腾讯网络平台部汤桢乾带来了主题演讲《腾讯自研交换机成长之路》。
时间轮(Timing Wheel)是George Varghese和Tony Lauck在1996年的论文【Hashed and Hierarchical Timing Wheels: data structures to efficiently implement a timer facility】实现的,它在Linux内核中使用广泛,是Linux内核定时器的实现方法和基础之一。
HZ定义在<asm/param.h>,在i386平台上,目前采用的HZ值是1000。
许多传统企业使用 Linux 自带的 crontab 来做定时任务的方案,该方案非常简单,适合做主机上的运维工作,比如定时清理日志、周期性做健康检查。随着信息化时代的高速发展,业务变得越来越复杂,很多场景都需要定时任务,但是 crontab 方案存在高可用问题,不适合应用在业务应用上。
ETL是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合:
如果代码中获取时间使用的System.currentTimeMillis();,这样在单线程的情况下完全没问题,但是如果是多线程比如说后端提供的数据服务,那么就会出现严重的性能问题,导致服务不可用。
之前对LLM 推理和应用了解不多,因此抽时间梳理了一下,我们从模型量化,模型推理,以及开发平台等三个层面来梳理分析。
目前半导体行业的发展可以用冰火两重天来形容,传统的桌面及移动SOC市场已经基本停止增长了,而云计算成了各大巨头的兵家必争之地,这点笔者在前文《英特尔火线换帅、苹果搅动乾坤,国芯路在何方》已经有过详细论述了。
一、Tencent NOS概述 SONiC is an open source network operating system based on Linux that runs on switches from multiple vendors and ASICs. SONiC offers a full-suite of network functionality, like BGP and RDMA, that has been production-hardened in the data cen
星辰算力平台基于深入优化云原生统一接入和多云调度,加固容器运行态隔离,挖掘技术增量价值,平台承载了腾讯内部的CPU和异构算力服务,是腾讯内部大规模离线作业、资源统一调度平台。 背景 在大规模 Kubernetes 集群中,集群瞬息万变,每时每刻可能都有相关用户、集群组件、运维人员对集群进行操作。根据大规模集群的注意事项,Kubernetes v1.26 单个集群支持的最大节点数为 5000。更具体地说,Kubernetes 旨在适应满足以下所有标准的配置: 每个节点的 Pod 数量不超过 110 节点数不超
首先需要思考的问题是:什么是调度器(scheduler)?调度器的作用是什么?调度器是一个操作系统的核心部分。可以比作是CPU时间的管理员。调度器主要负责选择某些就绪的进程来执行。不同的调度器根据不同的方法挑选出最适合运行的进程。目前Linux支持的调度器就有RT scheduler、Deadline scheduler、CFS scheduler及Idle scheduler等。我想用一系列文章呈现Linux 调度器的设计原理。
根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示。
导读:肉眼看计算机是由CPU、内存、显示器这些硬件设备组成,但大部分人从事的是软件开发工作。计算机底层原理就是连通硬件和软件的桥梁,理解计算机底层原理才能在程序设计这条路上越走越快,越走越轻松。从操作系统层面去理解高级编程语言的执行过程,会发现好多软件设计都是同一种套路,很多语言特性都依赖于底层机制,今天董鹏为你一一揭秘。
根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示.
作为全球领先的云服务提供商之一,腾讯云*致力于向全球用户提供性能卓越的企业级网络服务。公有云对于服务质量有着严苛的要求,计算、内存、网络以及存储等各项资源的分配能否满足服务水平协议中所承诺的标准,都将直接影响最终用户的应用体验。对于云服务提供商来说,如何在充分利用以上资源,满足服务水平协议的前提下,尽可能减少额外资源开销,也是降低运营成本的关键因素之一。为在降低成本的同时保证优质的服务质量,腾讯云携手深度合作伙伴英特尔,基于腾讯云应用程序界面 (Application Programming Interfaces, API) TGW 与腾讯专门的硬件工程实验室 星星海实验室的创新软硬件结合方案,发挥 TGW 在网络领域的技 术优势,针对网络资源调度及分配展开性能优化。
George Varghese 和 Tony Lauck 1996 年的论文:Hashed and Hierarchical Timing Wheels: data structures to efficiently implement a timer facility提出了一种定时轮的方式来管理和维护大量的Timer调度算法.Linux 内核中的定时器采用的就是这个方案。
前几天看了一篇golang的文章一个和RLock有关的小故事, 发现作者得到的结论是错误的, 实际涉及内容比作者讲解的多一些。
最近在开发一个项目,需要用到高精度的延时机制,设计需求是 1000us 周期下,误差不能超过 1%(10us)。
众所周知,系统调用很昂贵。而针对CPU漏洞的软件缓解措施(如Meltdown)甚至使其更加昂贵。但它们到底有多贵呢?为了开始回答这个问题,我写了一个小型的微型测试,以测量系统调用的最低成本。意思是说,无论上下文切换是否发生,人们都必须支付系统调用的成本,即使在内核中的工作微不足道,即从用户模式切换到内核模式再返回的成本。
定时任务在很多场景都需要用到,比如游戏的 Buff 实现,Redis 中的过期任务,Linux 中的定时任务,电商未支付订单的关闭等等。
组调度(task_group)是使用Linux cgroup(control group)的cpu子系统来实现的,可以将进程进行分组,按组来分配CPU资源等。
RTOS,英文全称是 Real-time Operation System,中文就是 实时操作系统,又称及时操作系统。
一、kill, raise, killpg 函数 int kill(pid_t pid, int sig); int raise(int sig); int killpg(int pgrp,
hello,everyone,好久不见。最近一段时间我做的业务里面有一种需求,对于审批超时的任务需要通过websocket通知给前端,前端实时展示审批单的执行情况。一开始想着使用定时任务每隔一段时间去进行数据表数据进行扫描出过期数据进行通知。但是这种操作如何扫描时间间隔短,那么对于数据库的空扫描的就很多,扫描间隔时间长,那么比如我11:00就过期的任务,我11:05才执行定时任务扫描,显然数据的准确性无法得到保障。
剪枝是深度神经网络 (DNN) 的主要压缩方法之一,从 DNN 模型中删除不太相关的参数以减少其内存占用。为了获得更好的最终精度,通常迭代地执行剪枝,在每一步中删除越来越多的参数,并对剩余的参数应用微调(即额外的训练周期),一直持续到达到目标压缩比。然而,这个过程可能非常耗时。若采取一次性剪枝(在一个步骤中修剪所有参数并进行一次微调)来缓解这个问题,又可能会带来较高的准确性损失。
在 Swift 中获取时间戳(Timestamp)的几种常见方法和它们的区别如下:
所有 Jetson AGX Orin 和 Orin NX 板以及所有上一代 Jetson AGX Xavier 和 Xavier NX 模块都具有 DLA 内核。对于至少具有一个 DLA 实例及其相应时钟设置的所有平台。DRIVE Xavier 和 DRIVE Orin 也有 DLA 核心。
为了实现“双碳”目标,整个电力行业正在构建“以新能源为主体的新型电力系统”。随着风电、光伏等新能源大量建设和接入,如何应对新能源的双高特性给电网带来的不稳定性正成为电力系统的一个重要课题。
AI 科技评论按:日前,百度 PaddlePaddle 更新至 Fluid v1.3 版本,一如既往地, Fluid v1.3 版本在基础框架、预测引擎、模型建设、分布式训练各个方向上都实现了多项更新,而其中比较重要的更新包括:
Workqueue 工作队列是利用内核线程来异步执行工作任务的通用机制,利用进程上下文来执行中断处理中耗时的任务,因此它允许睡眠。而 Softirq 和 Tasklet 在处理任务时不能睡眠。Softirq 是内核中常见的一种下半部机制,适合系统对性能和实时响应要求很高的场合,比如网络子系统,块设备,高精度定时器,RCU 等。
2011 年 10 月,big.LITTLE 一经推出就成为了全球第一的应用于手机市场的异构处理技术。该技术的架构包括一个高性能“大”(big)CPU 集群和一个高效率“小”(LITTLE)CPU 集群,它们之间通过一致互联实现连接。在该架构上运行的软件(全局任务调度)可以将正确的应用程序任务调度到正确的CPU上。
作者简介:李庆,紫金山实验室未来网络研究中心研究员,主要研究方向为时间敏感网络(TSN)、软件定义网络(SDN)等。 详谈TSN产业生态:主要厂商及产品分析(上)对部分厂商及其产品进行了总结,本节继续对TSN相关的厂商及产品进行分析总结。排名不分先后。 华为 华为TSN交换机 AR 550E单端口最大带宽1 Gbps,具有八个10M/100M/1000M自适应电口,可通过自协商与对端设备协商端口速率及双工模式,单跳时延小于10 us,抖动小于500 ns,时间同步精度20 ns,样机集成了8个千兆(GE)T
2014年10月,Alexa一款名为 Echo 的智能音箱出现,智能音箱行业开始火爆并受到极大关注。2015年年底,全球智能音箱销量达到250万台。
时间同步系统是电力系统的基础,智能电网在综合自动化设备、自动保护设备等自控、遥控设备的用量不断加大的当前,电网在发电、输电、配电等领域,对全网时间同步精度、安全性、稳定性、可靠性等性能提出越来越高的要求。
一、背景 AI时代已经来临,AI将越来越深刻的影响和改变我们的生活。还记得目光深邃,功能多样的机械姬吗?也许这一天也不会太远。 智造AI,需要数据、算力、算法,怎么样高效率的将这三者结合在一起,生产满足需求的AI,是每一个产品团队,尤其是团队中算法工程师面临的问题。 TEG星辰和机智团队希望搭建一个稳定高效可依赖的AI算力基础设施环境,帮助产品团队加速产品的研发迭代,目前看已初步取得了一些成果,星辰算力为全公司提供统一的CPU/GPU算力服务。机智加速机器学习平台 基于星辰算力,在计算加速能力上具备行
我曾以为像定时器这样基础的功能,操作系统会有一个完备的实现。当需要开启一个定时任务的时候,会有一个优雅的、如下形式的接口:
领取专属 10元无门槛券
手把手带您无忧上云