Bug #4808

thread_wait_for() eats 100% of CPU power

Added by Hidetoshi Nagai almost 3 years ago. Updated almost 3 years ago.

[ruby-dev:43606]
Status:Closed
Priority:High
Assignee:Motohiro KOSAKI
Category:core
Target version:1.9.3
ruby -v:- Backport:

Description

いつからかは把握できていませんが (少なくとも 1.9.2p0 では発生しません),
threadwaitfor() が CPU パワーを大量に消費するようになっています.

これが原因で,Ruby/Tk も CPU を 100 % 消費してしまいます.

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

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

void
Initthwait_for()
{
struct timeval t;

t.tvsec = 0;
t.tv
usec = 10000; /* 10ms */

while(1) {
fprintf(stderr, "*");fflush(stderr);
rbthreadwait_for(t);
}

}

------------------------------------------------
require 'mkmf'

createmakefile('thwait_for');

永井 秀利 (nagai@ai.kyutech.ac.jp)
九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教

Associated revisions

Revision 31893
Added by Motohiro KOSAKI almost 3 years ago

  • threadpthread.c (nativesleep): fix 1000times calculation error. this is a regression since r31457. [Bug #4808]

History

#1 Updated by Motohiro KOSAKI almost 3 years ago

  • Status changed from Open to Assigned
  • Assignee set to Motohiro KOSAKI

#2 Updated by Motohiro KOSAKI almost 3 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r31893.
Hidetoshi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • threadpthread.c (nativesleep): fix 1000times calculation error. this is a regression since r31457. [Bug #4808]

#3 Updated by Motohiro KOSAKI almost 3 years ago

  • ruby -v changed from ruby 1.9.3dev (2011-06-01 trunk 31874) [x86_64-linux] to -

いつからかは把握できていませんが (少なくとも 1.9.2p0 では発生しません),
threadwaitfor() が CPU パワーを大量に消費するようになっています.

これが原因で,Ruby/Tk も CPU を 100 % 消費してしまいます.

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

亀レスですいません。最近 Ruby/tk にCPU使用率を下げるコミットがいくつか
入っているようですが、r31893 では不十分だったということなんでしょうか?
それとも、全然別件の改善なのでしょうか?

ご迷惑をおかけしているのではないかと心配しているので教えていただければ
幸いです

#4 Updated by Motohiro KOSAKI almost 3 years ago

いつからかは把握できていませんが (少なくとも 1.9.2p0 では発生しません),
threadwaitfor() が CPU パワーを大量に消費するようになっています.

これが原因で,Ruby/Tk も CPU を 100 % 消費してしまいます.

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

亀レスですいません。最近 Ruby/tk にCPU使用率を下げるコミットがいくつか
入っているようですが、r31893 では不十分だったということなんでしょうか?
それとも、全然別件の改善なのでしょうか?

ご迷惑をおかけしているのではないかと心配しているので教えていただければ
幸いです

#5 Updated by Hidetoshi Nagai almost 3 years ago

永井@知能.九工大です.

From: KOSAKI Motohiro kosaki.motohiro@gmail.com
Subject: Re: [Ruby 1.9 - Bug #4808][Open] threadwaitfor() eats 100% of CPU power
Date: Thu, 2 Jun 2011 22:37:45 +0900
Message-ID:

いつからかは把握できていませんが (少なくとも 1.9.2p0 では発生しません),
threadwaitfor() が CPU パワーを大量に消費するようになっています.

これが原因で,Ruby/Tk も CPU を 100 % 消費してしまいます.

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

亀レスですいません。最近 Ruby/tk にCPU使用率を下げるコミットがいくつか
入っているようですが、r31893 では不十分だったということなんでしょうか?
それとも、全然別件の改善なのでしょうか?

ごめんなさい.紛らわしかったですね.
当初報告した問題は r31893 で解消しました.ありがとうございます.

ですが,それでもなお CPU 利用率が高かったので,
以前と異なる方法で thread 切替えタイミングを決めるようにしたのが
その後の patch です.
手元の環境では,CPU 利用率が patch 適用前の 1/10 くらいになります.

# 昔に比べてマシンが速くなっていることもあり,
# 以前のやり方では通用しなくなっていたようです.

効果が大きいので 1.9.2 にも backport した方がいいとは思うのですが,
テスト期間が十分ではないことが心配点です.
多分,大丈夫だろうとは考えているのですが...
--
永井 秀利 (nagai@ai.kyutech.ac.jp)
九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教

#6 Updated by Hidetoshi Nagai almost 3 years ago

永井@知能.九工大です.

From: KOSAKI Motohiro kosaki.motohiro@gmail.com
Subject: Re: [Ruby 1.9 - Bug #4808][Open] threadwaitfor() eats 100% of CPU power
Date: Thu, 2 Jun 2011 22:37:45 +0900
Message-ID:

いつからかは把握できていませんが (少なくとも 1.9.2p0 では発生しません),
threadwaitfor() が CPU パワーを大量に消費するようになっています.

これが原因で,Ruby/Tk も CPU を 100 % 消費してしまいます.

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

亀レスですいません。最近 Ruby/tk にCPU使用率を下げるコミットがいくつか
入っているようですが、r31893 では不十分だったということなんでしょうか?
それとも、全然別件の改善なのでしょうか?

ごめんなさい.紛らわしかったですね.
当初報告した問題は r31893 で解消しました.ありがとうございます.

ですが,それでもなお CPU 利用率が高かったので,
以前と異なる方法で thread 切替えタイミングを決めるようにしたのが
その後の patch です.
手元の環境では,CPU 利用率が patch 適用前の 1/10 くらいになります.

# 昔に比べてマシンが速くなっていることもあり,
# 以前のやり方では通用しなくなっていたようです.

効果が大きいので 1.9.2 にも backport した方がいいとは思うのですが,
テスト期間が十分ではないことが心配点です.
多分,大丈夫だろうとは考えているのですが...
--
永井 秀利 (nagai@ai.kyutech.ac.jp)
九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教

#7 Updated by Motohiro KOSAKI almost 3 years ago

亀レスですいません。最近 Ruby/tk にCPU使用率を下げるコミットがいくつか
入っているようですが、r31893 では不十分だったということなんでしょうか?
それとも、全然別件の改善なのでしょうか?

ごめんなさい.紛らわしかったですね.
当初報告した問題は r31893 で解消しました.ありがとうございます.

ですが,それでもなお CPU 利用率が高かったので,
以前と異なる方法で thread 切替えタイミングを決めるようにしたのが
その後の patch です.
手元の環境では,CPU 利用率が patch 適用前の 1/10 くらいになります.

なるほど。理解できました。丁寧にありがとうございます。1/10とは素晴らしいですね

#8 Updated by Motohiro KOSAKI almost 3 years ago

亀レスですいません。最近 Ruby/tk にCPU使用率を下げるコミットがいくつか
入っているようですが、r31893 では不十分だったということなんでしょうか?
それとも、全然別件の改善なのでしょうか?

ごめんなさい.紛らわしかったですね.
当初報告した問題は r31893 で解消しました.ありがとうございます.

ですが,それでもなお CPU 利用率が高かったので,
以前と異なる方法で thread 切替えタイミングを決めるようにしたのが
その後の patch です.
手元の環境では,CPU 利用率が patch 適用前の 1/10 くらいになります.

なるほど。理解できました。丁寧にありがとうございます。1/10とは素晴らしいですね

Also available in: Atom PDF