Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Ruby is much slower on linux when compiled with --enable-pthread?
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  19 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Adam Kramer  
View profile  
 More options Sep 4 2007, 12:53 am
Newsgroups: comp.lang.ruby
From: "Adam Kramer" <akra...@google.com>
Date: Tue, 4 Sep 2007 13:53:44 +0900
Local: Tues, Sep 4 2007 12:53 am
Subject: Ruby is much slower on linux when compiled with --enable-pthread?
Hi,

I was seeing significant performance differences between ruby 1.8.4 on
an old distribution and a newer one. I spent some hours tracking down
the differences and it appears that --enable-pthread causes ruby to be
significantly slower. I tried searching for the reason why this is but
came up empty handed.

On Ubuntu 6.06 I built a new binary of 1.8.4 (from the package source
- nothing else was different) with --disable-pthread and compared the
execution times of the benchmark files in SVN. Here are the results:

Second column is with --enable-pthread, third column
--disable-pthread. Look at almost every test that took more than a
second, of real note is app_pentomino and loop_times.
app_answer      0.674           0.504
app_factorial   0.020           0.013
app_fib      9.377           6.623
app_mandelbrot  2.384           1.862
app_pentomino   158.618         84.739
app_raise       1.176           0.964
app_strconcat   1.197           1.215
app_tak 12.390          8.158
app_tarai       9.872           6.473
loop_generator  22.547          15.394
loop_times      11.616          4.050
loop_whileloop  9.334           9.491
loop_whileloop2 1.878           1.906
so_ackermann    5.038           9.291
so_array        10.608          6.376
so_concatenate  3.633           1.620
so_count_words  0.272           0.267
so_exception    3.012           2.221
so_lists        1.302           1.023
so_matrix       2.753           1.906
so_nested_loop  9.877           5.060
so_object       5.705           3.780
so_random       1.967           1.752
so_sieve        0.627           0.591
vm1_block       35.529          19.547
vm1_const       14.287          14.482
vm1_ensure      28.497          15.053
vm1_length      18.162          18.991
vm1_rescue      18.771          11.221
vm1_simplereturn        31.387          16.038
vm1_swap        16.581          16.850
vm2_array       4.078           4.129
vm2_case        4.041           4.076
vm2_method      21.762          9.765
vm2_mutex       31.299          17.910
vm2_poly_method 25.094          13.121
vm2_poly_method_ov      4.192           4.125
vm2_proc        8.404           5.506
vm2_regexp      3.919           3.743
vm2_send        5.280           3.780
vm2_super       7.573           4.337
vm2_unif1       4.833           3.183
vm2_zsuper      8.120           4.848
vm3_thread_create_join  0.012           0.008
vm3_thread_mutex        5.787           3.278

It appears that when compiled with --enable-pthread ruby will call
sigprocmask MANY MANY more times than without. You can verify this
with strace -c:
$ strace -c ruby -e '1.upto(100000) {|i| i.to_s}'
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.000655           0    200006           sigprocmask

Yeah - it called sigprocmask over 200,000 times during that 100,000
iteration loop.

When compiled with --disable-pthread and running the same command,
rt_sigprocmask gets called 4 times.

I also tested on OS X, ruby is compiled with --enable-pthread but
sigprocmask doesn't get called an inordinate number of times, so this
may be a linux-only issue.

Has anyone else witnessed this? Is this a "feature" that's to be expected?

--
Thanks!
-Adam


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Ruby is much slower on linux when compiled with --enable" by Roger Pack
Roger Pack  
View profile  
 More options Sep 4 2007, 6:13 pm
Newsgroups: comp.lang.ruby
From: Roger Pack <rogerpack2...@gmail.com>
Date: Wed, 5 Sep 2007 07:13:58 +0900
Local: Tues, Sep 4 2007 6:13 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable
Maybe cross post this to ruby core?
--
Posted via http://www.ruby-forum.com/.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Ruby is much slower on linux when compiled with --enable-pthread?" by M. Edward (Ed) Borasky
M. Edward (Ed) Borasky  
View profile  
 More options Sep 4 2007, 7:00 pm
Newsgroups: comp.lang.ruby
From: "M. Edward (Ed) Borasky" <zn...@cesmail.net>
Date: Wed, 5 Sep 2007 08:00:01 +0900
Local: Tues, Sep 4 2007 7:00 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yeah -- it's probably not only Linux-specific but also dependent on your
 compiler and run time library versions. What I would suggest is
compiling Ruby with profiling and seeing where in the Ruby interpreter
these calls are.

Incidentally, if you use Tk and Ruby, both have to be compiled with the
same setting for pthread usage.

(cross-posted to Ruby Core) :)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFG3eNP8fKMegVjSM8RAmTYAKDKGRikNc5fYQB7aiYW1+a7nfZG/wCfQIHl
b69A7ZvwALfkBOxnCfyvRX8=
=mTkA
-----END PGP SIGNATURE-----


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jeffrey 'jf' Lim  
View profile  
 More options Sep 4 2007, 11:38 pm
Newsgroups: comp.lang.ruby
From: "Jeffrey 'jf' Lim" <jfs.wo...@gmail.com>
Date: Wed, 5 Sep 2007 12:38:41 +0900
Local: Tues, Sep 4 2007 11:38 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?
On 9/4/07, Adam Kramer <akra...@google.com> wrote:

> Hi,

> I was seeing significant performance differences between ruby 1.8.4 on
> an old distribution and a newer one. I spent some hours ... <snip>

I would be curious about this - are you talking about between ubuntu
6.06, and a newer version of ubuntu?

> It appears that when compiled with --enable-pthread ruby will call
> sigprocmask MANY MANY more times than without. You can verify this
> with strace -c:
> $ strace -c ruby -e '1.upto(100000) {|i| i.to_s}'
> % time     seconds  usecs/call     calls    errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 100.00    0.000655           0    200006           sigprocmask

> Yeah - it called sigprocmask over 200,000 times during that 100,000
> iteration loop.

same here - ubuntu 7.04 64-bit, ruby 1.8.6 -

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.002105           0    200009           rt_sigprocmask

I also see some errors (8, 3, and 7 respectively - and consistently)
on 'open', 'stat', and 'access'. Do you see those as well?

> When compiled with --disable-pthread and running the same command,
> rt_sigprocmask gets called 4 times.

:) for me, this is 2 times.

> I also tested on OS X, ruby is compiled with --enable-pthread but
> sigprocmask doesn't get called an inordinate number of times, so this
> may be a linux-only issue.

hmm.. what would be the equivalent of 'strace' here?

-jf

--
In the meantime, here is your PSA:
"It's so hard to write a graphics driver that open-sourcing it would not help."
    -- Andrew Fear, Software Product Manager, NVIDIA Corporation
http://kerneltrap.org/node/7228


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jeffrey 'jf' Lim  
View profile  
 More options Sep 4 2007, 11:42 pm
Newsgroups: comp.lang.ruby
From: "Jeffrey 'jf' Lim" <jfs.wo...@gmail.com>
Date: Wed, 5 Sep 2007 12:42:55 +0900
Local: Tues, Sep 4 2007 11:42 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?
On 9/5/07, M. Edward (Ed) Borasky <zn...@cesmail.net> wrote:

> What I would suggest is
> compiling Ruby with profiling and seeing where in the Ruby interpreter
> these calls are.

any idea how you would do that? Don't see anything in the configure
switches for compiling ruby (1.8.6)...

-jf

--
In the meantime, here is your PSA:
"It's so hard to write a graphics driver that open-sourcing it would not help."
    -- Andrew Fear, Software Product Manager, NVIDIA Corporation
http://kerneltrap.org/node/7228


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
M. Edward (Ed) Borasky  
View profile  
 More options Sep 5 2007, 12:04 am
Newsgroups: comp.lang.ruby
From: "M. Edward (Ed) Borasky" <zn...@cesmail.net>
Date: Wed, 5 Sep 2007 13:04:35 +0900
Local: Wed, Sep 5 2007 12:04 am
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Before you "configure", type

export CFLAGS='-g -pg'

Then do
/configure
make

as normal. You will have a profiling Ruby executable.

Every time you run the profiling Ruby interpreter, you will get a file
called "gmon.out" which contains a binary profile. Then run

export GPROF_PATH=/path/to/ruby/source
gprof /path/to/ruby/executable > profile.txt
gprof -A /path/to/ruby/executable > annotated-source.txt

The "profile.txt" will give a call-graph profile of Ruby executing your
script, and "annotated-source.txt" will have a source listing of Ruby
with execution counts for all the lines.

A word of warning -- this compiles with no optimization at all, and can
be much slower as Ruby compiled with optimization. The call graph should
be all you need to determine where the system call is coming from.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFG3irB8fKMegVjSM8RAj3FAKDElDD+blUEIYK5IvG3rQe9UGsARQCg2Evn
jxbv8oYmkLNr9ZC8hdWkNNo=
=A2/g
-----END PGP SIGNATURE-----


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Adam Kramer  
View profile  
 More options Sep 5 2007, 2:01 am
Newsgroups: comp.lang.ruby
From: "Adam Kramer" <akra...@google.com>
Date: Wed, 5 Sep 2007 15:01:58 +0900
Local: Wed, Sep 5 2007 2:01 am
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?
On Sep 4, 2007 9:04 PM, M. Edward (Ed) Borasky <zn...@cesmail.net> wrote:

> Jeffrey 'jf' Lim wrote:

> Before you "configure", type

> export CFLAGS='-g -pg'

I tried this earlier today, gprof doesn't seem to be able to trace the
extra time that's incurred due to the system calls. As far as gprof
was concerned, the --enable-pthread version was faster, even though it
took more system time and wall time. I also tried with gdb and set a
breakpoint on setprocmask but that didn't work - it only stopped on 4
calls to setprocmask, not millions.

--
-Adam


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Bill Kelly  
View profile  
 More options Sep 5 2007, 9:02 am
Newsgroups: comp.lang.ruby
From: "Bill Kelly" <bi...@cts.com>
Date: Wed, 5 Sep 2007 22:02:51 +0900
Local: Wed, Sep 5 2007 9:02 am
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?

From: "Jeffrey 'jf' Lim" <jfs.wo...@gmail.com>

> > I also tested on OS X, ruby is compiled with --enable-pthread but
> > sigprocmask doesn't get called an inordinate number of times, so this
> > may be a linux-only issue.

> hmm.. what would be the equivalent of 'strace' here?

ktrace / kdump

Regards,

Bill


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Terry Poulin  
View profile  
 More options Sep 7 2007, 6:40 pm
Newsgroups: comp.lang.ruby
From: "Terry Poulin" <bigbos...@ippimail.com>
Date: Sat, 8 Sep 2007 07:40:02 +0900
Local: Fri, Sep 7 2007 6:40 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?

Don't know if it works on OS X but truss may also be useful.

TerryP.

--

Email and shopping with the feelgood factor!
55% of income to good causes. http://www.ippimail.com


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Ruby is much slower on linux when compiled with --enable" by Roger Pack
Roger Pack  
View profile  
 More options Sep 25 2007, 5:59 pm
Newsgroups: comp.lang.ruby
From: Roger Pack <rogerpack2...@gmail.com>
Date: Wed, 26 Sep 2007 06:59:06 +0900
Local: Tues, Sep 25 2007 5:59 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable
Does ruby compile by default with pthreads enabled?
Thanks.
-Roger

............

>running Rails Petstore from tw-commons and timing consecutive page hits
>with:
>ab -c 1 -n 1000
>http://localhost:3000/shop/viewProduct.shtml?product=K9-DL-01
>--disable-pthread
>78 requests/sec

--enable-pthread
62 requests/sec

25 % difference.
--
Posted via http://www.ruby-forum.com/.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Eric Hodel  
View profile  
 More options Sep 25 2007, 7:06 pm
Newsgroups: comp.lang.ruby
From: Eric Hodel <drbr...@segment7.net>
Date: Wed, 26 Sep 2007 08:06:46 +0900
Local: Tues, Sep 25 2007 7:06 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable
On Sep 25, 2007, at 14:59 , Roger Pack wrote:

> Does ruby compile by default with pthreads enabled?

No.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Rick DeNatale  
View profile  
 More options Sep 26 2007, 1:00 pm
Newsgroups: comp.lang.ruby
From: "Rick DeNatale" <rick.denat...@gmail.com>
Date: Thu, 27 Sep 2007 02:00:36 +0900
Local: Wed, Sep 26 2007 1:00 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable
On 9/25/07, Eric Hodel <drbr...@segment7.net> wrote:

> On Sep 25, 2007, at 14:59 , Roger Pack wrote:

> > Does ruby compile by default with pthreads enabled?

> No.

I seem to recall that one of the library extensions (Tk if I'm not
mistaken) either wouldn't compile or complained loudly if if found
that Ruby had been compiled without pthreads enabled.

But then again, it might be my senility cropping up. <G>

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
M. Edward (Ed) Borasky  
View profile  
 More options Sep 26 2007, 10:43 pm
Newsgroups: comp.lang.ruby
From: "M. Edward (Ed) Borasky" <zn...@cesmail.net>
Date: Thu, 27 Sep 2007 11:43:17 +0900
Local: Wed, Sep 26 2007 10:43 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable
Rick DeNatale wrote:
> On 9/25/07, Eric Hodel <drbr...@segment7.net> wrote:
>> On Sep 25, 2007, at 14:59 , Roger Pack wrote:

>>> Does ruby compile by default with pthreads enabled?
>> No.

> I seem to recall that one of the library extensions (Tk if I'm not
> mistaken) either wouldn't compile or complained loudly if if found
> that Ruby had been compiled without pthreads enabled.

> But then again, it might be my senility cropping up. <G>

If you have Ruby (1.8), Tcl and Tk all together on the same Linux
system, they must all be compiled with the same setting for "pthreads"
-- either all of them have it set or all of them don't. Ruby will
complain during either configure or make, I forget which, if you tell it
to do the opposite of what it has determined you did for Tcl and Tk.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Alexey Verkhovsky  
View profile  
 More options Sep 26 2007, 11:21 pm
Newsgroups: comp.lang.ruby
From: "Alexey Verkhovsky" <alexey.verkhov...@gmail.com>
Date: Thu, 27 Sep 2007 12:21:53 +0900
Local: Wed, Sep 26 2007 11:21 pm
Subject: Re: Ruby is much slower on linux when compiled with --enable
On 9/26/07, M. Edward (Ed) Borasky <zn...@cesmail.net> wrote:

> If you have Ruby (1.8), Tcl and Tk all together on the same Linux
> system, they must all be compiled with the same setting for "pthreads"

Which is why every precompiled binary package of Ruby that I've seen
is linked with pthread.

--
Alexey Verkhovsky
CruiseControl.rb [http://cruisecontrolrb.thoughtworks.com]
RubyWorks [http://rubyworks.thoughtworks.com]


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Eric Hodel  
View profile  
 More options Sep 27 2007, 3:47 am
Newsgroups: comp.lang.ruby
From: Eric Hodel <drbr...@segment7.net>
Date: Thu, 27 Sep 2007 16:47:09 +0900
Local: Thurs, Sep 27 2007 3:47 am
Subject: Re: Ruby is much slower on linux when compiled with --enable
On Sep 26, 2007, at 10:00 , Rick DeNatale wrote:

> On 9/25/07, Eric Hodel <drbr...@segment7.net> wrote:
>> On Sep 25, 2007, at 14:59 , Roger Pack wrote:

>>> Does ruby compile by default with pthreads enabled?

>> No.

> I seem to recall that one of the library extensions (Tk if I'm not
> mistaken) either wouldn't compile or complained loudly if if found
> that Ruby had been compiled without pthreads enabled.

Correct.

If you check out from source and run:

autoconf && ./configure && make

ruby will not be linked with the system pthread library.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Roger Pack  
View profile  
 More options Sep 27 2007, 11:01 am
Newsgroups: comp.lang.ruby
From: Roger Pack <rogerpack2...@gmail.com>
Date: Fri, 28 Sep 2007 00:01:30 +0900
Local: Thurs, Sep 27 2007 11:01 am
Subject: Re: Ruby is much slower on linux when compiled with --enable
How can one check if theirs is compiled with pthreads or not?

Alexey Verkhovsky wrote:
> On 9/26/07, M. Edward (Ed) Borasky <zn...@cesmail.net> wrote:
>> If you have Ruby (1.8), Tcl and Tk all together on the same Linux
>> system, they must all be compiled with the same setting for "pthreads"

> Which is why every precompiled binary package of Ruby that I've seen
> is linked with pthread.

--
Posted via http://www.ruby-forum.com/.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Ruby is much slower on linux when compiled with --enable-pthread?" by Marc Heiler
Marc Heiler  
View profile  
 More options Jun 7 2008, 5:06 am
Newsgroups: comp.lang.ruby
From: Marc Heiler <sheve...@linuxmail.org>
Date: Sat, 7 Jun 2008 04:06:12 -0500
Local: Sat, Jun 7 2008 5:06 am
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?

> How can one check if theirs is compiled with pthreads or not?

Maybe try with "ldd" on the ruby binaries
--
Posted via http://www.ruby-forum.com/.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Sean O'Halpin  
View profile  
 More options Jun 7 2008, 7:53 am
Newsgroups: comp.lang.ruby
From: Sean O'Halpin <sean.ohal...@gmail.com>
Date: Sat, 7 Jun 2008 06:53:49 -0500
Local: Sat, Jun 7 2008 7:53 am
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?

On Tue, Sep 4, 2007 at 5:53 AM, Adam Kramer <akra...@google.com> wrote:
> Hi,

> I was seeing significant performance differences between ruby 1.8.4 on
> an old distribution and a newer one. I spent some hours tracking down
> the differences and it appears that --enable-pthread causes ruby to be
> significantly slower.
[snip]
> Has anyone else witnessed this? Is this a "feature" that's to be expected?

Yes, we've hit this - in Centos 5, the default ruby build is 1.8.5 (!)
with --enable-pthread. What I'd like to know is why[1]? Is it just
hand-waving conservatism (just-in-case-we-need-it), RedHat policy to
enable pthreads everywhere or is there a specific reason why pthreads
have to be enabled, e.g. there's an Oracle driver that requires it or
some such?

Anyone have any ideas?

Regards,
Sean

[1] Apart from why anyone thinks putting an unstable version of ruby
in their distro is a good idea


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
m.fellin...@gmail.com  
View profile  
 More options Jun 7 2008, 9:50 am
Newsgroups: comp.lang.ruby
From: m.fellin...@gmail.com
Date: Sat, 7 Jun 2008 08:50:02 -0500
Local: Sat, Jun 7 2008 9:50 am
Subject: Re: Ruby is much slower on linux when compiled with --enable-pthread?
tk, by default, compiles with pthread
ruby ships with exteensive bindings to tk and so has to be kept
compatible to use ruby and tk together.
that's the only reason i can think of.

^ manveru

On 6/7/08, Sean O'Halpin <sean.ohal...@gmail.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »