in reply to Re: latest on ithreads vs forks?
in thread latest on ithreads vs forks?

Sure thing. I'm running on a P4 with Linux 2.4.9. Here's a simple test I tried, using perl 5.8.4:

# which threading model do we want? use threads; #use forks; $num_threads = shift(@ARGV) || 10; foreach (0..$num_threads-1) { # create a new thread push(@threads,threads->new(\&thread_sub)); } foreach $thread (@threads) { # wait for threads to finish $thread->join(); } printf "Orig thread done\n"; sub thread_sub { printf "Thread %d started\n",threads->tid(); }

When I run time on a series of runs with threads.pm/forks.pm, I can't tell how much cpu time forks.pm really uses because I only get the cpu time of the parent (working on that), but I the average page faults looks like this:

threads.pm: Major (requiring I/O) page faults: 387.00 Minor (reclaiming a frame) page faults: 1151.20 forks.pm: Major (requiring I/O) page faults: 470.00 Minor (reclaiming a frame) page faults: 4591.20

Wall clock time, for what that's worth (these are all run on the same machine), is consistently 4x for forks vs threads.

Replies are listed 'Best First'.
Re: Re: Re: latest on ithreads vs forks?
by perrin (Chancellor) on May 27, 2004 at 00:03 UTC
    Can you try loading up some heavy modules like DBI, HTML::Parser, LWP, and IO::Handle, all before spawning threads, and see what happens? Wall time seems like a reasonable metric to me. Also, you might want to compare memory used.