有没有办法真正优先处理流程或让Linux尊重他们的优先级?

我知道有其他操作系统的进程优先级,从-20(大多数prio)到19(更少prio),但Linux似乎忽略它们.

现在我正在后台构建内核(尽管make进程优先级为0),因为我花了很长时间才决定观看.所以我在VLC中打开了一个非常苛刻的H264视频(Core2 2.6GHz的CPU时间的约30%)只是为了发现撕裂,帧丢失,视觉伪像(由我之前的假设产生),尽管音频似乎是精细.

所以我决定使用renice改变VLC的优先级,具体地说看到PulseAudio有-11我决定把它放在标准杆上所以我做了sudo renice -11 -p VLC_PROC_#.

同样的事情不断发生,所以我继续把它设置为-20但我仍然看到视觉文物.

所以我想知道,为什么Linux实际上没有优先考虑-20进程超过0个进程并给它所需要的任何东西?有没有办法真正优先处理Linux中的进程?

如果它很重要,我在这里运行64位Arch,XFCE作为桌面环境.

编辑:内核编译在/ tmp中执行,我有tmpfs所以它的源和所有已经在RAM中. RAM使用率甚至没有达到60%,并且没有进行寻呼操作.

上面详述的场景只是一个测试用例,我更感兴趣的是Linux为什么会执行它的方式以及是否有任何方法可以获得真正的优先级.

解决方法:

renice确实会影响流程的优先级.但正如您所经历的那样,仅仅因为流程具有更高的优先级并不意味着它将拥有所需的所有资源.更高的优先级只会让流程有更大的机会来获取资源.

renice只影响CPU时间.因此,只有两个或更多进程竞争CPU时间才会产生影响.如果限制因素不是CPU时间而是I / O带宽,那么nice值没有影响.也许在你的情况下,编译使用了大量的磁盘带宽,而vlc无法从磁盘中足够快地读取数据.尝试ionice而不是很好.

如果经常这样做,如果视频和编辑位于不同的磁盘上,您将获得更好的结果.此外,如果您将视频预加载到磁盘缓存(cat /path/to/video.file> / dev / null,或tail -c 456m | head -c 123m / path / to / video),您可能会获得更好的结果.文件> / dev / null从偏移量456MB开始读取123MB) – 但除非你有大量的RAM,否则编译可能会占用缓存空间.如果您想确保将视频保存在内存中,请制作一个ramdisk并将视频复制到其中.

上一篇:【转】priority_queue的用法


下一篇:priority_queue cmp