Con Kolivas
4a94199246
Abstract out the test for stale work and test for it in the actual mining threads as well.
2011-07-16 00:34:05 +10:00
Con Kolivas
6dcf05ffaf
Make sure that local work generation does not proceed indefinitely by limiting it to the average block generation time - 10 minutes.
...
Doing more work will just waste power and will virtually never produce accepted shares.
2011-07-15 23:35:38 +10:00
Con Kolivas
aeaeac0889
Allow queue of zero again and make it default since we can track queued vs staged now and see if the queue needs to be bigger.
2011-07-15 10:42:06 +10:00
Con Kolivas
8a40036974
Just insist on 1 lp staged work per mining thread on new block.
2011-07-15 10:27:48 +10:00
Con Kolivas
4c9171792b
Limit the number of work items we put in the queue.
2011-07-15 09:48:26 +10:00
Con Kolivas
32221c4574
We shouldn't be deleting lp_staged value on dec_staged. It prevents detecting get_work failures.
2011-07-15 09:39:29 +10:00
Con Kolivas
23e4add229
Add a system status line to the formatted output.
2011-07-15 09:38:52 +10:00
Con Kolivas
34ecc59f4d
Forgot to set total_devices for the purposes of finding a positive active_device.
2011-07-15 08:56:52 +10:00
Con Kolivas
579bd42919
Revert "Change get_work to use a timeout when trying to tq_pop as a sanity failsafe in case of unusual circumstances."
...
This reverts commit 7b9b078114
.
Conflicts:
util.c
Timeout was a bandaid for other going-idle reasons and never helped. Revert it.
2011-07-15 08:53:05 +10:00
Con Kolivas
6ab2966035
Limit display to total devices to avoid repeating when selecting devices.
2011-07-15 01:11:47 +10:00
Con Kolivas
5fd73374b3
Get the device number from the thread id, not the other way around.
2011-07-15 01:08:23 +10:00
Con Kolivas
2864892e7b
Make sure we are working with the correct id devices and only print out the ones that are active.
2011-07-15 01:05:36 +10:00
Con Kolivas
86987b65ab
Refresh is missing after each curses_print_status to update the status window.
2011-07-14 23:55:03 +10:00
Con Kolivas
636c425073
Trivial EOL.
2011-07-14 23:46:32 +10:00
Con Kolivas
5bbd3134c3
Show the correct gpu devices only.
2011-07-14 23:43:00 +10:00
Con Kolivas
c36cc61f64
Ensure we connect at least once successfully before continuing to try to connect.
2011-07-14 22:16:06 +10:00
Con Kolivas
e21e923648
Make the curses interface optional with a new --text-only -T option.
2011-07-14 21:46:22 +10:00
Con Kolivas
ed11501742
Make the curses output separate from regular text output and put an executive summary after curses is shut down when cgminer exits.
2011-07-14 21:25:32 +10:00
Con Kolivas
c4cc83dceb
Explicitly grab first work item before entering asynchronous loop to prevent apparent HW errors when first starting due to stale data on the GPU.
2011-07-14 18:39:52 +10:00
Con Kolivas
df43b7135e
Add start time datestamp to status output.
2011-07-14 18:24:56 +10:00
Con Kolivas
4c859f3284
Make setting of intensity implicitly disable dynamic mode and remove the option to disable dynamic mode by itself.
2011-07-14 18:07:10 +10:00
Con Kolivas
fe8ab94a92
The max_nonce wasn't being reset on starting new work making cpu mining fail on each new work item.
2011-07-14 17:43:16 +10:00
Con Kolivas
3d900e7bc2
Initialise gpu_ms_average.
2011-07-14 11:47:56 +10:00
Con Kolivas
ba4ba7f65c
Only restart threads that are not stuck waiting on lp staged work, and add one mandatory queued work item for each restart.
2011-07-14 11:26:56 +10:00
Con Kolivas
7e38a37a54
Fix compiler warnings.
2011-07-14 11:05:12 +10:00
Con Kolivas
20b3e07f63
Implement signal handler and clean up properly.
2011-07-14 11:03:14 +10:00
Con Kolivas
02cd113cd9
Tidy up display.
2011-07-14 10:13:22 +10:00
Con Kolivas
7d517dcfc1
Conflicting options with -n. Change ndevs to -e for enumerate devices.
2011-07-14 01:50:20 +10:00
Con Kolivas
8375d1a21a
Add a dynamic flag that tries at all times to maintain the desktop interactive and make it possible to disable it for dedicated miners.
2011-07-13 15:22:06 +10:00
Con Kolivas
56d830a216
Trivial.
2011-07-13 12:08:43 +10:00
Con Kolivas
a8b39bcb7c
Make the status window maximum width to begin with.
2011-07-13 12:07:16 +10:00
Con Kolivas
3a968490b2
Turn the wakeup thread into a watchdog thread that checks when the last time a thread reported in was and restarts the thread if it has been idle for more than a minute.
2011-07-13 12:05:04 +10:00
Con Kolivas
c23827cbcc
Update the per-thread view as well to not miss dead threads.
2011-07-13 10:51:01 +10:00
Con Kolivas
81f8af85d6
Cope with servers that regularly drop the longpoll connection.
2011-07-13 10:42:12 +10:00
Con Kolivas
4de3f32a22
Move to newer jansson library.
2011-07-13 00:58:13 +10:00
Con Kolivas
bb4deaa245
strcat in longpoll thread can write outside of longpoll_block so cat them all in main().
2011-07-12 22:36:30 +10:00
Con Kolivas
86bc0426c6
Remove unused variable.
2011-07-12 19:28:48 +10:00
Con Kolivas
7b9b078114
Change get_work to use a timeout when trying to tq_pop as a sanity failsafe in case of unusual circumstances.
2011-07-12 19:19:00 +10:00
Con Kolivas
222d4ee6bf
Make curses completely inactivated in quiet mode and do not update curses code in wakeup thread when curses is inactive.
2011-07-12 17:29:59 +10:00
Con Kolivas
76b233a544
Implement locking around curses updates to avoid screen corruption and refresh both windows fully regularly from the wakeup thread which wakes up infrequently to not be too cpu intensive.
2011-07-12 17:03:13 +10:00
Con Kolivas
6d4476bba2
Use correct variable in initialisation.
2011-07-12 00:54:42 +10:00
Con Kolivas
ccf2ea914f
Convert the log and status portions of the screen to two separate ncurses windows for simpler cleaner output.
2011-07-12 00:33:08 +10:00
Con Kolivas
c59e2ab8b6
Avoid possible divide by zero.
2011-07-11 22:57:17 +10:00
Con Kolivas
43ef5f5d3f
Get rid of the flaky time_lock and use the thread safe localtime_r instead.
2011-07-11 22:45:19 +10:00
Con Kolivas
c836b5bf01
Don't try to find where the cursor is and just set it to the last line for logcursor.
2011-07-11 22:18:10 +10:00
Con Kolivas
73a864c51c
vfprintf invalidates the va args so do it after the curses output.
2011-07-11 21:56:34 +10:00
Con Kolivas
a1ffba823e
Refresh the display on every commit to applog since detecting bottom of the screen may be unreliable.
2011-07-11 21:22:22 +10:00
Con Kolivas
78ed386bb4
Delay any threads from starting till everything is set up properly.
2011-07-11 21:20:48 +10:00
Con Kolivas
b93e6a4254
Show all devices even if only selected are enabled.
2011-07-11 17:57:54 +10:00
Con Kolivas
505b18597b
Merge https://github.com/ycros/cgminer into cgminer
2011-07-11 16:56:28 +10:00
Con Kolivas
215ee79056
thr_id can be successful as -1 which is wrong and could lead to a crash.
2011-07-11 16:52:18 +10:00
Ycros
386489a147
Added support for pdcurses.
2011-07-11 14:56:17 +10:00
Con Kolivas
92e04f47cb
Make clear for multiple GPUs.
2011-07-11 13:46:01 +10:00
Con Kolivas
90839cdf5a
Implement a completely curses based display and don't output to stderr when log is enabled unless it's redirected away from the terminal.
2011-07-11 13:41:31 +10:00
Con Kolivas
f12edd2fb8
Keep track of number of mining threads explicitly and only enforce that many work items on new block work.
2011-07-10 23:07:53 +10:00
Con Kolivas
94fdff9a3e
Fix help typo.
2011-07-10 20:17:09 +10:00
Con Kolivas
75888a1f68
Implement device selection(s) with -d.
2011-07-10 20:14:28 +10:00
Con Kolivas
fbcd2942c8
Really correct the staged count logic failure.
2011-07-10 14:02:23 +10:00
Con Kolivas
82cac38874
Logic failure meant the longpoll fake staged were never removed. This would lead to idle periods and may have even caused complete idle failures.
2011-07-10 12:59:32 +10:00
Con Kolivas
8af98be7b9
Make the utility demonstrated relative to each device when showing per-device work submissions.
2011-07-10 01:01:34 +10:00
Con Kolivas
6464dbfc65
Implement per-device request count to have a per-device efficiency and request status.
2011-07-10 00:53:48 +10:00
Con Kolivas
3d9f244e02
Make all applog at least 80 columns wide obviating the need for spaces at the end of select messages to clear the status line.
2011-07-09 17:30:54 +10:00
Con Kolivas
5e6b8076c6
Tidy output.
2011-07-09 17:12:12 +10:00
Con Kolivas
1c92478997
Make sure to set first work as mandatory instead of generating work locally from it.
2011-07-09 17:11:22 +10:00
Con Kolivas
102c4d4088
Give meaningful message on submission failure and resumption instead of spam.
2011-07-09 17:06:30 +10:00
Ycros
f20e25e0c0
Moved pthread mutex inits up, due to applog using a mutex causing a crash.
...
Added Win32 compatability to opt.c.
2011-07-09 13:34:56 +10:00
Con Kolivas
c9bbaec3b2
Cope with delays in retrieving work from the server by knowing when we have run out of staged work.
...
Once we are out of staged work, roll the ntime forwards in the work to generate work locally without a getwork.
Display a message explaining when we move to/from local generation to server retrieval.
Make sure we don't think we've run out of work transiently after a longpoll by flagging a buffer of fake staged work.
2011-07-09 10:18:29 +10:00
Con Kolivas
3126002b51
When shares come frequently on more powerful mining hardware the status line doesn't appear for very long and gets drowned out by share information.
...
Cache the output and display it after each share submission.
2011-07-08 20:27:12 +10:00
Con Kolivas
a8be6851a9
Formalise the extra work item that the wakeup thread acts as a watchdog for.
2011-07-08 11:53:40 +10:00
Con Kolivas
732baa1812
Use the wakeup thread as a watchdog to ensure we don't fall between the holes of queue and dequeue.
2011-07-08 06:12:38 +10:00
Con Kolivas
bb49287449
Make longpoll aware of when new block detection has detected a new block first and avoid flushing the work queue twice.
2011-07-07 14:29:39 +10:00
Con Kolivas
186666d3d1
Prevent buffer overflow.
2011-07-07 10:43:52 +10:00
Con Kolivas
25bebf3b92
Make the output line much terser now that it has a lot of information on it.
2011-07-07 10:31:36 +10:00
Con Kolivas
1b2355176b
Merge branch 'cgminer' into mfontani
...
Conflicts:
main.c
2011-07-07 10:04:37 +10:00
Con Kolivas
ed233e8cb5
Put work into a staging area which makes it possible to check the latest work data received.
...
Then check the latest work data against a store of the current_block and use it to determine if we have moved to a new block.
This makes --no-longpoll work just as efficiently as longpoll, and works around when longpoll is unreliable.
2011-07-07 09:58:26 +10:00
Marco Fontani
c815de4991
Add "efficiency" and "utility"
...
Efficiency is the percentage of getworks compared to the amount of
work requested from the pool. It can go higher than 100% in case
more shares than getworks were found. Some pools prefer miners to
have a high efficiency; CPU miners likely exhibit a low efficiency.
Utility is the number of shares found per minute, since the miner
was started. It is another way to describe the effectiveness of
a miner.
2011-07-06 19:24:06 +01:00
Rusty Russell
efebee5ab8
Fix the case where there are no GPUs, and exit if they give errors.
...
If there are no GPUs, set nDevs to 0 not -1 (status is set to an
unhelpful -1001 here on my laptop, so we can't rely on a particular
status value).
Also, if nDevs is -1, exit rather than screwing up later.
2011-07-06 16:47:29 +09:30
Rusty Russell
8b68dc44d4
Fix --ndevs/-n option.
...
The option should be called from within the callback, and just use
printf to give the raw result, rather than using applog which prepends
a timestamp.
2011-07-06 16:47:29 +09:30
Rusty Russell
8d25df3c72
Cleanup --cpu-threads/-t logic
...
Currently it gets negated which means the default printed is wrong.
Use an explicit flag to tell if the user has overridden it; if they
haven't, and they turn off the GPUs, reset it to num_processors.
2011-07-06 16:47:29 +09:30
Rusty Russell
3e8181216c
Use ccan/opt for commandline parsing.
...
This cleans up option handling, by using ccan/opt rather than
handcoded getopt_long. We still have to open-code some things, such
as json config file handling.
The main change is that the --config option causes a file to be parsed
during commandline parsing, so you can override the results, and
provide multiple of them.
Other improvements are that 'help' and 'ndevs' are not valid arguments
in the config file; we use a separate argument table for such
commandline-only flags.
2011-07-06 16:47:29 +09:30
Con Kolivas
5969d65a04
First work for each thread is now queued in advance.
2011-07-06 15:57:50 +10:00
Con Kolivas
e9a397d4b9
More space to wipe old text.
2011-07-06 15:56:30 +10:00
Con Kolivas
e99069808a
Fix the extra work queued every longpoll by queueing it all in the beginning.
2011-07-06 15:40:12 +10:00
Con Kolivas
719deb3aac
Create a wakeup thread that keeps the hashmeter going in case the mining threads all stall.
2011-07-06 14:20:18 +10:00
Con Kolivas
ddae5aa9d0
Remove unused variable.
2011-07-06 13:29:01 +10:00
Con Kolivas
837e7b1a85
Remove unused cgpu rolling_local variable.
2011-07-06 13:28:29 +10:00
Con Kolivas
93800e5790
More output tidy.
2011-07-06 13:19:56 +10:00
Con Kolivas
56eee5f007
Retry should get_work() fail for whatever reason.
2011-07-06 13:16:47 +10:00
Con Kolivas
07f6de8b34
Change ifdef order since batch is always defined if idle is.
2011-07-06 13:05:57 +10:00
Con Kolivas
cf1e4627e4
Give error messages at all points of failure.
2011-07-06 13:04:35 +10:00
Con Kolivas
ed7e5bf9a3
There is still potential for an uneven number of queued and dropped work items with this unnecessarily complex check. Flush work guarantees a symmetrical number of queue and discard already.
2011-07-06 12:51:12 +10:00
Con Kolivas
69d8df643a
More cleaning of output with detecting new block.
2011-07-06 08:59:51 +10:00
Con Kolivas
8333a2ff40
Improve output appearance +/- verbose mode.
2011-07-06 00:01:40 +10:00
Con Kolivas
1fb09eaa0e
Implement -n/--ndevs option.
2011-07-05 23:11:05 +10:00
Con Kolivas
0ebdc39a19
Make debug mode imply verbose mode.
2011-07-05 23:07:18 +10:00
Con Kolivas
413e6b8645
Fix potential divide by zero.
2011-07-05 22:08:13 +10:00
Con Kolivas
0a80d4b04d
Display the output as a refreshing line and only push continuous log to stderr if desired.
2011-07-05 22:04:54 +10:00
Con Kolivas
a93b22c630
Make it possible to build without GPU mining by picking up HAVE_OPENCL from config.h.
2011-07-05 17:34:54 +10:00
Con Kolivas
4172fec24a
Cope with invalid parameter passing.
2011-07-05 16:47:19 +10:00
Con Kolivas
bc7cde7b36
Implement short option parsing.
2011-07-05 16:37:51 +10:00
Con Kolivas
13c57a5779
Properly initialise qd_lock mutex.
2011-07-05 15:18:13 +10:00
Con Kolivas
f90e73af51
Queue and pop precisely the same amount of work in flush_request to ensure all work is cleared and there isn't an uneven add/remove possible.
2011-07-05 10:47:47 +10:00
Con Kolivas
af6e7937ca
Signal handling in dns lookup code is responsible for libcurl crashes when multithreading.
...
Disable signal handling and use many curl handles instead, thus making work more asynchronous.
Theoretically a curl can wait forever on a dns lookup with this but it's extremely unlikely.
2011-07-05 10:42:11 +10:00
Con Kolivas
91f9c527ba
Rename code and application binary to cgminer version 1.0.9 preempting version 1.1.0, moving main code to main.c.
2011-07-04 20:33:31 +10:00