I was doing some research and found this. Mod_perl is called with a Load_Module statement in my httpd.conf am not sure how this affects things. Ths is a brand new install of Apache 2.2.4 with mod_perl 2. I'm not even running any scripts now, just running apachectl graceful and then looking at the status screen (where I see lots of G's for the each existing and new process it starts). I don't even have any users on yet.
http://modperlbook.org/html/ch22_04.html
This is from that code article:
If after doing a graceful restart (e.g, by sending kill -USR1) you see via mod_status or Apache::VMonitor that a process is stuck in state G (Gracefully finishing), it means that the process is hanging in perl_destruct( ) while trying to clean up. If you don't need the cleanup, see the previous section on how to disable it.
This is the section before
If you are certain that your code does not contain any END blocks or DESTROY methods to be run during child server shutdown, you can avoid the delays by setting the PERL_DESTRUCT_LEVEL environment variable to -1. Be careful, however; even if your code doesn't include any END blocks or DESTROY methods, any modules you use( ) might.