An update on our LONGPOLL experiment.
I've removed the extra LONGPOOL flushes - your LONGPOLLs will now only update when we know about a new Block to mine on.
I agree that this was a misuse of LONGPOLL - but let me explain my reason for trying it.
Our pool has a guarantee of accepting work - even if it is stale - for a fixed amount of time from when we generated the work for the miner. Right now, this
is set to 60 seconds. This information is implied by our getwork headers:
X-Mining-Extensions: longpoll rollntime submitold
X-Roll-Ntime: expire=60
X-Long-Polling: /listenChannel
Server: CoinLab Affiliate Pool
Notice that we specify a 60 second expire time in X-Roll-Ntime. That's telling miners that not only can they increment the timestamp 60 times, but also
that they should NOT be submitting this work more than 60 seconds in the future (if they do - they risk getting a stale). I don't know if other pools
have the same kind of strong guarantee of accepting stale work, but we've implemented a "Grace Period" - we will accept even stale work for 60 seconds
after the end of a block -
but only if you received the work within the last 60 seconds.
We notice many miners
do not update their work frequently. According to the semantics of the X-Roll-Ntime extension, a miner should cease mining
on blocks older than
expire seconds old. My aggressive sending of LONGPOLL flushes was my attempt to get miners to update their work each minute.
Here's a snapshot of our internal metrics.
Before the change (at 12:15 PST today), you'll see that we were flushing each 60 seconds, which results in relatively few stale shares when each new block is
found (called "generation start" in the chart).
After the change, you can see no more frequent long-poll flushes, but relatively more stales at the start of a new block.
There are a few miners on our pool working on very old work - note the work age graph (darker bands indicate older work shares). A properly written miner on our
pool should not be submitting work much more than 60 seconds from the time it is received. We are seeing shares on work that is over an hour old in the extreme
(a very buggy miner), but also over 5 minutes from several miners on our pool.
If you're getting a significant number of stales while mining on our pool - let us know what mining client (and version) you're running; we'd like to eliminate stales completely
from our pool.