我有一些机器,我用来运行大量的作业,我试图限制作业的数量,以便不超过机器的可用RAM。 偶尔我会估计一些作业将花费多less内存,并且机器开始抖动交换文件。 我通过发送kill -s STOP来解决这个问题,以便它能够被换出。
有谁知道一个实用程序将监视一个特定名称的进程的服务器,然后暂停最小的内存占用是一个所需的内存消耗达到一个理想的门槛,使较大的人可以运行和完成的最低交换文件抖动? 暂停的过程需要在一些现有的过程完成后恢复。
看看thrash-protect (用Python编写的守护进程)
如果您不想按原样使用它,则可能是自定义脚本的基础,该脚本会以最小的内存占用来暂停进程。
对于那些不喜欢自动化工具的用户,可以使用htop来查找百分比最高的内存使用情况,并使用kill -s STOP <pid>发送STOP信号。 之后,您可以发送kill -s CONT <pid>以恢复它们。 但是,当服务器发生抖动时,您可能需要等待很长时间才能执行htop和kill。
当机器由于内存压力而发生抖动时,尽pipeCPU利用率很低,但通常情况下仍然会看到非常差的吞吐量。
为了诊断这一点:
top还是htop ,是否有较高的交换使用率,高负载平均和较低的CPU使用率? vmstat 1并查找si等值,特别是每秒钟2到4位数字,没有零交换秒。