当我输入涉及Ruby的命令(例如ruby somefile.rb
,rake
,rspec spec
或irb
)时,间歇性地执行该命令需要很长时间执行。例如,几分钟前,irb
开始花了大约一分钟。几秒钟前,花了大约一秒钟。
在等待irb
开始时,我反复按Control + T
。我看到的一些输出包括:
load: 1.62 cmd: ruby 12374 uninterruptible 0.45u 0.13s
load: 1.62 cmd: ruby 12374 uninterruptible 0.48u 0.13s
load: 1.62 cmd: ruby 12374 uninterruptible 0.53u 0.15s
On OSX, this output represents“加载,命令运行,pid,状态以及使用的用户和系统CPU时间”。看来,当我等待53秒时,使用的CPU时间仅为0.15秒。
我对负载的理解是it's roughly "how many cores are being used"。例如,在单核系统上,1.0是完全利用率,但在四核机器上,利用率为25%。我不认为负载量是问题,因为我的机器是多核的。此外,当irb
快速启动时,我可以获得一行输出,Control + T
也高于1.0
。
load: 1.22 cmd: ruby 12452 running 0.26u 0.02s
我还注意到,在好的情况下,状态是“正在运行”,而不是“不可中断”。
如何诊断和修复这些慢启动?
答案 0 :(得分:1)
haveged
。我以前见过这个问题。这解决了我。有时,对于试图加载随机数池的库或Ruby元素,没有足够的熵。
如果你注意到当你输入更多内容时,某些东西的开始时间很快,那么使用大量的网络流量来移动你的鼠标 - 然后是熵,这会违背你的大部分内容# 39; d想。
如果有更多的处理器和RAM使用,与系统的更多交互等 - 你认为它会变慢,但在熵耗尽的情况下,这实际上正是你所需要的