调用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
-r
(实时)选项有什么作用?
答案1
TL-DR:这是调度程序可以为 shell 生成的进程分配的最高(=最紧急)优先级。
冗长的解释
限制控制可用的资源壳:它报告和/或设置此类限制。
这-r标志报告分配给调度到由 shell 生成的进程。由于优先级从0(最紧急)99(最不紧急),这意味着由 shell 生成的进程(属于实时应用程序类的进程)能实现最高调度优先级。
流程可根据其资源使用情况进行分类(I/O 密集型或者CPU 密集型,取决于它们主要使用 I/O 还是 CPU 资源),或者更确切地说,根据它们的紧急程度(非技术性表达)。 交互过程像壳:由于我们人类反应迟钝,电脑浪费了大量时间等待我们动动手指。然而,一旦按下一个键,这些进程就需要被赋予高优先级,除非我们觉得系统已经变得没有反应;平均延迟必须在50毫秒左右,并且方差很小。
还有批处理不需要用户交互,大部分在后台运行,因此调度程序赋予其较低的优先级。典型的例子是科学计算。
最后,还有实时进程这对调度程序施加了最严格的约束。此类别包括视频和音频录制和播放、物理传感器的数据收集、机器人控制器。必须赋予这些过程最高优先级,以允许它们执行任务。
事实上,正如所报告的那样,这种优先权限制, 是0并不意味着这一定是0:0是硬限制,你可以设置一个柔软的限制在较小的值,你可以增加优先级,直到达到难的限制,但在这种情况下也与系统中可用的最大值相吻合。