我正在使用ruby-head和Debian wheezy x64。当我运行多线程ruby脚本时,htop显示它在视觉上使用多个核心,顶部有条形图,并且它在进程列表中使用100%CPU,但它仅使用100%的一个核心容量。我认为可能有多个内核以100%运行,这个数字似乎太方便了,无法通过程序逻辑或其他硬件方面进行瓶颈。操作系统是否限制了我正在使用的可用指令的数量,如果是这样,我该怎么做呢?
编辑更多信息:
当我的意思是在视觉上使用多个核心时,例如:47%核心1,29%核心2和24%核心3.这些百分比不断上下移动到不同的核心集合,但总是总共加起来100 %-102%。使用的核心数超过3个(总共/ 8个),但除了三个核心以外的任何核心仅使用2%或更少的容量。我想我还应该提一下这是一个linode VPS。
编辑:
好吧,看起来我正在阅读承诺2.0将具有真正的并行线程,而不是实际的发布信息。是时候改用Jruby ......
答案 0 :(得分:10)
您没有提到您正在使用的Ruby实现。并非所有Ruby实现都能够将Ruby线程调度到多个CPU。
特别是:
我对Topaz,Cardinal,MagLev,MRuby以及其他所有人都不太了解。
答案 1 :(得分:4)
MRI在其解释器中将Ruby Threads实现为绿色线程。不幸的是,它不允许并行调度这些线程,它们一次只能运行一个线程。
查看类似问题here