todo

cpu load and idle percent

up:2024-07-02 09:27:58 edit:2024-11-13 14:04:13 view:323

cpu load计算

查看:cat /proc/loadavg :1m 5m 15m nr_running()/total_threads last_thread

计算:每5秒钟采样,计算running和uninterrupted个数,指数滤波,存储


分析:procs_blocked好像不准  watch "grep procs /proc/stat; cat /proc/loadavg;pcs=\$(ps -eTl |grep -v -E '^[0-9] S ');echo \"\$pcs\" |grep -E '^[0-9] R' |wc -l ; echo \"\$pcs\" |grep -E '^[0-9] D' |wc -l ;echo \"\$pcs\" "


查看线程状态和所属cpu

ps -eLO psr


* calc_load - given tick count, ι
* This is called while holding a
*
static inline void calc_load(unsi
{
unsigned long active_task
static int count = LOAD_
count -= ticks;
if (count < 0) { count += LOAD_FRE active_tasks = CO CALC_LOAD(avenrur CALC_LOAD(avenrur CALC_LOAD(avenrur } static unsigned long count_active { return nr_active() * FIXE } #define LOAD_FREQ (5*HZ) #define EXP_1 1884 #define EXP_5 2014 #define EXP_15 2037 

cpu usage

应该是从 /proc/stat 获取各种时间的累计值,然后计算百分比



参考:

load计算:

https://blog.csdn.net/weixin_34223655/article/details/92562329

https://wiki.nix-pro.com/view/Load_average_explained


多核任务balance

https://blog.csdn.net/code_lyb/article/details/128048254

https://cloud.tencent.com/developer/article/1449436

https://en.wikipedia.org/wiki/Run_queue


idle说明

https://www.kernel.org/doc/html/v5.0/admin-guide/pm/cpuidle.html

https://en.wikipedia.org/wiki/Idle_(CPU)



0,1,2号进程

https://blog.csdn.net/m0_47696151/article/details/121947320

https://www.cnblogs.com/alantu2018/p/8526970.html


cpu load高而idle也高(即cpu使用率不高,包括io wait也不高),可能原因是小任务太多,排除数较多但能很快消下去,经过采样和平均,load可能比较高。

可能vmstat 1看到load始终大于核数,但还有较大idle%的情况,可能是任务在多核间分配不均,部分核有>1任务,部分核空闲


not in sinaapp