Hi,

I'm finding that the fuser call being made once every .12 seconds in
progress_bar.sh is actually very taxing on my processor. I'm sure you
hardly notice on a fast machine, but on my PIII 500, top shows fuser
spiking to 25% processor usage at times. This is more expensive than
just letting all the output go to the screen with tee. Stracing "fuser
-v ." shows that it is actually looking through every socket and pid
on the system.

I think if you want to be making 8 calls per second, you should try to
limit them to bash built-ins only.  One option would be to touch a
file at the beginning of the target script.  I don't know how this
translates to make, but in bash you could do something like this.

touch /tmp/pid.$$

And change write_or_exit() in progress_bar.sh to.

write_or_exit() {
   # make has been killed or failed or run to completion, leave
 if [ ! -f ${TARGET_PID_FILE} ] ; then
    echo -n "${CURSOR_ON}" && exit
 fi
   # Target build complete, leave.
 [[ -f ${TARGET} ]] && echo -n "${CURSOR_ON}" && exit
   # It is safe to write to the screen
 echo -n "$1"
}

where TARGET_PID_FILE is passed in as /tmp/pid.$$.  You'd have to rm
-f that file on trapped exits, but that wouldn't be that difficult.
Anyway, that's just one idea.

--
Dan
--
http://linuxfromscratch.org/mailman/listinfo/alfs-discuss
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to