- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在试验 SCHED_FIFO
,我看到了一些意外行为。我使用的服务器有 12 个内核,禁用了超线程。所有可配置的中断都已设置为在 CPU 0 上运行。
我的程序开始使用 pthreads 库为较低优先级任务创建一个线程,而不更改 CPU 亲和性设置为核心 0 的调度策略。然后父线程将其 CPU 亲和性设置为核心 3,并将其自己的调度策略设置为 SCHED_FIFO
使用 sched_setscheduler()
,pid 为零,优先级为 1,然后开始运行非阻塞循环。
程序本身运行良好。但是,如果我在程序运行时尝试第二次登录服务器,终端将无响应,直到我停止我的程序。这就像调度程序试图在与实时进程相同的核心上运行其他进程。
sched_setscheduler()
设置调度策略是否会改变之前创建的子级的行为?提前致谢。
最佳答案
sched_setscheduler
设置进程的调度程序,而不是线程。见:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/sched_setscheduler.html
如果要为线程设置调度程序,则需要在创建新线程之前对属性对象使用 pthread_attr_setschedpolicy
和 pthread_attr_setschedparam
函数。
我不确定 Linux 在满足这些要求方面的一致性如何,但您至少应该首先确保您的代码符合规范,然后根据需要进行调整...
关于c - Linux 实时调度优先级(SCHED_FIFO 和 SCHED_RR)的实际使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10563106/
我正在 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 时间得到的一
我是一名优秀的程序员,十分优秀!