Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

Re^3: Multithreaded Script CPU Usage

by NiJo (Friar)
on Sep 01, 2008 at 21:05 UTC ( #708327=note: print w/replies, xml ) Need Help??

in reply to Re^2: Multithreaded Script CPU Usage
in thread Multithreaded Script CPU Usage

It took me some days off and rethinking to guess at your real bottleneck. Did you forget to tell us about the low bandwitdth remote windows network shares you are scanning? 300 local disks is too much to believe. Then collect the data locally into files and transfer them to the server. The parallel scanning should take about a minute for these file systems just above desktop size.

But after solving all the scanning performance issues you are finally bound by the insert limit of your database. 80 million records are very huge. 1000 inserts per second would be my estimate for mysql on a desktop. That is 22 hours in your case. But do your own benchmark for multiple and faster CPUs and disks.

Back to the drawing board you need to eliminate the overhead of the database. We don't know anything about use cases of your database output. When it is just finding a file once per week, I'd cat the local output files together and grep the 800 MB text file at disk speed in less than 10 seconds. In more advanced cases Perl regexps should have lower overhead than SQL on queries and no insert limit bottleneck.

Replies are listed 'Best First'.
Re^4: Multithreaded Script CPU Usage
by Zenshai (Sexton) on Sep 03, 2008 at 00:59 UTC
    Yes, I did not say anything about the network shares, because I am confident they are not my bottleneck (they aren't low bandwidth). I've benchmarked scanning a 2000 file folder on a local hd vs one on one of the remote shares and the remote share took about .5sec longer on avg.

    The database, unfortunately is not the problem either. Getting the actual data into the DB can be done outside the weekend window. So I can just start LOADing the temp files after the scan completes. Though I'd like to do it concurrently if at all possible.

    I've recently tried running the DB and regexp part of the script on another machine and this did not solve the CPU issue. I've also tried simply disabling those parts of the script with the same effect.

    Currently I'm back at the original issue I created this post with, and looking for other ways to implement the multithreaded queue based behavior.

    Thank you though, for helping me think this through.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2018-06-24 05:47 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.