James,
experience from tuning my homepage indicates that you can cut response times a lot by turning on caching for permissions (an APM parameter of the kernel). You should mount developer support, activate query logging (APM parameter of the package) and restart the server. Figure out which queries are the bottlenecks and consider caching with util_memoize, see this thread:
https://openacs.org/forums/message-view?message_id=77562
Recently I had been looking into unneccessary queries that the request processor is making. One such query that you might see is
select node_id
from host_node_map
where host = :host
- not exactly an expensive query but still, it should be cached. The query will be executed if the hostname in your AOLServer config file doesn't match exactly the host header of the request. For my homepage that means the query is executed for marklundweb.com but not for www.marklundweb.com (what I have in the config file).
When running developer support you may see a query (executed twice sometimes) building up the context bar. This query has been replaced with a cached lookup recently. I think this change will be in 4.6.
On the OpenACS development branch (what will be 4.7 eventually) there is an overhead query that is run four times per request to check the locale preference for a user for the requested package. I'm working on adding a cache to elliminate those queries.
Another thing to do is set the performance mode kernel APM parameter to 1. This will reduce the amount of code executed in the request processor on each request.
What is PPS? Are you using Oracle or PG? What kind of hardware are you on?