Con Kolivas
4987958e6a
Add a temporarily disabled state for enabled pools called POOL_REJECTING and use the work from each longpoll to help determine when a rejecting pool has started working again.
...
Switch pools based on the multipool strategy once a pool is re-enabled.
13 years ago
ckolivas
376fcd3c02
Fix the benchmark feature by bypassing the new networking code.
13 years ago
ckolivas
4d090a587c
Reset sequential reject counter after a pool is disabled for when it is re-enabled.
13 years ago
Kano
44fc698750
API add last share time to each pool
13 years ago
Con Kolivas
852f6a0eb0
Don't try to reap curls if benchmarking is enabled.
13 years ago
Con Kolivas
f0985f9978
Only show longpoll warning once when it has failed.
13 years ago
Con Kolivas
41d5813d8f
Convert hashes to an unsigned long long as well.
13 years ago
Con Kolivas
a4f1af1733
Detect pools that have issues represented by endless rejected shares and disable them, with a parameter to optionally disable this feature.
13 years ago
Luke Dashjr
068018225c
Bugfix: Use a 64-bit type for hashes_done (miner_thread) since it can overflow 32-bit on some FPGAs
13 years ago
Con Kolivas
5081c1824a
Limit the number of curls we recruit on communication failures and with delaynet enabled to 5 by maintaining a per-pool curl count, and using a pthread conditional that wakes up when one is returned to the ring buffer.
13 years ago
Con Kolivas
d4405de704
Generalise add_pool() functions since they're repeated in add_pool_details.
13 years ago
Luke Dashjr
4ba9006d0e
Disable failing devices such that the user can attempt to re-enable them
13 years ago
ckolivas
5cf4e188fd
Increase pool watch interval to 30 seconds.
13 years ago
ckolivas
85008a7853
Reap curls that are unused for over a minute.
...
This allows connections to be closed, thereby allowing the number of curl handles to always be the minimum necessary to not delay networking.
13 years ago
Con Kolivas
ec3d057016
Use the ringbuffer of curls from the same pool for submit as well as getwork threads.
...
Since the curl handles were already connected to the same pool and are immediately available, share submission will not be delayed by getworks.
13 years ago
Con Kolivas
7d288eac9f
Implement a scaleable networking framework designed to cope with any sized network requirements, yet minimise the number of connections being reoped.
...
Do this by create a ring buffer linked list of curl handles to be used by getwork, recruiting extra handles when none is immediately available.
13 years ago
Con Kolivas
89053c78da
There is no need for the submit and getwork curls to be tied to the pool struct.
13 years ago
ckolivas
adda6e6680
Do not recruit extra connection threads if there have been connection errors to the pool in question.
13 years ago
ckolivas
7638511290
We should not retry submitting shares indefinitely or we may end up with a huge backlog during network outages, so discard stale shares if we failed to submit them and they've become stale in the interim.
13 years ago
Con Kolivas
b015348df4
Shorten stale share messages slightly.
13 years ago
Con Kolivas
7233890d85
Protect the freeing of current_hash under mutex_lock to prevent racing on it when set_curblock is hit concurrently.
13 years ago
Con Kolivas
53c22551f7
Change default behaviour to submitting stale, removing the --submit-stale option and adding a --no-submit-stale option.
13 years ago
Con Kolivas
f9123f0587
Make sure to start the getwork and submit threads when a pool is added on the fly.
13 years ago
Con Kolivas
5ad942d187
Faster hardware can easily outstrip the speed we can get work and submit shares when using only one connection per pool.
...
Test the queued list to see if any get/submits are already queued and if they are, start recruiting extra connections by generating new threads.
This allows us to reuse network connections at low loads but recuit new open connections as they're needed, so that cgminer can scale to hardware of any size.
13 years ago
Con Kolivas
628ac19977
Get rid of confusing "waiting on fresh work" part of longpoll message to minimise log width and add pool number to longpoll work restart message.
13 years ago
Con Kolivas
972860c0af
Remove unused variable.
13 years ago
Con Kolivas
3362a2a447
Give a longpoll message for any longpoll that detects a block change, primary or backup, and also display which pool it was.
13 years ago
Con Kolivas
e1cf5029d4
Decrease utility display to one decimal place.
13 years ago
Con Kolivas
7b370bb2e7
Small cosmetic output alignment.
13 years ago
Con Kolivas
669b0deda3
Add pool number to stale share message.
13 years ago
Con Kolivas
03fab3f438
Remove thread id display from rejected shares as well.
13 years ago
Con Kolivas
86e94edb89
Set have_longpoll to true when there is at least one pool with longpoll.
13 years ago
Con Kolivas
0365878ac5
Don't display the thread ID since it adds no useful information over the device number.
13 years ago
Con Kolivas
08c721080d
Don't display the first 8 bytes of a share since they will always be zero at >= 1 difficulty.
13 years ago
Con Kolivas
501e35a0e6
work->longpoll is reset across test_work_current so we need to recheck what pool it belongs to.
13 years ago
Con Kolivas
03abb70467
Use longpolls from backup pools with failover-only enabled just to check for block changes, but don't use them as work.
13 years ago
Con Kolivas
1ab318d0f3
Start longpoll only after we have tried to extract the longpoll URL.
13 years ago
Con Kolivas
b1c273e71b
Check for submitold flag on resubmit of shares, and give different message for stale shares on retry.
13 years ago
Con Kolivas
5ece966f07
Check for submitold before submitstale.
13 years ago
Con Kolivas
ed718b2b50
Don't force fresh curl connections on anything but longpoll threads.
13 years ago
Con Kolivas
eda382990a
Create one longpoll thread per pool, using backup pools for those pools that don't have longpoll.
...
Use the work created from the longpoll return only if we don't have failover-enabled, and only flag the work as a longpoll if it is the current pool.
This will work around the problem of trying to restart the single longpoll thread on pool changes that was leading to race conditions.
It will also have less work restarts from the multiple longpolls received from different pools.
13 years ago
Con Kolivas
e502fde52b
Remove the ability to disable longpoll. It is not a useful feature and will conflict with planned changes to longpoll code.
13 years ago
Luke Dashjr
90c5ef1fa7
Bugfix: Make initial_args a const char** to satisfy exec argument type warning (on Windows only)
13 years ago
Con Kolivas
4cd973264f
Create discrete persistent submit and get work threads per pool, thus allowing all submitworks belonging to the same pool to reuse the same curl handle, and all getworks to reuse their own handle.
...
Use separate handles for submission to not make getwork potentially delay share submission which is time critical.
This will allow much more reusing of persistent connections instead of opening new ones which can flood routers.
This mandated a rework of the extra longpoll support (for when pools are switched) and this is managed by restarting longpoll cleanly and waiting for a thread join.
13 years ago
Kano
b3ac249e71
cgminer.c sharelog code consistency and compile warning fix
13 years ago
Luke Dashjr
4648330c9d
Support for share logging
13 years ago
Con Kolivas
f5f089f5b4
Add a --gpu-map option which will allow arbitrarily mapping ADL devices to OpenCL devices for instances where association by enumeration alone fails.
13 years ago
Con Kolivas
99331991ba
Increase upper limit on number of extra items to queue as some FPGA code can't yet reliably keep many devices busy.
13 years ago
Con Kolivas
d6edd07c4a
Display configuration file information when -c option is passed and only when file exists on loading default config file.
13 years ago
Con Kolivas
6ffdbc3aeb
Display configuration file loaded, if any, and debug output if configuration file parsing failed.
13 years ago