原创 Analysis and Solution for Cpuidle Power Nightmare

在debug CPU idle功耗的時候,發現CPU持續好幾秒一直處於C1(WFI)狀態,功耗很高。所以下面的PPT就是講解這部分內容的。 內容概述 涉及的內容如下: CPUidle governor當前兩個governor l

原创 [power]二. Dynamic voltage and frequency scaling(DVFS)簡單概述

Many systems operate under conditions where their workload is variable. Therefore it is useful to have the ability

原创 Kernel space lock contention配置及其使用

概述 本文涉及到的內容如下: kernel lock相關debug方式,比如lock耗時,拿不到lock,lock依賴等等 trace的使用 1.開啓lock contenttion涉及到的config配置 config LO

原创 [Python解析systrace.html]chrome打開systrace分析,圖形顯示時間點與文本時間點一一對應,方便debug使用

一、編寫這個腳本的理由: 抓取systrace之後,需要使用chrome在網站chrome://tracing/解析出來,但是很多時候,我們發現問題之後,需要vim systrace文件定位到具體位置。這時候問題來了,不容易查找這

原创 pr_emerg耗時,影響性能原理排查

概述 本文涉及到的性能debug方式如下: ftrace的使用。 lock contention/lockdep的使用。 一、 問題來源以及debug思路 “在調試 vdsp的dvfs,發現notify執行dvfs callb

原创 [scheduler] task運行時間,util和frequency三者之前的關係

在WALT裏面,一個task的util大小,涉及到下面幾個參數: WALT窗口大小 cpu當前頻率和cpu最高頻率 task在一個窗口實際運行時間 task demand獲取機制(比如最近窗口的數值,前五個窗口的最大數值等等)

原创 [big/little system scheduler]五. big.LITTLE Technology

概述 本文涉及的內容如下: 爲何需要big.little 技術 如何配置big.little big.little系統如何調度 爲何需要big.little技術 Modern software stacks place con

原创 [scheduler]三. rt task如何選擇目標CPU運行

概述 我們知道當一個task被fork或者wakeup起來的時候,都會選擇一個目標CPU,進行入隊操作.這個函數就是在core.c裏面的select_task_rq函數,之後根據task的調度類型選擇進入到不同分支.所以下面就分析

原创 [scheduler]cfs調度算法如何判斷task是否是Misfit task?

什麼是Misfit task,滿足如下幾個條件的task就是Misfit task,是做負載均衡的一個條件 當前cpu的capacity不是系統最大的cpu capacity 當前task的util(修正後的)不超過當前cpu的

原创 [cpufreq governor] schedutil governor解析

1.schedutil governor相關的結構體說明 struct sugov_policy { struct cpufreq_policy *policy; /*cpu freq的policy*/

原创 [scheduler]調度器如何判斷cpu_overutilized?

計算過程如下: static bool cpu_overutilized(int cpu) { return __cpu_overutilized(cpu, 0, NULL); } static bool

原创 [scheduler]十. 不考慮能效是如何爲task選擇合適的cpu?

一 概述 之前在講解新創建進程和idle進程被wake_up_process之後如何被調度器調度的原理,有兩個點沒有分析的很清楚,就是在這個調度的過程中,如何選擇一個cpu來執行調度實體。現在單獨拎出來詳細分析: 如果EAS f

原创 [scheduler]六. fork/clone等方式創建的進程如何被調度的

說明: 對於函數select_task_rq的分析,本章分析的不夠清晰,後面會專門有兩篇文章分析傳統的負載均衡遷移進程和EAS如何根據能效爲進程選擇目標CPU 兩篇文章請參考: 一: 九. EAS如何根據能效爲進程選擇目標CP

原创 [scheduler]八. CFS調度算法怎麼計算進程(PELT算法)/cpu/系統 利用率的

Scheduler裏面這個負載的概念可能被誤解爲cpu佔用率,但是在調度裏面這個有比較大的偏差。scheduler不使用cpu佔用率來評估負載,而是使用runnable_time_avg,即平均運行時間來評估負載。sheduler

原创 [cpufreq governor] scale_freq_capacity/scale_cpu_capacity怎麼計算的

定義的地方 #ifdef CONFIG_CPU_FREQ #define arch_scale_freq_capacity cpufreq_scale_freq_capacity extern unsigned long