2013-11-20 91 views
2

這是通過R運行輸入文件後得到的輸出。它運行在具有大約8GB內存和2個CPU的EC2 ubuntu實例上。我查看了顯示器,當R程序運行時,它只使用了大約20%的CPU。ec2上的R程序似乎很慢?

proc.time() - T1 用戶系統經過 0.584 0.320 0.902

proc.time() 用戶系統經過 6.780 1.132 7.902

這對同一輸入文件我本地機器在大約1.5秒內完成。硬件大致相同。有什麼建議麼?

+0

可能是各種各樣的問題。不同的CPU?很多I/O?你還沒有告訴我們腳本實際上做了什麼。 –

+0

服務器上沒有太多的I/O。有沒有什麼好的基準測試可以設置,以瞭解發生了什麼? fyi,它是一個m1.large ec2實例,我對cpu的所有了解都在Intel Xeon系列中。本地機CPU是英特爾i5-2300 @ 2.8GHz – user2977577

+0

除最大的實例外,您不會獲得分配給您的實例的全部CPU功率。你如何確定正在使用多少CPU(有些工具由於虛擬環境而不會報告正確的數字)? – datasage

回答

2

當您遇到單個實例的性能問題時,要做的第一件事是重新啓動。如果主機繁忙,則重新啓動一般會將其移動到具有更高可用性的另一臺主機。

如果這沒有幫助,接下來的事情是找出什麼是限制你。 Cloudwatch指標可以,但可能不夠詳細。您可以打開可能有所幫助的詳細監視,或者有一些監視工具可以提供幫助。 NewRelic免費提供服務器監控,CopperEgg擁有1個用戶開發許可證,並且可能有許多其他人可以通過免費試用爲您提供更多信息。

好的,讓我們假設你知道問題是什麼。

如果是I/O,有幾個解決方案。您可以嘗試使用臨時存儲 - 這通常附加到實例,所以可能會比EBS支持的存儲更快。缺點是,當實例關閉時,您在臨時存儲中會丟失所有內容,因此請確保您保存任何結果。對於更多的I/O,您可以在EBS中使用預配置的IOPS,或者移至提供本地SSD存儲的實例。

如果是CPU,您是否使用兩個內核?你看到一個很高的「被盜」比例?如果是這樣,你可能想要轉移到一個CPU更好的實例 - 有Cxx類型的實例可能比通用M1或M3類型的實例更好。

相關問題