当前位置:网站首页>CGroup CPU group source code analysis
CGroup CPU group source code analysis
2022-07-05 06:38:00 【techtitan】
cpu group pick_next function
The following code comes from pick_next_task_fair
6739 /*
6740 * Because of the set_next_buddy() in dequeue_task_fair() it is rather
6741 * likely that a next task is from the same cgroup as the current.
6742 *
6743 * Therefore attempt to avoid putting and setting the entire cgroup
6744 * hierarchy, only change the part that actually changes.
6745 */
6746
6747 do {
6748 struct sched_entity *curr = cfs_rq->curr;
6749
6750 /*
6751 * Since we got here without doing put_prev_entity() we also
6752 * have to consider cfs_rq->curr. If it is still a runnable
6753 * entity, update_curr() will update its vruntime, otherwise
6754 * forget we've ever seen it.
6755 */
6756 if (curr) {
6757 if (curr->on_rq)
6758 update_curr(cfs_rq);
6759 else
6760 curr = NULL;
6761
6762 /*
6763 * This call to check_cfs_rq_runtime() will do the
6764 * throttle and dequeue its entity in the parent(s).
6765 * Therefore the nr_running test will indeed
6766 * be correct.
6767 */
6768 if (unlikely(check_cfs_rq_runtime(cfs_rq))) {
6769 cfs_rq = &rq->cfs;
6770
6771 if (!cfs_rq->nr_running)
6772 goto idle;
6773
6774 goto simple;
6775 }
6776 }
6777
6778 **se = pick_next_entity(cfs_rq, curr);**
6779 **cfs_rq = group_cfs_rq(se);**
6780 } while (cfs_rq);
279 /* runqueue "owned" by this group */
280 static inline struct cfs_rq *group_cfs_rq(struct sched_entity *grp)
281 {
282 return grp->my_q;
283 }
1) If cpu original rq pick_next_entity Choose right and wrong cgoup node , that 6779 Line return empty , namely my_q It's empty
2) If 6778 Row selected cgroup The root node of sched_entity, Then according to cgroup The hierarchy traverses once , To the last layer node sched_entity Of my_q It's empty , Is the real task entity
group share Calculation
4.19 calc_group_shares
边栏推荐
- Chart. JS - Format Y axis - chart js - Formatting Y axis
- MPLS experiment
- MQClientException: No route info of this topic: type_ topic
- Financial risk control practice -- feature derivation based on time series
- 达梦数据库全部
- Vant Weapp SwipeCell設置多個按鈕
- P3265 [jloi2015] equipment purchase
- How to make water ripple effect? This wave of water ripple effect pulls full of retro feeling
- 背包问题 AcWing 9. 分组背包问题
- [Gaode map POI stepping pit] amap Placesearch cannot be used
猜你喜欢
ADG5412FBRUZ-RL7应用 双电源模拟开关和多路复用器IC
容斥原理 AcWing 890. 能被整除的数
Day 2 document
5. Oracle tablespace
Positive height system
[algorithm post interview] interview questions of a small factory
How to make water ripple effect? This wave of water ripple effect pulls full of retro feeling
Interval problem acwing 906 Interval grouping
代码中的英语全部
博弈论 AcWing 893. 集合-Nim游戏
随机推荐
2022 winter vacation training game 5
VLAN experiment
Modnet matting model reproduction
Huawei bracelet, how to add medicine reminder?
Redis-02. Redis command
求组合数 AcWing 888. 求组合数 IV
H5 embedded app adapts to dark mode
Vscode creates its own code template
博弈论 AcWing 894. 拆分-Nim游戏
Winter messenger 2
Speedtree01 generator properties
【高德地图POI踩坑】AMap.PlaceSearch无法使用
__ builtin_ Popcount() counts the number of 1s, which are commonly used in bit operations
[learning] database: several cases of index failure
Nested method, calculation attribute is not applicable, use methods
[2021]IBRNet: Learning Multi-View Image-Based Rendering Qianqian
Using handler in a new thread
2.Oracle-数据文件的添加及管理
'mongoexport 'is not an internal or external command, nor is it a runnable program or batch file.
博弈论 AcWing 891. Nim游戏