These subs allow you control how much % CPU maximum will use your script. CPU_start() must be called once when you script start.
This example script will use 30% CPU until Ctrl-C pressed:
CPU_start(); CPU_max(30) while 1;
This example script will use 30% CPU until Ctrl-C pressed:
CPU_start(); CPU_max(30) while 1;
use Time::HiRes qw(time); sub CPU_used { (map {$_->[13]+$_->[14]} [split " ", Cat("/proc/self/stat")])[0] } { my %start = (tm => 0, cpu => 0); sub CPU_start { @start{"tm","cpu"} = (time(),CPU_used()) } sub CPU_max { my ($max, $real, $cpu) = ($_[0], time()-$start{tm}, CPU_used()-$start{cpu}); return unless defined($max) and $max > 0; &sleep( $cpu/$max-$real ); }} # # macro used from CPU_used() and CPU_max() # sub sleep { select undef,undef,undef,$_[0] } sub Cat { local *F; open F, "< ".$_[0] or return; local $/ unless wantarray; return <F>; }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: resource control: CPU
by lirm (Novice) on Apr 24, 2002 at 15:40 UTC | |
by powerman (Friar) on Apr 24, 2002 at 16:00 UTC | |
by thayer (Sexton) on Apr 30, 2002 at 07:20 UTC |
Back to
Cool Uses for Perl