Con Kolivas
78aafcec5c
Make all buffers slightly larger to prevent overflow.
2012-10-02 09:26:18 +10:00
Con Kolivas
df91df3507
Userpass needs to be copied to user and pass earlier to allow stratum authorisation to work with it.
2012-10-02 02:03:52 +10:00
Con Kolivas
2941febd05
Store a sockaddr url of the stripped url used in determining sockaddr to not confuse it with the stratum url and fix build warnings.
2012-10-02 00:00:55 +10:00
Con Kolivas
2ccb6d78ca
Decrease the queued count with stratum work once it's staged as well.
2012-10-01 23:19:34 +10:00
Con Kolivas
601d1aca97
Allow the stratum retry to initiate and auth stratum in pool_alive to make sure the stratum thread is started.
2012-10-01 23:15:50 +10:00
Con Kolivas
4a7ce9dd2a
Avoid duplicating pool->rpc_url and setting pool->stratum_url twice to itself.
2012-10-01 22:21:43 +10:00
Con Kolivas
eaf7ed0dcd
Detect if a getwork based pool has the X-Stratum header on startup, and if so, switch to the stratum based pool.
2012-10-01 22:13:20 +10:00
Con Kolivas
b495a51b76
Comment update.
2012-10-01 18:50:32 +10:00
Con Kolivas
2aacd89aa8
Minor message change.
2012-10-01 18:46:33 +10:00
Con Kolivas
90b1893746
Create a work item from a "clean" request from stratum allowing the new block to be detected and the appropriate block change message to be given.
2012-10-01 18:43:24 +10:00
Con Kolivas
b97a33a58a
Use statically allocated stratum strings in struct work to cope with the inability to safely deallocate dynamically allocated ram.
2012-10-01 14:44:44 +10:00
Con Kolivas
e93f679ae4
Use the current pool when deciding whether to reuse work from a stratum source rather than the work's previous pool.
2012-09-30 23:44:27 +10:00
Con Kolivas
6174c80678
Copy the stratum url to the rpc url to avoid none being set.
2012-09-30 23:36:05 +10:00
Con Kolivas
b5617734fa
Provide locking around stratum send operations to avoid races.
2012-09-30 23:10:43 +10:00
Con Kolivas
8baac0d66d
Submit shares from stratum through the abstracted submit share function detecting what message they belong to and showing the data from the associated work, and then deleting it from the hash.
2012-09-30 23:03:45 +10:00
Con Kolivas
2de951518e
Abstract out share submit as a function to be useable by stratum.
2012-09-30 20:24:24 +10:00
Con Kolivas
739cba28a7
Rename parse_stratum to parse_method as it is only for stratum messages that contain methods.
2012-09-30 19:19:46 +10:00
Con Kolivas
b871f69f62
Display stratum as mechanism in status line when current pool is running it.
2012-09-30 19:13:50 +10:00
Con Kolivas
6593b89328
Correct nonce submitted with share.
2012-09-30 16:47:06 +10:00
Con Kolivas
41acd23d0f
Extranonce2 should be added before coinbase2.
2012-09-29 23:59:55 +10:00
Con Kolivas
fb987fd25a
We should be hashing the binary coinbase, not the hex one.
2012-09-29 19:15:58 +10:00
Con Kolivas
61360952f5
Fix endianness of nonce submitted for stratum.
2012-09-29 17:44:19 +10:00
Con Kolivas
fab9ff3cb7
Revert "Free stratum buffers added to the work struct when freeing work ram."
...
This reverts commit 13fdff6531
.
Not always allocated... needs some more thought.
2012-09-29 16:10:44 +10:00
Con Kolivas
7415d7aaa0
Begin implementing a hash database of submissions and attempt sending results.
2012-09-29 16:10:13 +10:00
Con Kolivas
13fdff6531
Free stratum buffers added to the work struct when freeing work ram.
2012-09-29 15:13:18 +10:00
Con Kolivas
aa93fa336c
Copy parameters from stratum work required for share submission.
2012-09-29 15:02:23 +10:00
Con Kolivas
4a29759480
Set lagging flag on first adding a pool to prevent pool slow warning at startup.
2012-09-29 14:48:34 +10:00
Con Kolivas
73d61ca4c3
Fix work->target being a 32 byte binary in gen_stratum_work.
2012-09-29 14:25:21 +10:00
Con Kolivas
ac47f7f3a6
Store and display stripped url in its own variable.
2012-09-29 14:16:16 +10:00
Con Kolivas
3db6fb4fac
Create machinery to divert work requests to stratum.
2012-09-29 13:07:00 +10:00
Con Kolivas
636f4b14d7
Generate the work target in gen_stratum_work, setting default diff to 1 in case it is not yet set.
2012-09-29 11:38:52 +10:00
Con Kolivas
2e9ade14a9
Generate work data, midstate and hash1 in gen_stratum_work.
2012-09-29 11:12:59 +10:00
Con Kolivas
e1468cc5fd
Generate header created from stratum structures in gen_stratum_work.
2012-09-29 11:02:25 +10:00
Con Kolivas
5c74be5930
Generate merkle root hash in gen_stratum_work.
2012-09-29 10:30:56 +10:00
Con Kolivas
1f6fe55152
Generate the coinbase for generation of stratum based work.
2012-09-29 02:16:22 +10:00
Con Kolivas
54ab28fd6e
Provide rudimentary support for stratum clean work command in the stratum thread.
2012-09-29 00:38:09 +10:00
Con Kolivas
04551445f6
Cope with pools being removed in the stratum thread.
2012-09-29 00:23:27 +10:00
Con Kolivas
0f1f2a62a6
Use the pool sock value directly in the stratum thread in case it changes after reconnecting.
2012-09-28 18:04:28 +10:00
Con Kolivas
56255a0c86
Create a stratum thread per pool that has stratum that monitors the socket and serves received data.
2012-09-28 18:01:33 +10:00
Con Kolivas
a6f1a62220
Create helper functions for checking when a socket is ready to read on and receive a single line at a time.
...
Begin stratum authorisation process.
2012-09-28 04:35:16 +10:00
Con Kolivas
30b665f021
Test specifically for stratum being active in pool_active.
2012-09-27 13:01:12 +10:00
Con Kolivas
f6f43500c0
Detect stratum in common place when adding urls, and use a bool to tell us when it's active.
2012-09-27 09:06:56 +10:00
Con Kolivas
a1b17229b8
Initiate stratum and grab first json result.
2012-09-26 15:23:01 +10:00
Con Kolivas
58873c1dfa
Get detailed addressinfo from the parsed URL for future raw socket usage when possible. IPV4 only for now.
2012-09-25 20:23:59 +10:00
Con Kolivas
ee3b7865e2
Prepare for getaddrinfo call.
2012-09-25 05:46:07 +10:00
Kano
5e7e150b12
hashmeter fix stats kh/s on 32bit windows
2012-09-24 23:34:10 +10:00
Con Kolivas
823a710a54
Display share difficulty on log with a shortened hash display on submission.
2012-09-24 14:08:35 +10:00
Kano
7c32562d80
API stats add some pool getwork difficulty stats
2012-09-24 11:34:50 +10:00
Con Kolivas
fd28d9f407
Ignore any pings pushed to the worker threads if the thread is still paused to prevent it being enabled and disabled repeatedly.
2012-09-24 09:03:27 +10:00
Con Kolivas
57a73dce34
Test for sequential getwork failures on a pool that might actually be up but failing to deliver work as we may end up hammering it repeatedly by mistake.
2012-09-24 08:30:07 +10:00
Kano
a6bf276f6b
API - Add last share difficulty for devices and pool
2012-09-19 01:14:43 +10:00
Kano
89b6989fb3
Store and report Accepted,Rejected,Stale difficulty in the summary and API
2012-09-19 00:54:55 +10:00
Kano
7ede5a59bd
WorkTime - display prevblock for scrypt
2012-09-18 14:30:46 +10:00
Kano
923b9e0d86
Calculate work difficulty for each getwork and display with WorkTime debug
2012-09-18 11:19:57 +10:00
Kano
796f3906c1
WorkTime - multiple nonce per work and identify the work source
2012-09-16 07:57:43 +10:00
Kano
bd3c98aaaf
Optional WorkTime details with each Accepted/Rejected work item
2012-09-15 14:04:57 +10:00
Kano
99f0607fb2
API add display of and setting queue,scantime,expiry
2012-09-12 23:26:43 +10:00
Kano
e649aa3906
HW: dont submit bad shares
2012-09-12 20:10:00 +10:00
Kano
fced503ed6
save individual pool proxy settings to config
2012-09-12 19:45:49 +10:00
Kano
0ac350547e
--default-config - allow command line to define the default configuration file for loading and saving
2012-09-12 19:32:37 +10:00
Kano
cef9731fbc
CURL support for individual proxy per pool and all proxy types
2012-09-12 07:44:00 +10:00
Kano
307d8da034
HW: error counter auto for all devices - ztex code not fixed
2012-09-04 15:57:11 +10:00
Kano
fd2034ce77
Merge branch 'main'
2012-09-04 00:56:35 +10:00
Kano
4023872b76
count device diff1 shares
2012-09-01 23:51:51 +10:00
Kano
568b0fed89
API allow full debug settings control
2012-09-01 18:21:08 +10:00
Con Kolivas
57c3b12f64
Sort the blocks database in reverse order, allowing us to remove the first block without iterating over them. Output the block number to debug.
2012-08-31 12:04:16 +10:00
Con Kolivas
f97bf2e2ac
Keep the local block number in the blocks structs stored and sort them by number to guarantee we delete the oldest when ageing the block struct entries.
2012-08-28 20:16:50 +10:00
Con Kolivas
b768758818
Test for lagging once more in queue_request to enable work to leak to backup pools.
2012-08-27 10:15:48 +10:00
Con Kolivas
579c1299c6
There is no need to try to switch pools in select_pool since the current pool is actually not affected by the choice of pool to get work from.
2012-08-27 10:10:50 +10:00
Con Kolivas
4a210d4eff
Only clear the pool lagging flag if we're staging work faster than we're using it.
2012-08-27 10:02:53 +10:00
Con Kolivas
d1683f75c9
needed flag is currently always false in queue_request. Remove it for now.
2012-08-27 09:55:19 +10:00
Con Kolivas
1b7db5bc9c
thr is always NULL going into queue_request now.
2012-08-27 09:47:55 +10:00
Con Kolivas
0e0093e602
Select pool regardless of whether we're lagging or not, and don't queue another request in switch pool to avoid infinite recursion.
2012-08-24 01:23:54 +10:00
Con Kolivas
7992e5f3c8
Carry the needed bool over the work command queue.
2012-08-24 00:41:14 +10:00
Con Kolivas
37fa7d36d4
Move the decision to queue further work upstream before threads are spawned based on fine grained per-pool stats and increment the queued count immediately.
2012-08-24 00:35:26 +10:00
Con Kolivas
618b3e8b11
Track queued and staged per pool once again for future use.
2012-08-23 23:50:38 +10:00
Con Kolivas
4ca288e820
Limit queued_getworks to double the expected queued maximum rather than factoring in number of pools.
2012-08-23 16:55:14 +10:00
Con Kolivas
ad90269508
Minimise the number of getwork threads we generate.
2012-08-23 16:33:24 +10:00
Con Kolivas
0feb679b67
Only keep the last 6 blocks in the uthash database to keep memory usage constant. Storing more is unhelpful anyway.
2012-08-23 12:19:23 +10:00
Con Kolivas
b74b54d95b
Check we haven't staged work while waiting for a curl entry before proceeding.
2012-08-23 11:09:09 +10:00
Con Kolivas
61df3013a8
Ignore the submit_fail flag when deciding whether to recruit more curls or not since we have upper bounds on how many curls can be recruited, this test is redundant and can lead to problems.
2012-08-22 23:03:17 +10:00
ckolivas
edd9b81622
Do not add time to dynamic opencl calculations over a getwork.
2012-08-22 10:07:20 +10:00
Con Kolivas
9de3a264fc
Increase max curls to number of mining threads + queue * 2, accounting for up and downstream comms.
2012-08-21 22:51:34 +10:00
Con Kolivas
3ab5dba67e
Queue enough requests to get started.
2012-08-21 22:50:09 +10:00
Con Kolivas
3ebe8e8c77
Revert "Scale maximum number of curls up according to work submission rate."
...
This reverts commit 1dff48e759
.
Did not increase staged work even though it decreased queues.
2012-08-21 22:09:11 +10:00
Con Kolivas
3ceb57b8f6
There is no point trying to clone_work in get_work() any more since we clone on every get_work_thread where possible.
2012-08-21 21:54:33 +10:00
Con Kolivas
787e40a7cc
There is no point subtracting 1 from maxq in get_work_thread.
2012-08-21 21:53:35 +10:00
Con Kolivas
1dff48e759
Scale maximum number of curls up according to work submission rate.
2012-08-21 21:50:20 +10:00
Con Kolivas
56be75228e
Roll back to 45f0ac7b48
2012-08-21 21:22:26 +10:00
Con Kolivas
c1886c9c99
Assume we need a full allotment of work after lp and make clone_work clone_lpwork only.
2012-08-21 21:13:14 +10:00
Con Kolivas
82fa6e25d5
There is no point running through clone_work from get_work() now that cloning is done from the get_work_thread.
2012-08-21 21:11:22 +10:00
Con Kolivas
caa266ca3b
Make opt_queue a function of mining threads in clone_work as well.
2012-08-21 21:10:23 +10:00
Con Kolivas
652efc6939
opt_queue should be a function of the number of mining threads.
2012-08-21 21:08:17 +10:00
Con Kolivas
8ed381f78a
Only set lagging flag once there are no staged work items.
2012-08-21 19:47:30 +10:00
Con Kolivas
f5ac84b804
select_pool does not switch back to the primary once lagging is disabled.
2012-08-21 19:32:05 +10:00
Con Kolivas
af32fb9a3d
Merge pull request #301 from kanoi/minerphp
...
API new command 'coin' with mining information
2012-08-21 00:28:50 -07:00
ckolivas
f71d635f0f
Free work before retrying in get_work_thread.
2012-08-21 17:02:11 +10:00
Con Kolivas
b3cfe47222
Increment total work counter under mutex lock.
2012-08-20 22:24:28 +10:00
Con Kolivas
e8daf1d8f2
Increment the queued count after the curl is popped in case there's a delay waiting on curls and we think we've queued work when in fact we're waiting on curls.
2012-08-20 16:19:28 +10:00
Kano
b3e9858c9f
API new command 'coin' with mining information
2012-08-20 16:07:20 +10:00
Con Kolivas
08948e02f3
Increase curl reaping time to 5 minutes since comms between curl requests can be 2 mins apart with lots of rolltime.
2012-08-20 16:02:32 +10:00
Con Kolivas
51d485e236
No need for extra variable in hash_push.
2012-08-20 16:02:32 +10:00
Con Kolivas
c01284fb07
Remove short options -r and -R to allow them to be reused and remove readme entries for deprecated options.
2012-08-20 11:58:05 +10:00
Con Kolivas
8fc701dd76
Deprecate the opt_fail_pause parameter, leaving a null placeholder for existing configurations.
2012-08-20 11:18:37 +10:00
Con Kolivas
35cb7fd101
Don't pause after failed getwork, set lagging flag and reassess.
2012-08-20 11:16:38 +10:00
Con Kolivas
69d8c339aa
Add message to share if it's a resubmit.
2012-08-20 11:08:56 +10:00
Con Kolivas
b622e97e3e
We should not be pausing in trying to resubmit shares.
2012-08-20 11:03:28 +10:00
Con Kolivas
a9278ce944
Get rid of the extending fail pause on failed connects since we discard work after a period.
2012-08-20 11:00:10 +10:00
Con Kolivas
34b8dcb7bc
get_work always returns true so turn it into a void function.
2012-08-20 10:58:12 +10:00
Con Kolivas
260b1c87c0
get_work never returns false so get rid of fail pause loop.
2012-08-20 10:54:59 +10:00
Con Kolivas
4df9c387f0
Get rid of pause and retry from get_upstream_work so we only do it from one place.
2012-08-20 10:53:42 +10:00
Con Kolivas
1f295cd7fa
Deprecate the opt_retries feature as no one wants cgminer to automatically abort. Leave a null placeholder for configurations that still have it.
2012-08-20 10:43:50 +10:00
Con Kolivas
f6d2853c9b
Summary layout difference.
2012-08-18 19:53:43 +10:00
Con Kolivas
ed3eb5771a
Introduce a new statistic, Work Utility, which is the number of difficulty 1 shares solved per minute. This is useful for measuring a relative rate of work that is independent of reject rate and target difficulty.
2012-08-18 15:44:48 +10:00
Con Kolivas
26ab7346e3
Implement a new pool strategy, BALANCE, which monitors work performed per pool as a rolling average every 10 minutes to try and distribute work evenly over all the pools.
...
Do this by monitoring diff1 solutions to allow different difficulty target pools to be treated equally, along with solo mining.
Update the documentation to describe this strategy and more accurately describe the load-balance one.
2012-08-18 15:27:53 +10:00
Con Kolivas
d8c76bbd08
Getwork fail was not being detected. Remove a vast amount of unused variables and functions used in the old queue request mechanism and redefine the getfail testing.
2012-08-18 11:26:11 +10:00
Con Kolivas
8fa708093b
Don't try to start devices that don't support scrypt when scrypt mining.
2012-08-18 11:07:32 +10:00
Con Kolivas
b814b42c7f
Consider us lagging only once our queue is almost full and no staged work.
2012-08-18 10:38:02 +10:00
Con Kolivas
b60f9da4a5
Simplify the enough work algorithm dramatically.
2012-08-18 10:37:05 +10:00
Con Kolivas
0e56dffd92
Only queue from backup pools once we have nothing staged.
2012-08-18 10:37:05 +10:00
Con Kolivas
e16b7566bd
Don't keep queueing work indefinitely if we're in opt failover mode.
2012-08-18 10:37:05 +10:00
Con Kolivas
6d1949e694
Make sure we don't opt out of queueing more work if all the queued work is from one pool.
2012-08-18 10:37:05 +10:00
Con Kolivas
a5f7b953fe
Set lagging flag if we're on the last of our staged items.
2012-08-18 10:37:05 +10:00
Con Kolivas
ee9e621e1c
Reinstate clone on grabbing work.
2012-08-18 10:37:05 +10:00
Con Kolivas
55f7c14982
Grab clones from hashlist wherever possible first.
2012-08-18 10:37:05 +10:00
Con Kolivas
c3e32274ee
Cull all the early queue requests since we request every time work is popped now.
2012-08-18 10:37:05 +10:00
Con Kolivas
0fbd60ae37
Keep track of staged rollable work item counts to speed up clone_available.
2012-08-18 10:37:05 +10:00
Con Kolivas
83b9ddfea4
Make expiry on should_roll to 2/3 time instead of share duration since some hardware will have very fast share times.
2012-08-18 10:37:05 +10:00
Con Kolivas
8697d6a2ce
Do the cheaper comparison first.
2012-08-18 10:37:05 +10:00
Con Kolivas
381c56f811
Check that we'll get 1 shares' worth of work time by rolling before saying we should roll the work.
2012-08-18 10:37:05 +10:00
Con Kolivas
afcfea15a7
Simplify all those total_secs usages by initialising it to 1 second.
2012-08-18 10:37:05 +10:00
Con Kolivas
5fadfdb219
Overlap queued decrementing with staged incrementing.
2012-08-18 10:37:05 +10:00
Con Kolivas
9f1d9ce3b7
Artificially set the pool lagging flag on pool switch in failover only mode as well.
2012-08-18 10:37:05 +10:00
Con Kolivas
a6b97327e1
Artificially set the pool lagging flag on work restart to avoid messages about slow pools after every longpoll.
2012-08-18 10:37:05 +10:00
Con Kolivas
44e81218fd
Factor in opt_queue value into enough work queued or staged.
2012-08-18 10:37:05 +10:00
Con Kolivas
611f1cec7c
Roll work whenever we can on getwork.
2012-08-18 10:37:05 +10:00
Con Kolivas
fd0be1bb51
Queue requests for getwork regardless and test whether we should send for a getwork from the getwork thread itself.
2012-08-18 10:37:04 +10:00
Con Kolivas
7d77c01619
Get rid of age_work().
2012-08-18 10:37:04 +10:00
Con Kolivas
d1508bd40e
Merge pull request #296 from kanoi/api
...
API allow display/change failover-only setting (API v1.16)
2012-08-14 14:45:34 -07:00
Kano
95dff7363e
API allow display/change failover-only setting
2012-08-14 12:54:27 +10:00
Con Kolivas
8e20456bc0
Check we are not lagging as well as there is enough work in getwork.
2012-08-14 09:13:59 +10:00
Con Kolivas
00691ababf
Merge pull request #292 from kanoi/main
...
Escape " and \ when writing json config file
2012-08-11 20:42:05 -07:00
Con Kolivas
d66742a8c1
Minimise locking and unlocking when getting counts by reusing shared mutex lock functions.
2012-08-12 11:04:51 +10:00
Con Kolivas
c91a95459b
Avoid getting more work if by the time the getwork thread is spawned we find ourselves with enough work.
2012-08-12 10:55:18 +10:00
Con Kolivas
f27bcb8ee5
Going back to e68ecf5eb2
2012-08-12 10:45:59 +10:00
Con Kolivas
c892ded6e0
Make sure there are true pending staged work items as well in failover only mode.
2012-08-12 10:40:58 +10:00
Con Kolivas
61003df49f
In failover-only mode we need to queue enough work for the local pool and ignore the total queued count.
2012-08-12 10:33:26 +10:00
Con Kolivas
8aa61f6626
Make sure we have work from the current pool somewhere in the queue in case the queue is full of requests from a pool that has just died.
2012-08-11 16:47:49 +10:00
Con Kolivas
c0aaf56a8d
Since all the counts use the same mutex, grab it only once.
2012-08-11 16:11:53 +10:00
Con Kolivas
4f9394be81
When popping work, grab cloned work first if possible since original work can be reused to make further clones.
2012-08-11 14:39:35 +10:00