http://www.perlmonks.org?node_id=1021991

lazydev has asked for the wisdom of the Perl Monks concerning the following question:

I require suggestions for writing a perl script which reduces or uses less CPU & Memory utilization during execution of a program .

I have a validation.pl perl script which executes fine but this script has to validate around 1000 files daily for every 5 minutes. So I have written a simple shell script with a simple for loop

for i in 1 2 3 4 5 . . . . . . 1000 do validation.pl $i done

As it needs to validate 1000 files where each validation.pl executes for 10sec's and it's taking more time then 5 minutes as they are executed sequentially .

So I have changed the syntax to execute the validation script in background mode to run parallely (1000 processes related to validation.pl execute at the same time for a minute)

for i in 1 2 3 4 5 . . . . . . 1000 do nohup validation.pl $i & done

Now it executes all the processes parallely but it's causing high CPU & Memory Utilization .In simple the server crashes because of high cpu & memory utilization. As one processes takes around 0.1% cpu & memory utilization 1000 processes almost uses 100% of utilization .

Is there a better way where I can write the shell script in perl and it should execute the validation.pl in parallel for all the inputs with less cpu & memory utilization during execution .

Please let me know what would be the best way to start working on it .