如何诊断我非常缓慢的Ruby启动时间?
间歇性地,当我键入一个涉及Ruby的命令时(如如何诊断我非常缓慢的Ruby启动时间?,ruby,macos,Ruby,Macos,间歇性地,当我键入一个涉及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
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
“加载、命令运行、pid、状态以及使用的用户和系统CPU时间”。看起来,当我等待53秒时,使用的CPU时间只有0.15秒
我对负载的理解是这样的。例如,在单核系统上,1.0是完全利用率,但在四核机器上,它是25%的利用率。我认为负载量不是问题,因为我的机器是多核的。另外,当irb
快速启动时,我可以使用Control+T
获得一行输出,这也高于1.0
load: 1.22 cmd: ruby 12452 running 0.26u 0.02s
我还注意到,在良好的情况下,状态是“正在运行”,而不是“不可中断”
如何诊断和修复这些缓慢的初创公司?这是一个长期问题。尝试安装haveged。
如果有更多的处理器和RAM使用,更多的与系统的交互,等等-你会认为它会更慢,但在熵耗尽的情况下,这实际上正是你所需要的。“不间断”让我觉得它卡在I/O中。如果在后续执行中速度更快,可能只是磁盘速度较慢。我在评论中问:ruby版本是什么?(
ruby-v
)@Satya-ruby 2.1.2p95。进一步的研究表明,它可能正在等待IO系统调用。也许我可以用一些dtrace工具看看是什么。是的,dtrace。我不确定OSX上有哪些跟踪工具,所以我没有说。不管怎样,我想看看它是否像那些缓慢的ruby版本(1.9.2?1.8.7?)一样愚蠢。如果我能捕捉到它再次发生的话,dtruss-n process\u name
可能会起作用。关于这一点,我建议将这个问题转移到网站上,以获得更全面的信息。虽然问题与开发有关,但原因和解决办法很可能在那里找到,因为这更可能是操作系统或硬件级别的问题。我今天刚刚了解到这一点——笔记本电脑上不太可能出现这种情况,但在任何一种虚拟机上都越来越可能出现这种情况——龙先生可能正在使用这种情况。请尝试移动鼠标或启动其他应用程序并调整窗口大小。