随笔分类 - CPU
摘要:在Linux系统中,nice值和静态优先级用于控制进程调度的优先级,但它们的范围和含义有所不同。让我们详细解释一下两者的区别和联系。 1. Nice值 范围:nice值的范围是从 -20 到 19。 -20:最高优先级。 19:最低优先级。 作用:nice值用于调整进程的相对优先级。nice值越低,
阅读全文
摘要:在 Linux 系统中,进程的 D 状态表示进程处于不可中断的睡眠状态 (Uninterruptible Sleep)。这种状态通常由进程等待某些资源或事件引起,这些资源或事件无法立即可用。以下是一些常见的导致进程进入 D 状态的原因: I/O 操作: 等待磁盘 I/O 完成:进程可能正在等待磁盘读
阅读全文
摘要:一、前言 进程切换是一个复杂的过程,本文不准备详细描述整个进程切换的方方面面,而是关注进程切换中一个小小的知识点:TLB的处理。为了能够讲清楚这个问题,我们在第二章描述在单CPU场景下一些和TLB相关的细节,第三章推进到多核场景,至此,理论部分结束。在第二章和第三章,我们从基本的逻辑角度出发,并不拘
阅读全文
摘要:一、前言 本文主要是以context_switch为起点,分析了整个进程切换过程中的基本操作和基本的代码框架,很多细节,例如tlb的操作,cache的操作,锁的操作等等会在其他专门的文档中描述。进程切换包括体系结构相关的代码和系统结构无关的代码。第二、三、四分别描述了context_switch的代
阅读全文
摘要:在Linux内核中,进程管理涉及到许多复杂的数据结构和机制,其中active_mm是与内存管理相关的一个关键概念。理解active_mm需要先了解与之相关的一些基本内核结构和概念。 基本概念 mm_struct: 每个进程有一个与之关联的mm_struct结构,它描述了进程的内存映射(包括代码段、数
阅读全文
摘要:内核线程被调度执行时确实需要一个地址空间,但这个地址空间并不是为每个内核线程独立创建的。内核线程运行在操作系统的内核空间中,而不是在用户空间。以下是内核线程执行时地址空间的来源和管理方式: 地址空间来源 共享内核地址空间: 所有内核线程共享内核地址空间,这包括内核代码段、内核数据段、内核堆、内核栈等
阅读全文
摘要:内核线程没有独立的地址空间,这是因为内核线程是在操作系统内核空间中运行的,内核空间本身是所有进程共享的。以下是一些更详细的解释: 内核与用户态的区别:操作系统通常将内存分为用户空间和内核空间。用户空间是为用户进程提供的,它们有各自的虚拟地址空间,相互之间隔离,不能直接访问内核空间。内核空间则是操作系
阅读全文
摘要:能量感知调度(EAS)使调度程序能够预测其决策对 CPU 消耗的电量的影响。 EAS 依赖于 CPU 的能量模型 (EM) 来为每个任务选择省电的 CPU,同时要求对执行任务的吞吐量的影响最小。 EAS 仅在异构 CPU 架构上(例如 Arm big.LITTLE)上运行,因为这是通过调度器节省电量
阅读全文
摘要:4.支持psci情况 上面说了pin-table的多核启动方式,看似很繁琐,实际上并不复杂,无外乎主处理器唤醒从处理器到指定地址上去执行指令,说他简单是相对于功能来说的,因为他只是实现了从处理器的启动,仅此而已,所以,现在社区几乎很少使用spin-table这种方式,取而代之的是psci,他不仅可以
阅读全文
摘要:Linux 中采用了两种不同的优先级范围,一种是 nice 值,一种是实时优先级。在上一篇粗略的说了一下 nice 值和实时优先级,仍有不少疑问,本文来详细说明一下进程优先级。linux 内核版本为 linux 2.6.34 。 进程优先级的相关信息,存放在进程描述符 task_struct 中:
阅读全文
摘要:SCHED_RR和SCHED_FIFO是Linux内核中用来调度进程的两种调度策略,它们有以下几点区别: 调度方式:SCHED_RR采用轮转调度方式,而SCHED_FIFO则采用先进先出调度方式。 优先级:在SCHED_RR中,每个进程有一个时间片,当时间片用完后,进程会被放到就绪队列的末尾;而在S
阅读全文
摘要:1. 概述 组调度(task_group)是使用Linux cgroup(control group)的cpu子系统来实现的,可以将进程进行分组,按组来分配CPU资源等。 比如,看一个实际的例子: A和B两个用户使用同一台机器,A用户16个进程,B用户2个进程,如果按照进程的个数来分配CPU资源,显
阅读全文
摘要:考虑到文章篇幅,在这里我只讨论普通进程,其调度算法采用的是CFS(完全公平)调度算法。 至于CFS调度算法的实现后面后专门写一篇文章,这里只要记住调度时选择一个优先级最高的任务执行 一、调度单位简介 1.1 task_struct 结构体简介 对于Linux内核来说,调度的基本单位是任务,用 str
阅读全文
摘要:1. CPU电源管理简介 如果我们的能源是无限制的,那可能也不需要做现在这样复杂的电源管理控制,尤其是在嵌入式设备如手机上,在追求极致性能的同时,还要追求续航时间,二者是一对相互约束的矛盾体,需要软硬件紧密配合以满足用户越发苛刻的性能和功耗的需求。 CPU是设备的控制核心,它的电源管理是整个SOC电
阅读全文
摘要:1.开场白 环境: 处理器架构:arm64 uboot版本:uboot-2020.01 内核源码:linux-5.0 ubuntu版本:20.04.1 ATF版本:2.1 代码阅读工具:vim+ctags+cscope 一般嵌入式系统使用的都是对称多处理器(Symmetric Multi-Proce
阅读全文
摘要:概述 现在大家使用的基本上都是多核cpu,一般是4核的。平时应用程序在运行时都是由操作系统管理的。操作系统对应用进程进行调度,使其在不同的核上轮番运行。 对于普通的应用,操作系统的默认调度机制是没有问题的。但是,当某个进程需要较高的运行效率时,就有必要考虑将其绑定到单独的核上运行,以减小由于在不同的
阅读全文
摘要:其实“多核”这个词已经流行很多年了,世界上第一款商用的非嵌入式多核处理器是2002年IBM推出的POWER4。当然,多核这个词汇的流行主要归功与AMD和Intel的广告,Intel与AMD的真假四核之争,以及如今的电脑芯片市场上全是多核处理器的事实。接下来,学术界的研究人员开始讨论未来成百上千核的处
阅读全文
摘要:说到超线程技术,大家应该都不陌生了,Intel早在2002年推出的Northwood奔腾4 HT处理器就把这一技术带入到消费级市场,虽然随后的酷睿2处理器超线程被抛弃,不过到了2008年推出的Nehalem架构Core i7处理器又把超线程技术带回到市场上,并一直沿用至今,现在的Core i7/i3
阅读全文
摘要:2014年Linux内核峰会(Linux Kernel Summit 2014)上举办了为期一天的EAS主题研讨会。来自Arm的Morten Rasmussen做会议主持,来自Linaro的Daniel Lezcano和Mike Turquette介绍了最近发布的EAS相关工具,从此EAS开始快速发
阅读全文
摘要:昨天在群里有朋友问:把进程绑定到某个 CPU 上运行是怎么实现的。 首先,我们先来了解下将进程与 CPU 进行绑定的好处。 进程绑定 CPU 的好处:在多核 CPU 结构中,每个核心有各自的L1、L2缓存,而L3缓存是共用的。如果一个进程在核心间来回切换,各个核心的缓存命中率就会受到影响。相反如果进
阅读全文


浙公网安备 33010602011771号