El minero Ethereum ethminer
a veces produce hashrates variables como:
miner 02:16:07.510|ethminer Mining on PoWhash #ad8608a0… : 20971520 H/s = 4194304 hashes / 0.2 s
miner 02:16:07.711|ethminer Mining on PoWhash #ad8608a0… : 83468736 H/s = 16777216 hashes / 0.201 s
miner 02:16:07.913|ethminer Mining on PoWhash #ad8608a0… : 41734368 H/s = 8388608 hashes / 0.201 s
miner 02:16:08.114|ethminer Mining on PoWhash #ad8608a0… : 83468736 H/s = 16777216 hashes / 0.201 s
miner 02:16:08.315|ethminer Mining on PoWhash #ad8608a0… : 41734368 H/s = 8388608 hashes / 0.201 s
miner 02:16:08.517|ethminer Mining on PoWhash #ad8608a0… : 83468736 H/s = 16777216 hashes / 0.201 s
miner 02:16:08.718|ethminer Mining on PoWhash #ad8608a0… : 41734368 H/s = 8388608 hashes / 0.201 s
miner 02:16:08.920|ethminer Mining on PoWhash #ad8608a0… : 83468736 H/s = 16777216 hashes / 0.201 s
¿Cómo se calcula el hashrate promedio en este caso?
Esta situación ocurre comúnmente cuando sus GPU están overclockeadas, o los ethminer
parámetros --cl-local-work
y --cl-global-work
se cambian de la configuración predeterminada.
Actualizar
El usuario de Reddit athropal ha declarado en reddit.com/r/EtherMining :
El hashrate no es variable, solo las matemáticas de informes son inexactas debido al corto tiempo de revisión de la granja. Si observa qtminer, que utiliza un método más efectivo para obtener datos, tiene períodos de tiempo más largos para calcular el hashrate de 2 segundos frente a 0,2. El hashrate informado allí es mucho más estable.
Aquí hay un script de Perl que calculará su tasa de hash promedio y mostrará las líneas importantes en sus ethminer
archivos de registro:
ℹ 21:19:58.840|ethminer B-) Submitted and accepted.
✘ 20:23:53.048|ethminer FAILURE: GPU gave incorrect result!`
Este script funciona en Linux y Mac OS X, ya que el intérprete de Perl está disponible en estas plataformas de forma predeterminada. Para Windows, puede que tenga que probar Perl de perl.org .
Tenga en cuenta que esta tasa de hash se calcula cuando ethminer
se calculan sus hashes y no incluye el tiempo en que ethminer
se obtiene un nuevo paquete de trabajo geth
(o el grupo) o cuando se envían los resultados a geth
/pool.
Copie las siguientes líneas en $HOME/bin/calcHashrate
y configure el bit ejecutable para este archivo ejecutando el comando chmod 700 $HOME/bin/calcHashrate
.
calcHashrate
#!/usr/bin/perl -W
use Getopt::Long;
my $DEFAULTHASHLINES = 1000;
my $DEFAULTACCEPTLINES = 4;
my $DEFAULTFAILURELINES = 4;
my ($hashlines, $acceptlines, $failurelines, $removecolour, $help);
GetOptions(
"hashlines:i" => \$hashlines,
"acceptlines:i" => \$acceptlines,
"failurelines:i" => \$failurelines,
"removecolour" => \$removecolour,
"help" => \$help
);
die "Usage: $0 [options]\n\n" .
" where the options are:\n" .
" --hashlines=x Calculate average hashrate over the last x lines, default $DEFAULTHASHLINES\n" .
" --acceptlines=y Display the last y 'accept' lines, default $DEFAULTACCEPTLINES\n" .
" --failurelines=z Display the last z 'FAILURE' lines, default $DEFAULTFAILURELINES\n" .
" --removecolour Don't display colour in the accept and failure lines\n" .
" --help Display this help\n\n" .
"Enjoy. BokkyPooBah 2016.\n\n" .
"Stopped"
if defined $help;
$hashlines = $DEFAULTHASHLINES
unless defined $hashlines;
$acceptlines = $DEFAULTACCEPTLINES
unless defined $acceptlines;
$failurelines = $DEFAULTFAILURELINES
unless defined $failurelines;
my (@hashlinearray, @acceptlinearray, @failurelinearray) = ((), (), ());
while (<>) {
if (/(\d\d:\d\d:\d\d.\d\d\d).*:\s(\d+).*=\s(\d+).*\/\s(\d+\.\d+)/) {
push @hashlinearray, $_;
shift @hashlinearray
if ($#hashlinearray >= $hashlines);
} elsif (/accept/) {
push @acceptlinearray, $_;
shift @acceptlinearray
if ($#acceptlinearray >= $acceptlines);
} elsif (/FAILURE/) {
push @failurelinearray, $_;
shift @failurelinearray
if ($#failurelinearray >= $failurelines);
}
}
my ($totalhashes, $totalperiod) = (0, 0);
my ($lasttime) = ();
foreach (@hashlinearray) {
if (/(\d\d:\d\d:\d\d.\d\d\d).*:\s(\d+).*=\s(\d+).*\/\s(\d+\.\d+)/) {
my ($time, $rate, $hashes, $period) = $_ =~ /(\d\d:\d\d:\d\d.\d\d\d).*:\s(\d+).*=\s(\d+).*\/\s(\d+\.\d+)/;
$totalhashes += $hashes;
$totalperiod += $period;
$lasttime = $time;
}
}
foreach (@acceptlinearray) {
s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g
if defined $removecolour;
print;
}
foreach (@failurelinearray) {
s/\x1b\[[0-9;]*m//g
if defined $removecolour;
print;
}
if ($totalperiod > 0) {
my $averagehashrate = $totalhashes / $totalperiod / 1000 / 1000;
printf "%s %.3f MH/s\n", $lasttime, $averagehashrate;
} else {
print "No statistics\n";
}
Ejemplo de uso
user@Kumquat:~$ calcHashrate --help
Usage: calcHashrate [options]
where the options are:
--hashlines=x Calculate average hashrate over the last x lines, default 1000
--acceptlines=y Display the last y 'accept' lines, default 4
--failurelines=z Display the last z 'FAILURE' lines, default 4
--removecolour Don't display colour in the accept and failure lines
--help Display this help
Enjoy. BokkyPooBah 2016.
Stopped at ./calcHashrate line 18.
Ejecute el script con la configuración predeterminada, calculando el hashrate promedio en las últimas 1000 líneas, muestre hasta 4 accept
líneas y muestre hasta 4 FAILURE
líneas. La línea en la parte inferior muestra el tiempo de la última tasa de hash y la tasa de hash promedio en megahashes por segundo.
user@Kumquat:~$ calcHashrate logs/ethminer.log --removecolour
ℹ 21:24:12.221|ethminer B-) Submitted and accepted.
ℹ 21:24:14.671|ethminer B-) Submitted and accepted.
ℹ 21:24:17.519|ethminer B-) Submitted and accepted.
ℹ 21:24:30.835|ethminer B-) Submitted and accepted.
✘ 18:11:00.367|ethminer FAILURE: GPU gave incorrect result!
✘ 18:41:12.725|ethminer FAILURE: GPU gave incorrect result!
✘ 20:03:32.135|ethminer FAILURE: GPU gave incorrect result!
✘ 20:23:53.048|ethminer FAILURE: GPU gave incorrect result!
21:25:04.239 62.619 MH/s
Ejecute el script para mostrar solo el hashrate en las últimas 1000 líneas de hashrate.
user@Kumquat:~$ calcHashrate ethminer.log --acceptlines=0 --failurelines=0
21:25:04.239 62.619 MH/s
B. Karité
--farm-recheck
valor de 1000-4000 ( si usa un estrato ). Esto debería suavizar la tasa mostrada . Pero... La tasa que muestra e informa su minero no significa nada con respecto a los ingresos. Se trata de soluciones. Más hashrate ayuda a más soluciones, por supuesto, pero las soluciones informadas por un grupo es lo que debe observar. (Significado: las soluciones encontradas se utilizan para determinar el hashrate en un grupo determinado, normalmente). Si se cultiva directamente/solo/getwork/http, la revisión de la granja debe ser pequeña (100-500).