0

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

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

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

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

谢谢,彼得

4

2 回答 2

1

但是我在运行 8 或 9 个终端窗口时达到了 100% 负载的执行限制。很可能是带宽和下载时间的结果。

嗯...不。如果由于带宽限制/下载时间而碰壁,那么您的进程将阻塞 I/O(/ 中的进程状态)D并有效地进入睡眠状态,消耗几乎没有 CPU 周期,直到I/O 请求完成。topps

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

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

于 2010-12-13T11:54:58.417 回答
0

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

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

此外,您可能想查看 perl 的线程,因为这肯定比运行解释器 19 次更有效。

于 2010-12-12T18:05:09.647 回答