Ara*_*joe 5 linux real-time ulimit
调用ulimit -a返回如下:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1895
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1895
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Run Code Online (Sandbox Code Playgroud)
-r(实时)选项有什么作用?
TL-DR:调度程序可以为 shell 生成的进程分配最高(=最紧急)优先级。
罗嗦解释
ulimit控制 shell 可用的资源:它报告和/或设置此类限制。
-r标志报告为调度由 shell 生成的进程分配的最高优先级。由于优先级从0(最紧急)到99(最不紧急),这意味着 shell 生成的进程(属于实时应用程序类的进程)可以获得最高的调度优先级。
进程可以根据其资源使用情况(I/O 密集型或CPU 密集型,取决于它们主要使用 I/O 还是 CPU 资源)进行分类,或者更相关的是,根据其紧急程度进行分类(非技术性表达)。有 像shell这样的交互过程:由于我们人类又慢又笨,所以电脑浪费了很多时间等待我们甚至举起一根手指。然而,一旦按下某个键,这些进程就需要被赋予高优先级,除非我们感觉系统变得无响应;平均延迟必须为 50 毫秒左右,并且方差很小。
还有批处理进程,它们不需要用户交互,主要在后台运行,因此调度程序的优先级较低。一个典型的例子是科学计算。
最后,实时进程对调度程序施加了最严格的约束。此类别包括视频和音频录制和播放、来自物理传感器、机器人控制器的数据收集。必须给予这些进程最高的优先级,以便它们能够执行任务。
ulimit报告的优先级为0的事实并不意味着这一定是0 : 0是硬限制,您可以将软限制设置为较小的值,并且可以将优先级增加到硬限制,但在这种情况下也与系统中可用的最大值一致。