Minería de CPU: número óptimo de subprocesos

(Supongo que, en principio, esta pregunta se aplica igualmente a Bitcoin, pero dado lo poco rentable que parece ser la minería de CPU de Bitcoin, esta pregunta en realidad surgió con respecto a la minería de Yacoin).

Actualmente estoy usando la versión AVX del minero de Windows de 64 bits cuyo enlace se puede encontrar en la página de inicio de Yacoin . Al igual que con todas las bifurcaciones de minerd, puede especificar cuántas amenazas debe usar minerd para la minería. Parece que el número predeterminado que usa es el número de procesadores lógicos, que en mi caso resulta ser 8. Sin embargo, he intentado jugar con este valor y parece que jugar con el número de subprocesos puede aumentar mi tasa de hash (por supuesto, también puede disminuirla). Supongo que esto me sorprendió un poco, ya que asumí que el número de subprocesos predeterminado habría sido el más eficiente.

También está la variable de cuántos trabajadores tengo corriendo en el grupo (en mi caso, yac.coinmine.pl) y cuántos procesos de minerd estoy corriendo.

Esto significa que hay varias combinaciones de recuento de procesos/recuento de subprocesos con las que podría jugar para tratar de encontrar la combinación más eficiente, pero antes de pensar que pasaría el tiempo jugando con estas diversas posibilidades, sería más fácil simplemente preguntar alguien que tenga una mejor idea de cómo funciona esto realmente: ¿Hay alguna razón por la que sería beneficioso ejecutar 8 instancias de minerd con 1 subproceso cada una frente a 1 instancia de minerd con 8 subprocesos cada una? Tal vez, en principio, no debería haberlo, pero debido a que estoy minando en un grupo, ¿el hecho de que las instancias separadas requieran trabajadores separados hace la diferencia? ¿Cuál debería ser un conteo de subprocesos ideal y por qué debería ser realmente un conteo de subprocesos eficiente para usar? Por ejemplo, usar 16 subprocesos parece mejorar mi tasa de hash en comparación con solo usar 8, pero duplicar nuevamente a 32 subprocesos parece reducir nuevamente la tasa de hash. Por qué sería este el caso?

Como una pregunta separada pero relacionada, ¿por qué mi tasa de hash parece disminuir cuanto más tiempo corre el minero?

Respuestas (3)

Una instancia de minerd es todo lo que necesitará. La aplicación también se sincroniza con la piscina. Entonces, abrir más de 1 instancia de minerd solo hará que su red se use dos veces para la misma información. Además, el sistema operativo tiene algunos gastos generales para ejecutar la aplicación. ¡Abrir otra instancia significará más gastos generales y, por lo tanto, menos hashes!

Tienes una CPU con hyper-threading, entonces tienes 8 núcleos lógicos, esto no es lo mismo que tener 8 núcleos físicos. ¿Has intentado ejecutarlo con 4 subprocesos (solo por diversión)?


Además, imagina tener una pista de carreras con 4 carriles. Puedes conducir 8 o 16 autos en él. Pero aún tendrá que dejar que 4 autos conduzcan uno al lado del otro a la vez. Puedes lanzarle la cantidad de autos que quieras, pero alguien tendrá que sincronizar esos autos, por lo que eso solo significará que la pista de carreras se usa menos.

Idealmente, deberías tener 8 autos en una pista de carreras de 4 carriles. De esta manera, los autos que han salido de la pista tienen algo de tiempo para intercambiar sus tiempos de vuelta mientras los otros 4 autos usan la pista. Entonces pueden relevarse casi perfectamente, como una carrera de relevos.

Tener menos de 4 autos en esta pista significa que la pista no se usará todo el tiempo, ya que los corredores en los autos quieren intercambiar sus tiempos de vuelta entre ellos después de salir de la pista (los procesos quieren devolver un resultado al minero). hilo).

Tener más de 8 autos significa que siempre habrá autos esperando para ingresar a la pista, por lo que solo tendrás autos esperando mucho tiempo antes de que puedan competir en la pista.

Cuando usé Slackware y compilé mis núcleos, hubo una recomendación para establecer subprocesos 2xN - N = número de núcleos. Pero aquí http://www.databook.bz/?page_id=2319 encontré a un chico que no comparte esta opinión. Obviamente varía en las diferentes plataformas. Entonces, si sus observaciones muestran que 2xN funciona mejor en su máquina, esto suena razonable.

Tengo una computadora portátil I3 330M con 2 núcleos y 2 subprocesos por núcleo. Establecer el valor de subproceso de m-minerd en 2 subprocesos en lugar del valor predeterminado de 4 subprocesos no impidió de ninguna manera el rendimiento, mientras que ir con 4 subprocesos parecía ser un poco menos eficiente. Parece que Jonathan Gleason ha tenido una experiencia similar. Mi especulación, entonces, es que m-minerd o el proceso de minería en sí mismo no es propicio para el hiperprocesamiento (o el uso de más de un subproceso por núcleo). De todos modos, esa ha sido mi experiencia. Sí, es una publicación antigua, pero pensé en mencionarla.