草庐IT

scheduling

全部标签

linux - Linux 中常见实时进程的一些示例

Linux中常见的SCHED_FIFO和SCHED_RR进程有哪些?用户输入是否属于实时进程的范畴? 最佳答案 看看atthisquestion.“实时”(对于进程)指的是调度算法,或者内核在决定运行哪个进程时所做的思考。实时进程将preempt当接收到中断并需要运行时,所有其他进程(调度权重较小)。一个只接受用户输入的程序将在等待输入时进入休眠(阻塞)状态,甚至在击键之间(取决于)。这样的程序不需要那么高的调度优先级。RT进程应该需要在系统上的所有其他进程之前运行。这可能是因为该过程对于某些关键目标至关重要,或者需要高性能计时器(

linux - Process niceness(优先级)设置对 Linux 没有影响

我写了一个测试程序,它只包含一个无限循环和一些在内部进行计算,并且不执行输入/输出操作。我尝试启动该程序的两个实例,一个具有高niceness值,另一个niceness值较低:sudonice-n19taskset1./testsudonice-n-20taskset1./testtaskset命令确保两个程序在同一个内核上执行。与我的预期相反,顶级报告称这两个项目都获得了大约50%的计算时间。这是为什么?nice命令甚至有效果吗? 最佳答案 您看到的行为几乎可以肯定是因为Linux2.6.38(2010年)中添加的自动分组功能。大

linux - Process niceness(优先级)设置对 Linux 没有影响

我写了一个测试程序,它只包含一个无限循环和一些在内部进行计算,并且不执行输入/输出操作。我尝试启动该程序的两个实例,一个具有高niceness值,另一个niceness值较低:sudonice-n19taskset1./testsudonice-n-20taskset1./testtaskset命令确保两个程序在同一个内核上执行。与我的预期相反,顶级报告称这两个项目都获得了大约50%的计算时间。这是为什么?nice命令甚至有效果吗? 最佳答案 您看到的行为几乎可以肯定是因为Linux2.6.38(2010年)中添加的自动分组功能。大

linux - 多处理器机器中posix线程的并发

我对多处理器机器中posix线程的并发性有一些疑问。我在SO中发现了类似的问题,但没有找到决定性的答案。以下是我的理解。我想知道我是否正确。Posix线程是用户级线程,内核不知道它。内核调度程序会将进程(及其所有线程)视为一个实体进行调度。是线程库依次选择运行哪个线程。它可以在可运行线程中分割内核给定的cpu时间。用户线程可以在不同的cpu内核上运行。即让线程T1和T2由Process(T)创建,然后T1可以在Cpu1中运行,T2可以在Cpu2中运行,但它们不能同时运行。请让我知道我的理解是否正确。谢谢... 最佳答案 既然你用“L

linux - 多处理器机器中posix线程的并发

我对多处理器机器中posix线程的并发性有一些疑问。我在SO中发现了类似的问题,但没有找到决定性的答案。以下是我的理解。我想知道我是否正确。Posix线程是用户级线程,内核不知道它。内核调度程序会将进程(及其所有线程)视为一个实体进行调度。是线程库依次选择运行哪个线程。它可以在可运行线程中分割内核给定的cpu时间。用户线程可以在不同的cpu内核上运行。即让线程T1和T2由Process(T)创建,然后T1可以在Cpu1中运行,T2可以在Cpu2中运行,但它们不能同时运行。请让我知道我的理解是否正确。谢谢... 最佳答案 既然你用“L

linux - Tickless Linux 内核是否会引入基准时序变化?

我正在运行一些基准测试,我想知道使用“tickless”(又名CONFIG_NO_HZ_FULL_ALL)Linux内核对基准测试有用还是有害。我正在运行的基准测试每次都会使用一个新进程重复多次。我想控制尽可能多的变异源。我在网上做了一些阅读:https://www.kernel.org/doc/Documentation/timers/NO_HZ.txthttps://lwn.net/Articles/549580/从这些来源我了解到:在默认配置(CONFIG_NO_HZ=y)中,只有非空闲CPU会接收时钟信号。因此,在这种模式下,我的基准测试总是收到报价。在“无滴答”模式(CONF

linux - Tickless Linux 内核是否会引入基准时序变化?

我正在运行一些基准测试,我想知道使用“tickless”(又名CONFIG_NO_HZ_FULL_ALL)Linux内核对基准测试有用还是有害。我正在运行的基准测试每次都会使用一个新进程重复多次。我想控制尽可能多的变异源。我在网上做了一些阅读:https://www.kernel.org/doc/Documentation/timers/NO_HZ.txthttps://lwn.net/Articles/549580/从这些来源我了解到:在默认配置(CONFIG_NO_HZ=y)中,只有非空闲CPU会接收时钟信号。因此,在这种模式下,我的基准测试总是收到报价。在“无滴答”模式(CONF

linux - Linux 调度程序是否更喜欢在 fork() 之后运行子进程?

Linux调度程序是否更愿意在fork()之后运行子进程到父进程?通常,fork进程会执行某种exec,因此最好让子进程在父进程之前运行(以防止写时复制)。我假设子进程将在创建后执行exec作为第一个操作。我的假设(调度程序更喜欢子进程)是否正确。如果不是,为什么?如果是,是否有更多理由先运行child? 最佳答案 引用TheLinuxProgrammingInterface(pg.525)一般答案:Afterafork(),itisindeterminatewhichprocess-theparentorthechild-next

linux - Linux 调度程序是否更喜欢在 fork() 之后运行子进程?

Linux调度程序是否更愿意在fork()之后运行子进程到父进程?通常,fork进程会执行某种exec,因此最好让子进程在父进程之前运行(以防止写时复制)。我假设子进程将在创建后执行exec作为第一个操作。我的假设(调度程序更喜欢子进程)是否正确。如果不是,为什么?如果是,是否有更多理由先运行child? 最佳答案 引用TheLinuxProgrammingInterface(pg.525)一般答案:Afterafork(),itisindeterminatewhichprocess-theparentorthechild-next

linux - 调度程序代码在什么上下文中运行?

调用调度器代码schedule()有两种情况——当一个进程主动调用schedule()定时器中断调用schedule()在情况2中,我认为schedule()在中断上下文中运行,但是第一种情况呢?它是否在调用它的进程的上下文中运行?还有没有更多的场景调用schedule()? 最佳答案 schedule()始终在进程上下文中运行。在第二种情况下,当它由定时器中断启动时,它位于从内核返回到调用schedule()的中断进程的返回路径中。 关于linux-调度程序代码在什么上下文中运行?,我