Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: dynamic number of threads based on CPU utilization

by bulk88 (Priest)
on Sep 27, 2012 at 03:34 UTC ( #995923=note: print w/replies, xml ) Need Help??

in reply to dynamic number of threads based on CPU utilization

I would use Time::HiRes and start putting time counters in worker*() subs. "$OUTFILE" is being used by multiple threads. I dont know how bad the performance will be of using $OUTFILE from multiple threads but it doesn't look good. Regarding shared variables. They are implemented by locks, and a "master" central variable in a secret ithread/interp.

If you can not reduce the number of reads and writes or rethink your algorithm/use of threads at all (other suggestions in this thread), I suggest outright *locking* %similar for duration of "foreach my $odom(keys %similar) {" loop in simAlg, or locking %similar and then copying %similar to a my %local_similar and doing the loop on %local_similar, copy %local_similar back to %similar and release the lock on %similar. If your algorithm needs allow, you could copy %similar to %local_similar and never look at %similar for the rest of the job item.
  • Comment on Re: dynamic number of threads based on CPU utilization

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://995923]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (6)
As of 2018-01-22 20:34 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (237 votes). Check out past polls.