【发布时间】:2013-03-28 09:22:01
【问题描述】:
我正在使用 ubuntu。我有一些管理命令在运行时会进行大量数据库操作,因此需要将近 15 分钟。
我的系统监视器显示我的系统有 4 个 CPU 和 6GB RAM。但是,这个过程并没有利用所有 cpu 的 .我认为它只使用了一个 CPU,而且内存太少了。我想,如果我能够让它使用所有的 cpu 和大部分的 ram,那么这个过程将在很短的时间内完成。
我尝试了 renice ,将优先级设置为 -18(表示非常高),但速度仍然较低。
详情:
它是一个循环计数接近 10,000 的 python 脚本,并且有近十个这样的循环。在每个循环中,它都会保存到 postgres 数据库中。
【问题讨论】:
-
“大量的数据库操作”听起来瓶颈是 I/O 而不是 CPU。您可以尝试使用
ionice来提高进程的 I/O 优先级,但如果没有更多关于这些数据库操作实际是什么的信息,这只是一个粗略的猜测。 -
它是一个循环数接近 10,000 的 Python 脚本,而且这样的循环也接近十个。在每个循环中,它都会保存到 postgres 数据库中。
-
听起来您可以从重构代码中受益。
-
重构是另一回事,但我的意思是,它在我的系统中运行缓慢,但在服务器中运行速度更快(通常是高配置)。但是,我的笔记本电脑有 4cpus 和 6gb 内存,它只使用了一部分。必须有一个明确的解决方案。
-
你试过
ionice吗?此外,MattWritesCode 的回答包含有用的建议。