Bitcoin Forum

Bitcoin => Hardware => Topic started by: Sailing_Nut on June 11, 2014, 03:25:24 PM



Title: Overclocking - Hardware error rate vs. Hash rate tradeoff
Post by: Sailing_Nut on June 11, 2014, 03:25:24 PM
Hi all!

I have an AntMiner S1 that I have overclocked to 375MHz and I am getting some hardware errors (plus one ASIC is showing an error) but my hash rate is running about 10GH/s higher than when it was not overclocked. My hardware error rate is running around 0.25%. I had it overclocked to 400MHz and my error rate was running around 5.5%.

I'm just wondering if given my current error rate that I would be better off sacrificing the 10GH/s for a nearly zero error rate.

TIA!


Title: Re: Overclocking - Hardware error rate vs. Hash rate tradeoff
Post by: Biffa on June 11, 2014, 03:58:34 PM
Check your return from the pool, not what the miner says.

All that matters is the return from the pool vs the cost of the extra energy used.

If you make more than its costs then its worth while overclocking.


Title: Re: Overclocking - Hardware error rate vs. Hash rate tradeoff
Post by: Gator-hex on June 11, 2014, 05:21:14 PM
I calculate it as 2x the HW error rate to account for rejects too.


Title: Re: Overclocking - Hardware error rate vs. Hash rate tradeoff
Post by: Sailing_Nut on June 11, 2014, 05:27:48 PM
Check your return from the pool, not what the miner says.

All that matters is the return from the pool vs the cost of the extra energy used.

If you make more than its costs then its worth while overclocking.

The problem is that I have no baseline to check against.

Also, since I'm on Bitminter (PPLNS) it is hard to run for a while at one setting and then change to another to compare because of the varying CDF.


Title: Re: Overclocking - Hardware error rate vs. Hash rate tradeoff
Post by: BTC_Toronto on June 12, 2014, 11:13:14 AM
I had the same doubt, so I wrote a small Java program that calculates the "effective" GH/s for the S1 based on this formula based on the values reported by the S1:
Code:
EffGHs = (DiffA + DiffR) / (DiffA + DiffR + HWE) * GHs
Where:
  • EffGHs = Effective GH/s
  • DiffA = DiffA reported by the S1
  • DiffR = DiffR reported by the S1
  • HWE = HW reported by the S1
  • GHs = GH/S(avg)reported by the S1

I let the miner run for about a week with each setting and then calculate this value. So far by best value is 193.8396 GH/s for a frequency of 381.25 (5e05 freq value) and a timeout of 37.

BTC TO


Title: Re: Overclocking - Hardware error rate vs. Hash rate tradeoff
Post by: Sailing_Nut on June 12, 2014, 02:15:58 PM
I had the same doubt, so I wrote a small Java program that calculates the "effective" GH/s for the S1 based on this formula based on the values reported by the S1:
Code:
EffGHs = (DiffA + DiffR) / (DiffA + DiffR + HWE) * GHs
Where:
  • EffGHs = Effective GH/s
  • DiffA = DiffA reported by the S1
  • DiffR = DiffR reported by the S1
  • HWE = HW reported by the S1
  • GHs = GH/S(avg)reported by the S1

I let the miner run for about a week with each setting and then calculate this value. So far by best value is 193.8396 GH/s for a frequency of 381.25 (5e05 freq value) and a timeout of 37.

BTC TO


Thanks for the formula! I've got a spreadsheet going to calculate this. Next step will be writing a program to automatically pull this from the cgminer API on the miner.


Title: Re: Overclocking - Hardware error rate vs. Hash rate tradeoff
Post by: BTC_Toronto on June 13, 2014, 05:40:04 AM
Quick and dirty Java code if anyone interested.

Code:
package com.btctoronto.antminer.s1;

import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class FindS1sEffHashrate {
public static void main(String[] args) {
  try {
    WebDriver wdDriver = new HtmlUnitDriver();
    //Get login page
    wdDriver.get("http://192.168.1.102/"); //Put your S1's IP here.

    //Find the username and password input fields and enter your values
    WebElement weUsername = wdDriver.findElement(By.className("cbi-input-user"));
    weUsername.clear();
    weUsername.sendKeys("root");
    WebElement wePassword = wdDriver.findElement(By.className("cbi-input-password"));
    wePassword.clear();
    wePassword.sendKeys("YourPrettyComplicated(IHope)Password");
    wePassword.submit();

    //Go to Miner Status page and pull the required data
    WebElement weMinerStatus = wdDriver.findElement(By.linkText("Miner Status"));
    String sLink = weMinerStatus.getAttribute("href");
    wdDriver.get(sLink);
    double fGHs = Double.parseDouble(wdDriver.findElement(By.id("cbi-table-1-ghsav")).getText().replaceAll(",", ""));
    long fHWE = Long.parseLong(wdDriver.findElement(By.id("cbi-table-1-hw")).getText().replaceAll(",", ""));
    long fDiffA = Long.parseLong(wdDriver.findElement(By.id("cbi-table-1-diffaccepted")).getText().replaceAll(",", ""));
    long fDiffR = Long.parseLong(wdDriver.findElement(By.id("cbi-table-1-diffrejected")).getText().replaceAll(",", ""));
    double fEffGHs = 1.0 * (fDiffA + fDiffR) / (fDiffA + fDiffR + fHWE) * fGHs;

    //Display the data
    System.out.println("Miner has been running for: " + wdDriver.findElement(By.id("cbi-table-1-elapsed")).getText());
    System.out.println("Reported GH/s: " + fGHs);
    System.out.println("HW errors: " + fHWE);
    System.out.println("Accepted difficulty: " + fDiffA);
    System.out.println("Rejected difficulty: " + fDiffR);
    System.out.println("Effective hash rate: " + fEffGHs);
    } catch (NoSuchElementException e) {
      e.printStackTrace();
    }
  catch (Exception e) {
      // TODO: handle exception
    }
}
}

BTC TO