我有一个使用 的 Python 程序multiprocessing.Pool
,这意味着它会生成多个进程。该程序获取 70k 文本文件,进行一些处理,然后将它们保存到另一个目录。我想在运行它时利用我的所有 CPU 核心,例如这。
有一段时间,我能够做到这一点。我的程序每次运行大约需要 10 秒钟,这很好。
real 0m12.430s
user 0m13.072s
sys 0m9.704s
但在过去几天里,它一直不稳定。有时它所有核心的 CPU 占用率都达到 100%。其他时候,程序毫无理由地只使用了 0-1%,而且运行时间长达 5 分钟。
real 5m6.186s
user 0m4.844s
sys 0m4.968s
请注意 real >> user + sys,尽管我不知道这意味着什么。还请注意,我没有在运行之间更改代码的任何参数或任何其他设置。在这种情况下,我还注意到每个进程的 RAM 使用量从未超过 10 MB,这可能会影响 CPU 使用率。
我的问题是,我怎么才能开始如何诊断这个问题?我的一些假设是:
- 操作系统检测到我的笔记本电脑已使用 2 年,并试图通过限制 CPU/RAM 使用率来延长其使用寿命
- 如果某个进程在很长一段时间内一直占用大量 CPU/RAM,那么操作系统可能会限制该进程的使用率。
- 有人远程访问了我的笔记本电脑并对我进行骚扰
我在一台笔记本电脑上运行 Linux Mint 17.3,该笔记本电脑配备 Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz、4 核、8 GB RAM、HDD
提前致谢。
编辑:这是程序运行时的 vmstat 输出
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 1 0 2773588 242912 2522744 0 0 114 54 229 812 11 2 83 5 0