Perl 脚本占用 CPU

问题描述 投票:0回答:3

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

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

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

就每个实例而言,配置文件并不糟糕。上下弹跳至24%。但我在运行 8 个或 9 个终端窗口时达到了 100% 负载的执行限制。很可能是带宽和下载时间的结果。我可以加快速度吗?假设在 # KB 后停止下载?

谢谢, 彼得

perl memory cpu suse
3个回答
1
投票

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

嗯...不。如果您由于带宽限制/下载时间而碰壁,那么您的进程将在 I/O 上阻塞(

D
/
top
中的进程状态
ps
)并有效地进入睡眠状态,在 I/O 请求完成之前消耗几乎没有 CPU 周期。

至于你当前的问题是什么,如果没有关于你的代码正在做什么的更多细节(最好包括源代码),这是不可能说的,但对你的算法的一般描述可能就足够了。

但请注意,在运行 8 或 9 个进程时,如果单个实例的平均 CPU 使用率超过 11-12%,则保证将 CPU 固定在 100%。您没有提到平均每个进程的 CPU 消耗,但是,如果它定期反弹至 24%,那么我一点也不惊讶地发现它的平均消耗量是这个数字的一半或更高。


0
投票

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

您可能想查看此链接:如何限制 Perl 中的 CPU 使用率

你可能还想研究一下 Perl 的线程,因为这肯定比运行解释器 19 次更有效率。


0
投票

检查资源预留...如果为零,请将其调整为推荐规格。

c:\Temp>cd“\Program Files\VMware\VMware Tools”

c:\Program Files\VMware\VMware Tools>vmwaretoolboxcmd stat memres 0MB

c:\Program Files\VMware\VMware Tools>vmwaretoolboxcmd stat cpures 0兆赫

© www.soinside.com 2019 - 2024. All rights reserved.