futex基礎問答

                  作者:OPPO內核團隊 發布于:2022-10-9 7:20 分類:內核同步機制

                  futex是Fast Userspace muTEX的縮寫,該機制是由Rusty Russell、Hubertus Franke和Mathew Kirkwood在2.5.7版本的內核中引入,雖然名字中有互斥鎖(mutex)的含義,但實際它是一種用于用戶空間應用程序的通用同步工具(基于futex可以在userspace實現互斥鎖、讀寫鎖、condition variable等同步機制)。

                  閱讀全文>>

                  標簽: futex

                  評論(1) 瀏覽(2789)

                  如何使能500個virtio_blk設備

                  作者:安慶 發布于:2022-8-12 16:12 分類:Linux內核分析

                  一例virtio_blk設備中斷占用分析

                  背景:這個是在客戶的centos8.4的環境上復現的,dpu是目前很多云服務器上的網卡標配了,在云豹的dpu產品測試中,dpu實現的virtio_blk設備在申請中斷時報錯,在排查這個錯誤的過程中,覺得某些部分還比較有趣,故記錄之。本身涉及的背景知識有:irq,msi,irq_domain,affinity,virtio_blk,irqbalance。下面列一下我們是怎么排查并解決這個問題的。

                  閱讀全文>>

                  評論(0) 瀏覽(1836)

                  Linux內核同步機制之(九):Queued spinlock

                  作者:OPPO內核團隊 發布于:2022-6-29 6:33 分類:內核同步機制

                  本站之前已經有了一篇關于spinlock的文檔,在之前的文章中有對自旋鎖進行簡單的介紹,同時給出了API匯整和應用場景。不過該文章中的自旋鎖描述是基于比較老的內核版本,那時候的自旋鎖還是ticket base鎖,而目前最新內核中的自旋鎖已經進化成queued spinlock,因此需要一篇新的自旋鎖文檔來跟上時代。此外,本文將不再描述基本的API和應用場景,主要的篇幅將集中在具體的自旋鎖實現上。順便說一句,同時準備一份linux5.10源碼是打開本文的正確方式。

                  由于自旋鎖可以在各種上下文中使用,因此本文中的thread是執行線索的意思,表示進程上下文、hardirq上下文、softirq上下文等多種執行線索,而不是調度器中線程的意思。

                  閱讀全文>>

                  標簽: spinlock queued

                  評論(1) 瀏覽(3384)

                  Linux內核同步機制之(八):mutex

                  作者:OPPO內核團隊 發布于:2022-5-10 5:55 分類:內核同步機制

                  在linux內核中,互斥量(mutex,即mutual exclusion)是一種保證串行化的睡眠鎖機制。和spinlock的語義類似,都是允許一個執行線索進入臨界區,不同的是當無法獲得鎖的時候,spinlock原地自旋,而mutex則是選擇掛起當前線程,進入阻塞狀態。本文代碼來自Linux 5.10.61,文章中的代碼片段有刪減,閱讀本文時可以參考源代碼。

                  閱讀全文>>

                  標簽: mutex

                  評論(2) 瀏覽(5243)

                  schedutil governor情景分析

                  作者:OPPO內核團隊 發布于:2022-4-26 6:29 分類:進程管理

                  這是一篇分析schedutil governor(后文稱之sugov)代碼邏輯的文章。通過詳細的代碼級別的分析,希望能夠幫助讀者理解sugov的代碼精妙之處。本文主要分四個章節:第一章簡單重復了sugov相關的軟件結構和基本算法,讓讀者對整個sugov在系統所處的位置和基本的邏輯控制有所了解。第二章對sugov使用的數據結構給出了詳細的解釋。第三章對sugov和cpufreq core的基本數據流和控制流進行分析。第四章描述了sugov本身的調頻邏輯。

                  本文出現的內核代碼來自Linux5.10.61,為了減少篇幅,我們會引用縮減版本的代碼(僅包含主要邏輯),如果有興趣,讀者可以配合原始代碼閱讀本文。

                  閱讀全文>>

                  標簽: governor schedutil

                  評論(2) 瀏覽(3745)

                  PELT算法淺析

                  作者:OPPO內核團隊 發布于:2022-4-7 7:09 分類:進程管理

                  Linux是一個通用操作系統的內核,她的目標是星辰大海,上到網絡服務器,下至嵌入式設備都能運行良好。做一款好的linux進程調度器是一項非常具有挑戰性的任務,因為設計約束太多了:

                  ---它必須是公平的

                  ---快速響應

                  ---系統的throughput要高

                  ---功耗要小

                  3.8版本之前的內核CFS調度器在計算CPU load的時候采用的是跟蹤每個運行隊列上的負載(per-rq load tracking)。這種粗略的負載跟蹤算法顯然無法為調度算法提供足夠的支撐。為了完美的滿足上面的所有需求,Linux調度器在3.8版中引入了PELT(Per-entity load tracking)算法。本文將為您分析PELT的設計概念和具體的實現。

                  本文出現的內核代碼來自Linux5.10.61,如果有興趣,讀者可以配合代碼閱讀本文。

                  閱讀全文>>

                  標簽: PELT

                  評論(9) 瀏覽(3844)

                  load_balance函數代碼詳解

                  作者:OPPO內核團隊 發布于:2022-2-16 7:29 分類:進程管理

                  我們描述CFS任務負載均衡的系列文章一共三篇,第一篇是框架部分,第二篇描述了task placement和active upmigration兩個典型的負載均衡場景,第三篇是負載均衡的情景分析,包括tick balance、nohz idle balance和new idle balance。在負載均衡情景分析文檔最后,我們給出了結論:tick balancing、nohz idle balancing、new idle balancing都是萬法歸宗,匯聚到load_balance函數來完成具體的負載均衡工作。本文就是第三篇負載均衡情景分析的附加篇,重點給大家展示load_balance函數的精妙。

                  本文出現的內核代碼來自Linux5.10.61,為了減少篇幅,我們對引用的代碼進行了刪減(例如去掉了NUMA的代碼,畢竟手機平臺上我們暫時不關注這個特性),如果有興趣,讀者可以配合完整的源代碼代碼閱讀本文。

                  閱讀全文>>

                  標簽: load_balance

                  評論(1) 瀏覽(3565)

                  CPU 多核指令 —— WFE 原理

                  作者:heaven 發布于:2022-2-11 1:34 分類:ARMv8A Arch

                  今天我想分享一個跟多核鎖原理相關的東西,由于我搞 arm 居多,所以目前只研究了 arm 架構下的 WFE 指令,分享出來,如果有表述不精準或者錯誤的地方還請大家指出,非常感謝。研究這個原因也是只是想搞清楚所以然和來龍去脈,以后寫代碼可以更游刃有余。

                  閱讀全文>>

                  標簽: ARM wfe wfi

                  評論(2) 瀏覽(3357)

                  CFS任務放置代碼詳解

                  作者:OPPO內核團隊 發布于:2021-12-31 7:00 分類:進程管理

                  我們描述CFS任務負載均衡的系列文章一共三篇,第一篇是框架部分,第二篇描述了task placement的邏輯過程,第三篇是負載均衡的情景分析,包括tick balance、nohz idle balance和new idle balance。之前已經有一篇關于task placement的文檔發表在本站,為了更精細的講解代碼邏輯,我們這次增加了代碼分析部分。本文作為第二篇任務放置的附篇,深入講解task placement的代碼流程。

                  本文出現的內核代碼來自Linux5.10.61,為了減少篇幅,我們對引用的代碼進行了刪減(例如去掉了NUMA的代碼,畢竟手機平臺上我們暫時不關注這個特性),如果有興趣,讀者可以配合完整的源代碼代碼閱讀本文。

                  閱讀全文>>

                  標簽: 任務放置 task placement

                  評論(0) 瀏覽(3638)

                  CFS任務的負載均衡(load balance)

                  作者:OPPO內核團隊 發布于:2021-11-22 20:49 分類:進程管理

                  我們描述CFS任務負載均衡的系列文章一共三篇,第一篇是框架部分,第二篇描述了task placement和active upmigration兩個典型的負載均衡場景。本文是第三篇,主要是分析各種負載均衡的觸發和具體的均衡邏輯過程。

                  本文出現的內核代碼來自Linux5.10.61,為了減少篇幅,我們盡量刪除不相關代碼,如果有興趣,讀者可以配合代碼閱讀本文。

                  閱讀全文>>

                  標簽: load balance

                  評論(2) 瀏覽(4760)

                  Copyright @ 2013-2015 蝸窩科技 All rights reserved. Powered by emlog
                  囯产精品无码一区二区三区在
                  不卡AV在线| 国产一区二区三精品久久久无广告| 成 人 不 卡| 欧美一区不卡| 欧洲一卡2卡3卡国色天香| 欧美不卡一区二区三区| 一本大道无码人妻精品专区| 国产一卡二卡3卡4卡免费观看| 国产卡二卡3卡乱码| 亚洲不卡一卡2卡3卡4卡网站| 日产精品一卡2卡三卡四卡二卡| 日本在线不卡免费| 天天色天天| 色一情一乱一交一二三区| 欧洲日韩不卡一卡2卡三卡4卡| 亚洲色精品一区二区三区四区| 日韩一卡2卡3卡4卡5卡网址| 日本一区视频| 日韩不卡在线视频| 日韩欧美亚洲| 狠狠噜天天噜日日噜| 中文精品一卡2卡3卡4卡| 亚洲无码不卡| 小小视频在线观看| 最新免费不卡一二区| 欧美一卡2卡三卡四卡精品| 老熟妇仑乱视频一二三区| 国产AV一卡二卡| 一卡二卡三乱码天美传媒| 日本精产品一二二区在线| 不卡欧美| 一品道一卡二卡三卡永久| 日本不卡三区| 亚洲卡1卡2 卡3卡4卡在线| 国产AV一卡二卡| 十八18禁国产精品www| 国产一卡二卡| 天天躁狠狠躁狠狠躁性色av| 亚洲一卡2卡3卡4卡5卡 国色天香| 日本一卡2卡3卡4卡国色天香八| 卡一卡2卡3卡4卡在线网站| 卡一卡二卡三| 欧美在线 | 亚洲| 亚洲免费精品| 亚洲无码一卡二卡| 乱码丰满人妻一二三区| 国产一区二区三区无码不卡|