selectable estimate...want to try estimate_last24h to see if it doesn't switch as often
This commit is contained in:
		
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
								
							| @@ -12,6 +12,33 @@ configuration between the different pools. | ||||
| I started this under nvOC, but have since migrated my mining rig from nvOC | ||||
| to a standard Gentoo Linux setup. | ||||
|  | ||||
| Usage | ||||
| ===== | ||||
|  | ||||
| ./zpool-switch.py conf-file miner-file algo-map estimate_selection [algo] | ||||
|  | ||||
| The switcher takes four parameters in normal operation: | ||||
|  | ||||
| conf-file: general configuration (JSON) | ||||
|  | ||||
| miner-file: miner configuration (JSON) | ||||
|  | ||||
| algo-map: mapping from the algorithm labels zpool uses to the ones used in | ||||
| miner-file (JSON) | ||||
|  | ||||
| estimate_selection: one of three values to determine switching behavior, | ||||
| based on the three estimates provided by zpool: estimate_current, | ||||
| estimate_last24h, actual_last24h.  estimate_current is likely to lead to | ||||
| more frequent switching than the other two. | ||||
|  | ||||
| The optional fifth parameter lets you manually pick an algorithm for mining; | ||||
| this is useful for testing and benchmarking. | ||||
|  | ||||
| zpool-switch configures the cards' fan and power settings, starts the miner | ||||
| in a screen session, and exits.  It should be called periodically (perhaps | ||||
| every 10-15 minutes); you could do this with a shell script, a cron job, or | ||||
| whatever other method you prefer. | ||||
|  | ||||
| miners.json | ||||
| =========== | ||||
|  | ||||
|   | ||||
| @@ -70,18 +70,18 @@ miners=filtered_miners | ||||
| # adjust estimates so they're all in the same units: BTC/day per GH/s  | ||||
|  | ||||
| for i in data: | ||||
|   data[i]["estimate_current"]=float(data[i]["estimate_current"])*1000 | ||||
|   data[i]["estimate"]=float(data[i][sys.argv[4]])*1000 | ||||
| try: | ||||
|   data["sha256"]["estimate_current"]/=1000000000 | ||||
|   data["sha256"]["estimate"]/=1000000000 | ||||
| except: | ||||
|   pass | ||||
| try: | ||||
|   data["equihash"]["estimate_current"]*=1000 | ||||
|   data["equihash"]["estimate"]*=1000 | ||||
| except: | ||||
|   pass | ||||
| for i in ["scrypt", "blakecoin", "blake2s", "decred", "x11", "quark", "qubit", "keccak"]: | ||||
|   try: | ||||
|     data[i]["estimate_current"]/=1000 | ||||
|     data[i]["estimate"]/=1000 | ||||
|   except: | ||||
|     pass | ||||
|  | ||||
| @@ -95,7 +95,7 @@ for i in data: | ||||
|     coins[i]["algo"]=i | ||||
|     coins[i]["mapped_algo"]=algo_map[i] | ||||
|     coins[i]["name"]=i | ||||
|     coins[i]["estimate"]=data[i]["estimate_current"]*float(coins[i]["speed"])-24.0*coins[i]["power"]*pwrcost/exchrate | ||||
|     coins[i]["estimate"]=data[i]["estimate"]*float(coins[i]["speed"])-24.0*coins[i]["power"]*pwrcost/exchrate | ||||
|  | ||||
| # sort by profitability | ||||
|  | ||||
| @@ -111,7 +111,7 @@ log.close() | ||||
|  | ||||
| miner=coins[sort[0][0]] | ||||
|  | ||||
| if (len(sys.argv)==4): | ||||
| if (len(sys.argv)==5): | ||||
|   # exit if maximum is below minimum | ||||
|   if (miner["estimate"]<min_profit): | ||||
|     algo_log=open("algo-log", "a") | ||||
| @@ -121,8 +121,8 @@ if (len(sys.argv)==4): | ||||
|       subprocess.call(["pkill", "-f", "^"+coins[algo].replace("+", "\\+")]) | ||||
|     sys.exit() | ||||
| else: # manual override | ||||
|   if (sys.argv[4]!="list"): | ||||
|     miner=coins[sys.argv[4]] | ||||
|   if (sys.argv[5]!="list"): | ||||
|     miner=coins[sys.argv[5]] | ||||
|   else: # list available algos | ||||
|     print("algos: ", end="") | ||||
|     for i in coins: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user