
Schedule
文章平均质量分 83
yiyeguzhou100
专注,探索,分享
展开
-
soft lockup的线程无法kill的原因
构造简单驱动在内核态死循环场景,第二个write_lock在当前cpu上一直自旋(线程处于R状态),造成内核softlockup,238214 root 20 0 13240 1964 1832 R 100.0 0.0 5124099h insmod[275512.284998] watchdog: BUG: soft lockup - CPU#11 stuck for 22s! [insmod:238214][275512.285665] RIP: 0010:...原创 2020-07-23 21:01:50 · 632 阅读 · 0 评论 -
Do we need to call set_current_state(TASK_INTERRUPTIBLE) before calling schedule?
Do I need to callset_current_state()before callingschedule()to schedule the next process from the run queue?I have seen lot of code where the kernel thread function is usingset_current_state()to set the state toTASK_RUNNINGorTASK_UNINTERRUPTIBLE...转载 2020-05-15 13:45:59 · 661 阅读 · 0 评论 -
sched feature: TTWU_QUEUE
try_to_wakeup --> ttwu_queue原创 2020-02-16 20:43:59 · 2259 阅读 · 0 评论 -
睡眠线程唤醒后vruntime的补偿
enqueue_entity -> if (flags & ENQUEUE_WAKEUP) place_entity(cfs_rq, se, 0);因GENTLE_FAIR_SLEEPERS默认为ture,所以默认补偿值为调度周期的1/2,为3ms。下面函数在fork新进程时inital参数才为1(fork线程时,对新线程的vruntime会有一定惩罚,防止恶意...原创 2020-01-12 13:54:14 · 478 阅读 · 0 评论 -
numa节点间CPU利用率不均衡 - wakeup affinity
最近遇到服务器numa节点间cpu利用率不均衡,清除sched_domain的flags中的AFFINE_WAKEUPS标志位是一个优化方法。但是如果直接将AFFINE_WAKEUPS关闭,将无法充分利用L2、L3 cache缓存命中带来的性能提升以及内存访问性能。这还是要根据当前系统运行情况而定,例如在第二篇文章提到,如果在numa系统上,一个numa node利用率非常高,比如高于90%,...原创 2019-12-22 20:58:29 · 4059 阅读 · 1 评论 -
cond_resched的使用
kernel 4.18(centos8)中的cond_resched在可抢占内核中,在内核态有很多抢占点,在有高优先级的进程需要运行时,就会在抢占点到来时执行抢占;而在内核不可抢占系统中(如centos系统),在内核态运行的程序可调用cond_resched主动让出cpu,防止其在内核态执行时间过长导致可能发生的soft lockup或者造成较大的调度延迟。如下should_res...原创 2019-12-15 21:37:11 · 9894 阅读 · 1 评论 -
唤醒实时进程时对目标cpu的选择策略与存在的问题
以下三篇文章阐述了唤醒实时进程时对目标cpu的选择策略与可能存在的问题。1,对待实时进程(RT)抢占的问题一个进程被唤醒,在linux中是调用try_to_wake_up函数,对于RT进程也不例外,对于一般进程而言,如果在一个cpu运行队列上被唤醒的进程的优先级大于该cpu的当前进程,那么就会发生抢占,而如果两个进程都是RT进程则不会发生抢占,理由是cache的保持,如果发生抢占的话,被抢...转载 2019-12-11 22:56:38 · 571 阅读 · 0 评论 -
__schedule中调度问题debug
之前定位一个调度延迟的问题,用ftrace抓sched tracepoint,发现有部分关键调度数据就是抓不到,无奈只能修改__schedule函数,增加打印更多的线程调度数据,最后通过printk打印(需要调大LOG BUFFER,因为调度切换日志太多了),打印是否启用可利用在sched_feature中增加一个开关来控制。还是比较有用的,记录一下。...原创 2019-11-27 23:41:19 · 724 阅读 · 0 评论 -
记一次ltp测试导致的soft lockup问题分析与内核态不可抢占的关系
首先什么是软锁(soft lockup),A ‘softlockup’is defined asa bug that causes the kernel to loop in kernel mode for more than 20 seconds(see “Implementation” below for details), without giving other tasks a ...原创 2019-11-15 23:49:05 · 731 阅读 · 0 评论 -
perf sched查看调度延迟与唤醒延迟
ftrace也可以通过内核中固定的调度相关的tracepoint来记录线程的调度信息,但ftrace只能抓到调度的原始数据(线程调度切换流程),不能提供统计分析功能,只提供类似于perf sched script的功能。perf也是利用内核中固定的调度trcepoint,但perf提供了统计分析功能,例如可以查看某段时间内的最大调度延迟等信息。1,perf sched record2,...原创 2019-10-29 23:19:45 · 9649 阅读 · 0 评论 -
Linux Scheduler – CFS and Virtual Run Time (vruntime)
https://oakbytes.wordpress.com/2012/07/03/linux-scheduler-cfs-and-virtual-run-time/Linux Scheduler – CFS and Virtual Run Time (vruntime)In Linux Scheduler, Work In Progress on July 3, 2012转载 2017-07-09 21:56:06 · 600 阅读 · 0 评论 -
深入 Linux 的进程优先级
http://www.linuxidc.com/Linux/2016-05/131244.htm为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。本文作者:邹立巍Linux系统技术专家。目前在腾讯SNG社交网络运营部 计算资源平台组,负责内部私有转载 2017-07-09 15:54:34 · 466 阅读 · 0 评论 -
从几个问题开始理解CFS调度器
从几个问题开始理解CFS调度器Linux Performance 2014-12-18 2243 阅读CFS(完全公平调度器)是Linux内核2.6.23版本开始采用的进程调度器,它的基本原理是这样的:设定一个调度周期(sched_latency_ns ),目标是让每个进程在这个周期内至少有机会运行一次,换一种说法就是每个进程等待CPU的时间最长不超过这个调度周期;然后根据原创 2017-07-09 13:04:28 · 598 阅读 · 0 评论 -
linux内核分析——CFS(完全公平调度算法)
http://www.cnblogs.com/tianguiyu/articles/6091378.html1.1 CFS原理 cfs定义了一种新的模型,它给cfs_rq(cfs的run queue)中的每一个进程安排一个虚拟时钟,vruntime。如果一个进程得以执行,随着时间的增长(也就是一个个tick的到来),其vruntime将不断增大。没有得到执行的进程vr转载 2017-07-09 12:29:59 · 651 阅读 · 0 评论 -
Linux CFS调度器之虚拟时钟vruntime与调度延迟--Linux进程的管理与调度(二十六)
http://lib.youkuaiyun.com/article/linux/39952Linux CFS调度器之虚拟时钟vruntime与调度延迟--Linux进程的管理与调度(二十六)作者:gatieme日期内核版本架构作者GitHub优快云2016-07-29Linux-4.6转载 2017-07-09 22:04:32 · 725 阅读 · 0 评论 -
HOWTO Build an RT-application
https://rt.wiki.kernel.org/index.php/HOWTO:_Build_an_RT-applicationThis document describes the steps towriting hard real time Linux programs while using the real time Preemption Patch. It also d转载 2017-09-23 22:22:01 · 488 阅读 · 0 评论 -
Linux RT 维护人Steven Rostedt 的关于RT Linux 的slides
Linux RT 维护人Steven Rostedt 的关于RT Linux 的slide2013-11-08 上传大小:454KB StevenRostedtRTLinux本文是Linux-stable-RT 维护人Steven Rostedt 的关于RT Linux 的slide,看完之后想必对RT Linux会有了新的理解!http://downloa转载 2017-11-07 09:47:27 · 594 阅读 · 0 评论 -
Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)
Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)https://blog.youkuaiyun.com/gatieme/article/details/51872618转载 2019-01-05 11:21:40 · 227 阅读 · 0 评论 -
从几个问题开始理解CFS调度器
从几个问题开始理解CFS调度器2019/01/17VMUNIXCFS(完全公平调度器)是Linux内核2.6.23版本开始采用的进程调度器,它的基本原理是这样的:设定一个调度周期(sched_latency_ns),目标是让每个进程在这个周期内至少有机会运行一次,换一种说法就是每个进程等待CPU的时间最长不超过这个调度周期;然后根据进程的数量,大家平分这个调度周期内的CPU使用权,由于进...转载 2019-05-05 18:02:32 · 309 阅读 · 0 评论 -
Linux perf sched Summary
http://oliveryang.net/2017/04/linux-perf-sched/本文翻译自 Brendan Gregg 博客文章,所有权利归原作者所有.译者: Oliver Yang原文链接: http://www.brendangregg.com/blog/2017-03-16/perf-sched.html1. Overview 2. perf sched la...转载 2019-05-29 22:18:46 · 1453 阅读 · 0 评论 -
Linux High Loadavg Analysis
文本首发于 Linuxer 微信订阅号,文章原文为:浅谈 Linux 高负载的系统化分析。 转载时请包含原文或者作者网站链接:http://oliveryang.net从消除误解开始 没有基线的 Load,是不靠谱的 Load 如何排查 Load 高的问题 R状态任务增多 D状态任务增多 CPUiowait高 CPUidle高 以问题结束...转载 2019-05-29 22:32:34 · 274 阅读 · 0 评论 -
实时任务带宽控制
/proc/sys/kernel/sched_rt_runtimes_us,默认:950000/proc/sys/kernel/sched_rt_period_us,默认:1000000 在使用该功能时,当实时任务的带宽用尽时(sched_rt_runtime_us),内核会将对应的实时运行队列rt_rq给插起来(throttle)即禁止系统调度实时任务;之后不管是否有非实转载 2017-07-08 23:04:28 · 2931 阅读 · 0 评论