我在Centos 7上使用PHP和Apache 2.4来运行一个非常CPU密集型的概率模型。在我的家用电脑上运行它花了8天,所以我决定将它移到云服务中。所以我配置它现在只需要5个小时。太好了!
但是有一个问题,在处理算法时,我检查了云上的“free”和“top”命令,并且它报告使用了大约24%的CPU和10%的可用内存!我每小时向Linode的服务器支付大约1.50美元,96 GB和20个CPU核心,所以我最好使用100%的可用CPU。
我知道这取决于算法很多,但请查看下面的代码。这是一个非常繁重的CPU密集型算法,它应该使用100%的CPU但不使用,它只使用24%(根据“顶部”)。
<?php
set_time_limit(0);
ini_set("memory_limit","-1");
for ($i=0;$i<10000;$i++) {
for ($ii=0;$ii<10000;$ii++) {
for ($iii=0;$iii<10000;$iii++) {
for ($iiii=0;$iiii<10000;$iiii++) {
}
}
}
}
?>
那么,发生了什么?如何让我的Apache使用更多的CPU和内存?
答案 0 :(得分:0)
您在PHP中运行高度CPU密集型算法?我不确定这是一个好主意。
无论如何,我认为这里的问题是你的代码在四核处理器上运行,但只在一个线程中运行。因此,您目前可以达到的最大CPU使用率为25%。
我建议您将软件重写为多线程应用程序,最好使用C或C ++等语言。