最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的評論 (共 條)

分享到微博請遵守國家法律
永修县| 龙里县| 昌邑市| 房山区| 木里| 临夏市| 永寿县| 独山县| 增城市| 同心县| 泸溪县| 江门市| 新田县| 琼海市| 合川市| 余姚市| 翁牛特旗| 永善县| 嘉祥县| 平原县| 扎囊县| 长丰县| 嘉义县| 郧西县| 阜阳市| 东乡族自治县| 达日县| 宜黄县| 民勤县| 郎溪县| 砚山县| 山西省| 邵武市| 西安市| 永济市| 胶南市| 盐源县| 陵水| 古田县| 渭南市| 赤水市|