国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深入解析linux cpu hotplug

2022-12-09 20:52 作者:補給站Linux內(nèi)核  | 我要投稿

說明:

  1. Kernel版本:4.14

  2. ARM64處理器

  3. 使用工具:Source Insight 3.5, Visio

1. 介紹

Linux CPU熱插拔,支持在系統(tǒng)啟動后,關(guān)閉任意一個secondary cpu(在ARM架構(gòu)中,CPU0為boot cpu,不能被關(guān)閉),并在需要時重新打開它。

CPU-hotplug的一個用處是,支持SMP的SuspendResume,這個也是我看CPU-hotplug的原因。

代碼路徑:include/linux/cpuhotplug.hkernel/cpu.ckernel/smpboot.carch/arm64/kernel/smp.c

2. 數(shù)據(jù)結(jié)構(gòu)

關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)有三種,如下圖所示:

圖片
  • struct cpuhp_cpu_state:用來存儲hotplug的狀態(tài);

  • enum cpuhp_state:枚舉各種狀態(tài),這個會對應(yīng)到全局?jǐn)?shù)組中的某一項,而該項中會定義回調(diào)函數(shù)。當(dāng)然,也可以通過函數(shù)接口來設(shè)置回調(diào)函數(shù)。

  • struct cpuhp_step:Hotplug state machine step,主要定義了函數(shù)指針,當(dāng)跳轉(zhuǎn)到某一個狀態(tài)時會回調(diào)。


【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【749907784】整理了一些個人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)? ?

3. 流程

Linux內(nèi)核會創(chuàng)建虛擬總線cpu_subsys,每個CPU注冊的時候,都會掛載在該總線上,CPU的online和offline的操作,最終會回調(diào)到該總線上的函數(shù)。通過echo 0 > /sys/devices/system/cpu/cpu1/onlineecho 1 > /sys/devices/system/cpu/cpu1/online來控制CPU的熱插拔。

看圖吧。

3.1 cpu_up

圖片
  • Kernel會為每個CPU都創(chuàng)建一個hotplug線程,執(zhí)行teardown/startup回調(diào)函數(shù);

  • cpu_up的時候依賴底層的__cpu_up函數(shù)的實現(xiàn);

3.2 cpu_down

圖片
  • cpu_down的實際操作還是很復(fù)雜的,這種圖只畫了一部分,涉及到該CPU上的線程park,以及中斷migrate,clockevents清除,以及通知上層等,不再深入研究了;

  • cpu_down的時候依賴底層的__cpu_die__cpu_disable函數(shù)的實現(xiàn);

CPU的Hogplug框架,針對是各類CPU,是一個通用的處理模式,涉及的面很寬,后續(xù)如果要用到的時候再繼續(xù)研究。


原文作者:LoyenWang



深入解析linux cpu hotplug的評論 (共 條)

分享到微博請遵守國家法律
贵定县| 石柱| 蛟河市| 蓝山县| 沾化县| 海城市| 彝良县| 玉林市| 尤溪县| 措勤县| 珠海市| 启东市| 龙山县| 正定县| 宣威市| 南靖县| 积石山| 商丘市| 前郭尔| 虞城县| 洪湖市| 墨江| 商河县| 华池县| 余姚市| 青神县| 乌拉特后旗| 临猗县| 民县| 新建县| 镇远县| 新疆| 松桃| 福清市| 永福县| 平安县| 邯郸市| 宝清县| 资溪县| 新野县| 大同县|