nice

nice 工具是AT&T Bell实验室发明Unix操作系统时提供的一个实用工具命令,最初于1973年开发出来,距今已经整整半个世纪了。这是一个容易被忽略的工具,然而对于大规模生产环境,依然十分有用:

  • 生产环境需要每时每刻都需要处理服务器上海量日志的清理以及一些必要的维护定时任务

  • 尽管现代SSD存储性能极高,但是对于海量日志清理依然会带来在线应用的抖动

通过 nice 命令可以简单地降低低优先级的处理任务,既能够得到执行又不至于影响关键的在线应用

在Linux系统中, nice 设置为 19 是最低优先级,该数值越大优先级越低,默认 nice 值是 0

nice -n 19 tar cvzf archive.tgz largefile

nice 的简单解释

为进程设置特定的 niceness 值的确切效果取决于调度程序如何在Unix实现上的细节。特定操作系统的调度程序内置各种启发式(heuristic)方法(例如,主要受I/O限制的进程优于受CPU限制的进程)。举例,当两个在其他方面完全相同的CPU绑定进程在单CPU Linux上同时运行,每个进程所占的CPU实践份额和 20 - p 成正比,其中 p 是进程优先级:

  • nice + 15 运行进程将获得分配给正常优先级的 25% CPU实践: (20 - 15)/(20 - 0) = 0.25

  • 不过,相同案例在BSD 4.x调度程序的比率大约是十比一

参考