Perl脚本占用CPU

时间:2010-12-12 17:56:02

标签: perl memory cpu suse

我正在运行脚本的几个实例,一切正常。 我加载的每个终端都会构建更高的CPU。

我正在运行12个实例并限制99%的双核CPU。 我完全堆叠了我的内存8GB的DDR3。 在项目期间的某个时刻,我使用了mysql,但发现了很多瓶颈和一些随机断开错误(谷歌搜索告诉我可能是NIC)。

无论如何..所以直接从shell写入光盘要快得多。 使用的模块是WWW:Mechanize

就每个实例而言,简介并不可怕。反弹率上下至24%。但是我在运行8或9个终端窗口时达到了100%负载的执行限制..很可能是带宽和下载时间的结果..我可以加快速度吗?假设在#千字节之后停止下载?

谢谢, 彼得

2 个答案:

答案 0 :(得分:1)

  

但是我的执行达到了极限   100%负载,8或9个终端窗口   正在运行..最有可能是结果   带宽和下载时间..

嗯......不会。如果由于带宽限制/下载时间而撞墙,那么您的流程将阻止I / O(D / {{1}中的流程状态top并且有效地进入休眠状态,在I / O请求完成之前消耗几乎没有CPU周期。

至于你目前的问题是什么,如果没有关于你的代码做什么的更多细节,理想情况下包括源代码,这是不可能的,但是对你的算法的一般描述可能就足够了。

请注意,如果8个或9个进程正在运行,如果单个实例平均CPU使用率超过11-12%,则可以保证将CPU固定为100%。你没有说过平均每个进程的CPU消耗,但是,如果它经常反弹到24%,那么我发现它的平均值只有一半或更高时我并不会感到惊讶。

答案 1 :(得分:0)

不幸的是,我不相信有办法以这种方式影响perl解释器的行为。你可以为你的盒子上的所有perl脚本设置cpu限制,但据我所知,在perl中没有办法做到这一点,因为解释器自己管理所有的内存分配等。

您可以查看以下链接:How to limit CPU usage in perl

此外,您可能需要查看perl的主题,因为这肯定会比运行解释器19次更有效。