Regarding adaptive difficulty: Is it calculated on worker or user basis?
Worker.
Because of how the Stratum protocol works, however, difficulty can only be set per connection, so if you use the proxy all the workers connecting through it will share the same share target/difficulty. Currently the behavior of the pool is to adapt the difficulty to the fastest worker connecting through the proxy.
Ok, I grouped my miners by hashing power and connected each group to a dedicated stratum proxy.
This looks much better now. Thanks for that hint again.
Anyway I think your strategy of (re-) setting the difficulty is too aggressive:
2013-04-04 09:15:17,763 INFO proxy client_service.handle_event # Setting new difficulty: 2
2013-04-04 09:17:40,588 INFO proxy client_service.handle_event # Setting new difficulty: 4
2013-04-04 09:19:41,523 INFO proxy client_service.handle_event # Setting new difficulty: 2
2013-04-04 09:20:51,522 INFO proxy client_service.handle_event # Setting new difficulty: 4
2013-04-04 09:35:46,359 INFO proxy client_service.handle_event # Setting new difficulty: 2
2013-04-04 09:37:03,026 INFO proxy client_service.handle_event # Setting new difficulty: 4
2013-04-04 09:47:03,902 INFO proxy client_service.handle_event # Setting new difficulty: 2
2013-04-04 09:47:42,615 INFO proxy client_service.handle_event # Setting new difficulty: 16
2013-04-04 09:49:56,160 INFO proxy client_service.handle_event # Setting new difficulty: 4
See the difficulty jumping from 2 to 16 after only 40 seconds (while is was rather constant before)?