我正在运行一个用 python 编写的程序,该程序使用以下命令进行大量计算西亚诺。
由于它是一个非常占用 CPU 资源的程序,因此它会扰乱我笔记本电脑上的所有其他活动。
为此,我将进程的良好级别设置为 19,并将cpulimit
其 CPU 使用率降低到 10%。
不幸的是,这些尝试并不有效,因为笔记本电脑有时会卡住,甚至几分钟。
您知道如何解决这个问题吗?我如何指示调度程序正确运行?
该笔记本电脑是配备 Intel Core i5-3317U 的 Samsung Ultrabook(新系列 9)。操作系统是Linux,Ubuntu 15.10,内核4.2.0。
编辑:问题似乎是由垃圾引起的(内存不足,不断交换)
答案1
尽管 CPU 有限,但这种无响应通常是由交换引起的(即您的进程将其他任务推送到磁盘并将它们放回磁盘将花费大量时间)。
限制内存使用的最佳方法通常是在程序内部。如果这是不可能的并且内存消耗缓慢(因为它没有被释放),则可能需要经常终止程序并重新启动。当然,这只有在定期写入中间结果的情况下才有效。
从程序外部,您可以使用以下命令限制内存量timeout
脚本(这不是 coreutils 的超时!)。它有一个-m
限制内存的选项,如果你的进程开始消耗太多内存,它就会杀死你的进程。
如果您无法重新开始处理,那么您的选择是
- 如果可以安装,请为您的机器购买更多内存
- 安装 SATA SSD(如果您的笔记本电脑支持)并在其上放置交换
- 重写软件以在更小的块中工作