Sun, you were asking about 'stratum requested a work restart'. So I went through a certain amount of pain trying to reduce the chatiness and learned that in stratum its not as simple as just setting a poll setting and resetting the work restart request (as one would believe because of the interval passing). There are many factors that influence the work restart: rpc polling duration, merkle root changes (or tx list changes), someone mining the current rounds difficulty, stratum timeout between client-server, etc.
So basically what we have now when someone goes to run a pool, we have some pretty good defaults setup (they can be overridden in the config files). The client polls for new blocks every 30 seconds, but it also finds new transactions when shares are submitted. The biggest issue here is the bbpminer external miner has a default timeout (that I have not changed) of 120 seconds, and, if you dont talk to the server within 120 seconds, the client hangs up and starts a new stratum connection. So the server must always send something to client within that amount of time. (IE refresh the work).
So in our case, we send updates when either someone found a pobh solution for that diff, or, the 115 seconds is about to expire - then we send new work.
In the future I might increase the timeout on the client then we can increase the timeout on the server later, but it appears to be working relatively well now.
So this is why your client will sometimes hash longer (or shorter) and getting the 'request a work restart' message.