首页 > 系统相关 >Linux cpu hotplug

Linux cpu hotplug

时间:2024-11-13 23:11:34浏览次数:1  
标签:__ 函数 hotplug cpu Linux CPU

背景

  • Read the fucking source code! --By 鲁迅
  • A picture is worth a thousand words. --By 高尔基

说明:

  1. Kernel版本:4.14
  2. ARM64处理器
  3. 使用工具:Source Insight 3.5, Visio

1. 介绍

Linux CPU热插拔,支持在系统启动后,关闭任意一个secondary cpu(在ARM架构中,CPU0为boot cpu,不能被关闭),并在需要时重新打开它。

CPU-hotplug的一个用处是,支持SMP的SuspendResume,这个也是我看CPU-hotplug的原因。

代码路径:
include/linux/cpuhotplug.h
kernel/cpu.c
kernel/smpboot.c
arch/arm64/kernel/smp.c

2. 数据结构

关键的数据结构有三种,如下图所示:

  • struct cpuhp_cpu_state:用来存储hotplug的状态;

  • enum cpuhp_state:枚举各种状态,这个会对应到全局数组中的某一项,而该项中会定义回调函数。当然,也可以通过函数接口来设置回调函数。

  • struct cpuhp_step:Hotplug state machine step,主要定义了函数指针,当跳转到某一个状态时会回调。

3. 流程

Linux内核会创建虚拟总线cpu_subsys,每个CPU注册的时候,都会挂载在该总线上,CPU的online和offline的操作,最终会回调到该总线上的函数。通过echo 0 > /sys/devices/system/cpu/cpu1/onlineecho 1 > /sys/devices/system/cpu/cpu1/online来控制CPU的热插拔。

看图吧。

3.1 cpu_up

  • Kernel会为每个CPU都创建一个hotplug线程,执行teardown/startup回调函数;
  • cpu_up的时候依赖底层的__cpu_up函数的实现;

3.2 cpu_down

  • pu_down的实际操作还是很复杂的,这种图只画了一部分,涉及到该CPU上的线程park,以及中断migrate,clockevents清除,以及通知上层等,不再深入研究了;
  • cpu_down的时候依赖底层的__cpu_die__cpu_disable函数的实现;

CPU的Hogplug框架,针对是各类CPU,是一个通用的处理模式,涉及的面很宽,后续如果要用到的时候再继续研究。

标签:__,函数,hotplug,cpu,Linux,CPU
From: https://www.cnblogs.com/linhaostudy/p/18545025

相关文章

  • 【Linux】阿里云服务器搭建gradio实例
    文章目录0前言1整体结构2Python开放环境搭建2.1SSL安装2.2python安装3开发3.1工具使用3.2gradio3.3langchain4nginx部署4.1下载安装4.2配置访问gradio5服务编写6扩展:安装软件步骤总结0前言  因为课程原因,需要做一个大模型相关的大作业,想到之前......
  • Linux进程间通信(IPC)的所有常见方法
    IPC:Inter-ProcessCommunication前言:ipcs命令是一个用于检查Linux系统中进程间通信(IPC)设施的状态的工具。它提供了关于系统上当前活跃的IPC资源的信息,包括消息队列、共享内存和信号量。ipcs-a这个选项会显示所有IPC资源的详细信息,包括每个资源的权限、所有者、创建......
  • Linux连接SFTP报ssh_exchange_identification: read: Connection reset by peer
    连接SFTP报ssh_exchange_identification:read:Connectionresetbypeer“Connectionresetbypeer”是一个常见的网络错误消息,通常出现在使用TCP协议进行网络通信时。这个错误表明在尝试读写数据时,远程主机(peer)强制关闭了连接。以下是一些可能导致此错误的原因及解决......
  • 泷羽sec专题课笔记-- Windows--补充Telnet连接Linux
    本笔记为泷羽sec《红队全栈课程》学习笔记,课程请可自行前往B站学习,课程/笔记主要涉及网络安全相关知识、系统以及工具的介绍等,请使用该课程、本笔记以及课程和笔记中提及工具的读者,遵守网络安全相关法律法规,切勿进行违法违规违纪的操作。写在最前面的话,我们为什么要学习......
  • Linux12位权限管理体
    1.Linux12位权限管理体1.1权限管理概述Linux通过rwx3种权限控制系统与保护系统,组成9位权限.Linux权限体系中还有3位特殊权限,组合起来就是12位权限体系.Linux这简单的rwx控制整个Linux系统的安全,权限与用户共同组成Linux系统的安全防护体系.1.2Linux权限计算2.0rwx......
  • Linux:进程概念(下)
    文章目录前言一、冯诺依曼体系二、操作系统(OperatorSystem)2.1.操作系统的概念2.2系统调⽤和库函数概念三.进程3.1基本概念3.1.1描述进程3.1.2task_struct3.2查看进程3.2.1getpid3.2.2proc3.2.3getppid总结前言•课本概念:程序的⼀个执⾏实例,正在执......
  • Linux基础笔试练习题笔记(1)
    Linux系统中建立一个新文件可以使用的命令为?A.chmodB.moreC.cpD.touch答案解析:chmod命令是控制用户对文件的权限的命令;more命令类似cat,不过会以一页一页的形式显示,更方便使用者逐页阅读;cp(copyfile)命令主要用于复制文件或目录;touch命令用于修改文件或者目录的时间......
  • [ Linux 命令基础 ] Linux 命令大全-命令前置知识-系统管理-文件和目录管理-文本处理
    ......
  • 【Ubuntu】查看系统中的CPU和DDR的使用状态
    目录一查看CPU状态二查看内存(DDR)状态一查看CPU状态top 或 htop:实时显示系统资源使用情况,包括CPU使用率、负载等。htop比top更直观,因为它提供了彩色的UI和鼠标支持,但需要先安装。 top命令是一个强大的系统监视工具,它可以实时显示系统中各个进程的资源占用状况,包括......
  • vscode远程连接linux调试GUI程序
    参考:https://zhuanlan.zhihu.com/p/385276301其中遇到的坑:(是否必须这样值得研究,这是多次尝试成功的结果)安装VcXsrv启动时设置DISPLAY为10后面把禁止访问控制勾上VSCODE的SSH连接配置里设置:Host192.168.1.233HostName192.168.1.233UserhaosouForwardX11yes......