- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的操作系统类做一些 Linux CFS 分析,并且有一个我无法解释的观察结果。
对于两个在其他方面完全相同的进程,当它们使用 SCHED_OTHER 策略执行时,与使用 SCHED_FIFO 或 SCHED_RR 策略执行它们时相比,我发现自愿上下文切换大约多 50%。
对于非自愿 切换,这不会让我感到惊讶,因为 SCHED_OTHER 的优先级要低得多,所以它必须放弃 CPU。但为什么自愿开关会出现这种情况。为什么 SCHED_OTHER 会比实时进程更频繁地自愿放弃 CPU?这是一个相同的过程,所以它只是在切换到 I/O 时自愿放弃 CPU,对吗?而且我认为策略的选择不会影响 I/O 尝试的频率。
任何 Linux 人有想法吗?谢谢!
最佳答案
首先了解调度策略只不过是在内核中实现的调度算法。所以SCHED_FIFO、SCHED_RR、SCHED_OTHER是内核中不同的算法。 SCHED_FIFO 和 SCHED_RR 属于实时调度算法“类”。 SCHED_OTHER 只不过是系统中正常进程的调度算法,更通俗地称为 CFS(Completely Fair Scheduler)算法。
SCHED_OTHER has a much lower priority
准确地说,它的优先级并没有“低很多”,而是比实时调度类低“一个”。 Linux Scheduler中共有三个调度类——Real-Time调度类、Normal Process调度类和Idle Tasks调度类。优先级如下:
系统上的任务属于这些类别之一。 (请注意,在任何时间点,一项任务只能属于一个调度类,尽管它的类可以更改)。 Linux中的调度器首先检查实时类中是否有任务。如果有的话,它会调用 SCHED_FIFO 或 SCHED_RR 算法,具体取决于系统上的配置。如果没有实时任务,则调度程序检查正常任务并根据是否有任何正常任务准备运行来调用 CFS 算法。还有
回到主要问题,当您在两个不同的调度类中运行相同的进程时,为什么会看到更多的上下文切换。有两种情况:
希望答案是完整的:)
关于linux-kernel - Linux CFS 志愿者上下文切换 SCHED_OTHER SCHED_FIFO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15670460/
我正在 Linux RT 多核机器上测试我的多线程应用程序。 但是在测试过程中,我们观察到 Linux RT 中的调度(使用 SCHED_FIFO 调度策略创建)并未按照 SCHED_FIFO 策略进
我有两个线程,线程 1 和线程 2。我先创建thread1,然后创建thread2。但是thread2是先调度的。我想在线程 2 之前安排线程 1。我将线程 1 的策略更改为 SCHED_FIFO,将
根据我在搜索过程中了解到的情况,FIFO 任务需要阻塞或自愿放弃,以便释放 CPU 并允许其他任务在该 CPU 上运行。我不能确定的是 3 个具体情况: 1) 优先级为 99 的(可运行的)FIFO
Linux 中采用 SCHED_FIFO 策略的线程的默认优先级是多少?范围为 0-99。 最佳答案 根据Red Hat Enterprise MRG 1.3Realtime Reference Gu
我想用 RR 调度创建 3 个线程。在每个线程中我将创建例如5 个线程,采用 FIFO 调度。 我知道3个线程有指定的处理时间。在此期间,其他 5 个线程应以“RR”调度运行。在这段时间之后,其他 2
我编写了一个创建 pthread 并为 pthread 设置 SCHED_FIFO 策略的小程序。代码如下: int main(int argc, char *argv[]){ ... p
SCHED_FIFO 和 SCHED_RR 都是为实时使用而设计的。我知道 SCHED_RR 可以被时间片抢占。但是如果我有一个线程设置为 SCHED_FIFO,另一个设置为 SCHED_RR,如果两
我在主线程中创建了两个线程ThreadA和ThreadB,并且三个线程具有相同的优先级。调用顺序是ThreadA在ThreadB前面(我看不懂)。 但是,当增加主线程优先级时,调用顺序是ThreadB
这是来自 sched_setscheduler(2) - Linux 手册页: “根据其中一项实时策略(SCHED_FIFO、SCHED_RR)安排的进程的 sched_priority 值在 1(低
谁能解释一下 SCHED_OTHER、SCHED_FIFO 和 SCHED_RR 之间的区别? 谢谢 最佳答案 SCHED_FIFO 和 SCHED_RR 是所谓的“实时”策略。它们实现了 POSIX
我正在为我的操作系统类做一些 Linux CFS 分析,并且有一个我无法解释的观察结果。 对于两个在其他方面完全相同的进程,当它们使用 SCHED_OTHER 策略执行时,与使用 SCHED_FIFO
我正在为我的操作系统类做一些 Linux CFS 分析,并且有一个我无法解释的观察结果。 对于两个在其他方面完全相同的进程,当它们使用 SCHED_OTHER 策略执行时,与使用 SCHED_FIFO
我正在通过切换 GPIO 线并在示波器上观察波形来试验一些抖动定时测试。我的内核是用 PREEMPT_RT 编译的。我希望将进程的调度程序更改为 SCHED_FIFO 会减少抖动,但似乎并没有太大的不
我正在 Raspberry Pi 上运行一个 python 程序,我想将其设置为 SCHED_FIFO 或 SCHED_RR 优先级。我在网上找到了一些使用 C/C++ 执行此操作的人的信息,代码如下
我已经编写了一个测试程序来测试 SCHED_FIFO。我了解到 SCHED_FIFO 不能被 SCHED_OTHER 线程抢占。但是我无法解释多次运行同一个程序时获得的结果。 /* Includes
我想让一个实时进程接管我的电脑。 :) 我一直在玩这个。我创建了一个本质上是 while (1) 的进程(从不阻塞或产生处理器)并使用 schedtool 以 SCHED_FIFO 策略运行它(也试过
我正在试验 SCHED_FIFO,我看到了一些意外行为。我使用的服务器有 12 个内核,禁用了超线程。所有可配置的中断都已设置为在 CPU 0 上运行。 我的程序开始使用 pthreads 库为较低优
我正在编写一个非常小的守护进程,即使在系统承受巨大压力时它也必须保持响应。我正在研究 SCHED_FIFO 和 SCHED_RR 在调度方面的差异,并试图确定一个合理的优先级。 哪种调度程序适合小型但
TL;DR 在多处理器/多核引擎上,可以在多个执行单元上调度多个 RT SCHED_FIFO 线程。因此优先级为 60 的线程和优先级为 40 的线程可以同时在 2 个不同的内核上运行。 这可能是违反
想知道这里是否有消息灵通的 Linux 专家可以回答我的问题。我一直在为我的 OS 类做统计分析,其中调度程序对 CPU 和 IO 绑定(bind)进程更有效/有效。我无法解释从 GNU 时间得到的一
我是一名优秀的程序员,十分优秀!