I just noticed that my own efficiency started to get down the last 24h (the first 24h with my settings where between 110 and 115% and now I'm at ~105%).
This may be because most P2Pool nodes are upgrading bitcoind and lowering their own getblocktemplate latency in the process. I'll have to test again to see if lowering my getblocktemplate latency helps my efficiency.
My current 0.25s might not be low enough now. One possibility is that this value actually influences efficiency when there's a noticeable difference between its value on a node and the average on all P2Pool nodes. Back to testing different bitcoin.conf values. Too bad: in its current configuration my node was including enough fees to make a 26.5BTC block! Fortunately with 0.8.2 I won't have to make much sacrifices in fees to reach very low latencies.
When I browsed through my P2Pool log, I noticed that the P2Pool stale rate varied between 17% and 20%+ in the last couple of days. Therefore the efficiency figure fluctuates even if your own stale / DOA rate doesn't change at all. That is why I think one should watch one's own stale rate more than the efficiency figure.
One problem with reaching conclusions on the data is that one needs quite a high hashrate in order to get a narrow confidence interval on the stale rate in a timeframe of a day or so.
For example, my mining rate is about 4.5 GH/s, and the stale rate interval reported by P2Pool is -+5% of the real stale rate after mining with the pool for three days or so.