401 Star 1.4K Fork 1.3K

GVPopenEuler / kernel

 / 详情

[openEuler-22.03] Fallback to sched-idle CPU in absence of idle CPUs.

已完成
需求 拥有者
创建于  
2021-09-14 14:16

Fallback to sched-idle CPU in absence of idle CPUs.
openEuler bugzilla 22

优化 SCHED_IDLE 策略。

https://static.linaro.org/connect/san19/presentations/san19-419.pdf

https://lore.kernel.org/lkml/cover.1561523542.git.viresh.kumar@linaro.org/T/

[PATCH V3 0/2] sched/fair: Fallback to sched-idle CPU in absence of idle CPUs
@ 2019-06-26 5:06 Viresh Kumar
2019-06-26 5:06 [PATCH V3 1/2] sched: Start tracking SCHED_IDLE tasks count in cfs_rq Viresh Kumar (3 more replies)
0 siblings, 4 replies; 15+ messages in thread
From: Viresh Kumar @ 2019-06-26 5:06 UTC (permalink / raw)
To: Ingo Molnar, Peter Zijlstra
Cc: Viresh Kumar, linux-kernel, Vincent Guittot, tkjos,
Daniel Lezcano, quentin.perret, chris.redpath, steven.sistare,
subhra.mazumdar, songliubraving

Hi,

We try to find an idle CPU to run the next task, but in case we don't
find an idle CPU it is better to pick a CPU which will run the task the
soonest, for performance reason.

A CPU which isn't idle but has only SCHED_IDLE activity queued on it
should be a good target based on this criteria as any normal fair task
will most likely preempt the currently running SCHED_IDLE task
immediately. In fact, choosing a SCHED_IDLE CPU over a fully idle one
shall give better results as it should be able to run the task sooner
than an idle CPU (which requires to be woken up from an idle state).

This patchset updates both fast and slow paths with this optimization.

Testing is done with the help of rt-app currently and here are the
details:

Tested on Octacore Hikey platform (all CPUs change frequency
together).

rt-app json [1] creates few tasks and we monitor the scheduling
latency for them by looking at "wu_lat" field (usec).

The histograms are created using
https://github.com/adkein/textogram: textogram -a 0 -z 1000 -n 10

the stats are accumulated using: https://github.com/nferraz/st

NOTE: The % values shown don't add up, just look at total numbers
instead

Test 1: Create 8 CFS tasks (no SCHED_IDLE tasks) without this patchset:

0 - 100 : ################################################## 72% (3688)
100 - 200 : ################ 24% (1253)
200 - 300 : ## 2% (149)
300 - 400 : 0% (22)
400 - 500 : 0% (1)
500 - 600 : 0% (3)
600 - 700 : 0% (1)
700 - 800 : 0% (1)
800 - 900 :
900 - 1000 : 0% (1)
>1000 : 0% (17)
N min max sum mean stddev
5136 0 2452 535985 104.358 104.585

Test 2: Create 8 CFS tasks and 5 SCHED_IDLE tasks:

A. Without sched-idle patchset:

0 - 100 : ################################################## 88% (3102)
100 - 200 : ## 4% (148)
200 - 300 : 1% (41)
300 - 400 : 0% (27)
400 - 500 : 0% (33)
500 - 600 : 0% (32)
600 - 700 : 1% (36)
700 - 800 : 0% (27)
800 - 900 : 0% (19)
900 - 1000 : 0% (26)
>1000 : 34% (1218)
N min max sum mean stddev
4710 0 67664 5.25956e+06 1116.68 2315.09

B. With sched-idle patchset:

0 - 100 : ################################################## 99% (5042)
100 - 200 : 0% (8)
200 - 300 :
300 - 400 :
400 - 500 : 0% (2)
500 - 600 : 0% (1)
600 - 700 :
700 - 800 : 0% (1)
800 - 900 : 0% (1)
900 - 1000 :
>1000 : 0% (40)
N min max sum mean stddev
5095 0 7773 523170 102.683 475.482

The mean latency dropped to 10% and the stddev to around 25% with this
patchset.

@Song: Can you please see if the slowpath changes bring any further
improvements in your test case ?

V2->V3:

Removed a pointless branch from 1/2 (PeterZ).
Removed the RFC tags as patches are getting in better shape now.
Updated the slow path as well, earlier versions only supported fast
paths.
Rebased over latest tip/master, fixed rebase conflicts.
Improved commit logs.

viresh

[1] https://pastebin.com/TMHGGBxD

Viresh Kumar (2):
sched: Start tracking SCHED_IDLE tasks count in cfs_rq
sched/fair: Fallback to sched-idle CPU if idle CPU isn't found

kernel/sched/fair.c | 57 ++++++++++++++++++++++++++++++++++----------
kernel/sched/sched.h | 2 ++
2 files changed, 47 insertions(+), 12 deletions(-)

评论 (2)

Hi xiexiuqi, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at
https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers: @Xie XiuQi, @YangYingliang, @成坚 (CHENG Jian).

Xie XiuQi 创建了需求
Xie XiuQi 关联仓库设置为openEuler/kernel
openeuler-ci-bot 添加了
 
sig/Kernel
标签
Xie XiuQi 关联分支设置为OLK-5.10
Xie XiuQi 修改了描述
展开全部操作日志

3c29e651e16d sched/fair: Fall back to sched-idle CPU if idle CPU isn't found
43e9f7f231e4 sched/fair: Start tracking SCHED_IDLE tasks count in cfs_rq

zhengzengkai 任务状态新建 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
5329419 openeuler ci bot 1632792936
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助