Questions tagged «scheduling»

一种计划任务在特定时间或特定事件上运行的技术。




1
CFS的CPU使用率高吗?
我问了一个先前的问题,试图找出将应用程序从RHEL 5迁移到RHEL 6时CPU使用率增加的原因。我所做的分析似乎表明,这是由内核中的CFS引起的。我编写了一个测试应用程序来尝试验证是否是这种情况(已删除原始测试应用程序以适合大小限制,但仍在git repo中提供)。 我在RHEL 5上使用以下命令对其进行了编译: cc test_select_work.c -O2 -DSLEEP_TYPE=0 -Wall -Wextra -lm -lpthread -o test_select_work 然后,我使用这些参数,直到在Dell Precision m6500上每次迭代的执行时间约为1 ms。 我在RHEL 5上得到以下结果: ./test_select_work 1000 10000 300 4 time_per_iteration: min: 911.5 us avg: 913.7 us max: 917.1 us stddev: 2.4 us ./test_select_work 1000 10000 300 8 time_per_iteration: min: 1802.6 us avg: …

1
Linux中的实时流程调度
我一直在学习一些调度概念。目前,到目前为止,我的理解如下。 有实时过程和非实时过程。 非实时进程nice的优先级值可以在-20到+20之间。正值越高,表示该进程的优先级越低。 实时进程将列为正派值-作为这个答案说明这里。这主要是因为实时过程比非实时过程具有更高的优先级,并且niceness值不适用于它们。 现在,我可以chrt用来查看流程的实时属性。 对于实时过程,chrt给出的输出为 chrt -p 5 pid 5's current scheduling policy: SCHED_FIFO pid 5's current scheduling priority: 99 正如我们在流程5中看到的那样,优先级是最高的99。另外,调度策略是SCHED_FIFO 现在,对于非实时过程,chrt给出的输出为 chrt -p 22383 pid 22383's current scheduling policy: SCHED_OTHER pid 22383's current scheduling priority: 0 如我们对于进程22383所看到的,优先级为0,调度策略为SCHED_OTHER。 问题 我可以将任何过程都设为实时过程吗? 除了SCHED_OTHER非实时过程外,我是否可以设置其他调度算法? 从这里,我还看到我可以修改正在运行的进程的属性,因为, chrt -p prio pid 另外,我看到chrt -m了调度算法列表。该命令将输出显示为 SCHED_OTHER …

2
为什么精美度从-20到19?
该nice命令允许您调整程序的调度优先级(“ niceness”)。在我使用过的所有类Unix系统上,niceness由一系列整数指定,其中-20是最有利的调度优先级,默认值为0,最不利的调度优先级是19。 将默认值设为0足够直观,但是为什么选择-20和19作为范围的端点?为什么不使用-128和127,它们恰好适合带符号的8位字节?还是为什么不使用-100到100(对于十进制思维的人来说更直观),或者类似地但在人机工程学上更容易使用-99到99?-20至19的范围是任意选择的还是nice与最初与之交互的调度程序的内部有某种关系?(我知道,至少对于Linux来说,今天没有这种关系,Linux的调度程序使用的优先级在0到139之间。但是,我对-20到19范围的历史原因很感兴趣。)

1
怎么工作顺利?
sched_setscheduler说: 所有调度都是抢占式的:如果具有较高静态优先级的进程可以运行,那么当前正在运行的进程将被抢占并返回到其静态优先级的等待列表。 而setpriority说 每当系统上有其他更高优先级的负载时,这都会导致极低的良好值(+19)真正为进程提供很少的CPU,并使较高的良好值(-20)为需要它的应用程序提供大部分CPU 那么,改变尼斯值将如何影响程序的执行?它与RT调度类似(具有较高尼斯值的程序将中断具有较低尼斯值的程序)吗? 互联网上的所有信息都是如何使用nice以及如何更改进程的优先级。没有链接说明具有不同优先级的流程的确切工作方式。我什至找不到源代码。

1
如果计算机在指定时间关闭,那么at以后会运行命令吗?
我想用来计划作业at,但是我不确定如果计算机在指定的时间挂起会发生什么:计算机再次唤醒(如anacron),命令将立即执行吗?还是根本不执行(如cron)? 如果您将作业指定为绝对在过去的特定时间和日期运行,则该作业将尽快运行。 手册页就是这么说的,但是这与我的情况不完全相同:我不想指定要在过去运行的作业,我想在将来运行,并询问at如果计算机将如何处理那是在睡觉 这不是计算机休眠时“运行于”命令的副本,因为此问题询问是否at将唤醒计算机以执行命令,也不是“ 如何防止atd运行过去的作业”的副本?因为这是关于如何防止at执行那些“旧的”作业(尽管有一个很好的答案!)。
20 scheduling  at 



2
使用systemd每30分钟运行一次脚本
我想在启动系统后每30分钟执行一次脚本。我知道您可以使用cron,但是我不打算经常使用此功能,因此我想在systemd上尝试使用。 到目前为止,我只发现了单调计时器,它允许执行一次操作(至少我认为是这样)。如果我想从启动/系统启动起每30分钟执行一次操作,该foo.timer和foo@user.service会怎么样? foo@user.service [Unit] Description=run foo Wants=foo.timer [Service] User=%I Type=simple ExecStart=/bin/bash /home/user/script.sh foo.timer [Unit] Description=run foo [Timer] where I am stuck... ???

2
如何启用和使用BFQ调度程序?
我刚刚使用ukuu(Ubuntu内核更新实用程序https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility)在Ubuntu 17.04上安装了Linux内核版本4.12 。 问题是,当我检查可用的I / O调度程序时,似乎找不到BFQ或Kyber I / O调度程序: cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq] 那么如何使用此Linux版本中的新调度程序之一?


2
安排单个事件在将来某个时间发生的简单方法是什么?
很多时候,我希望计算机执行一项任务,但现在不执行。例如,我可以让它在30分钟内通知我该离开工作了。或者,也许我希望它从现在起2个小时进行一次复杂的测试,当时我确定大多数人都会离开办公室。 我知道我可以创建一个cron作业以在一天的特定时间运行,但是当我想要的只是诸如“在10分钟内运行此脚本”之类的简单操作时,这似乎是很多工作,此外,我还必须弄清楚从现在开始实际上是X分钟/小时/天的时间,然后在完成后删除cron作业。 当然,我可以只编写此脚本并在后台运行它: sleep X do_task 但这似乎很笨拙:我要么为每个任务需要一个新脚本,要么我需要编写和维护一个足以执行我想要的操作的通用脚本,更不用说我必须弄清楚分钟数是几秒钟,几小时或几天 还没有针对这个问题的解决方案吗?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.