From: Hidetoshi Nagai <nagai@...>
Date: 2011-06-01T06:53:59+09:00
Subject: [ruby-dev:43606] [Ruby 1.9 - Bug #4808][Open] thread_wait_for() eats 100% of CPU power


Issue #4808 has been reported by Hidetoshi Nagai.

----------------------------------------
Bug #4808: thread_wait_for() eats 100% of CPU power
http://redmine.ruby-lang.org/issues/4808

Author: Hidetoshi Nagai
Status: Open
Priority: High
Assignee: 
Category: core
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-06-01 trunk 31874) [x86_64-linux]


いつからかは把握できていませんが (少なくとも 1.9.2p0 では発生しません),
thread_wait_for() が CPU パワーを大量に消費するようになっています.
# これが原因で,Ruby/Tk も CPU を 100 % 消費してしまいます.

このままリリースになってしまうとかなりまずいと思いますので,
優先度 High で急ぎ報告だけあげておきます.

以下はテスト用のコードです.
make 後に ruby -r ./th_wait_for.so -e '' でお試しください.
----<th_wait_for.c>-----------------------------------------
#include "ruby.h"

void
Init_th_wait_for()
{
  struct timeval t;

  t.tv_sec = 0;
  t.tv_usec = 10000; /* 10ms */

  while(1) {
    fprintf(stderr, "*");fflush(stderr);
    rb_thread_wait_for(t);
  }
}
------------------------------------------------------------
----<extconf.rb>--------------------------------------------
require 'mkmf'
create_makefile('th_wait_for');
------------------------------------------------------------
-- 
永井 秀利  (nagai@ai.kyutech.ac.jp)
九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教



-- 
http://redmine.ruby-lang.org