Перейти к содержанию
  • записи
    4
  • комментариев
    428
  • просмотров
    65 640

Создание собственной ноды p2pool Bitcoin с объединенным майнингом (Super Node).


igorwhite

26 781 просмотр

Создание собственной (Super Node) ноды p2pool Bitcoin с объединенным майнингом. Merged Mining.

 

Требование по железу ремендую:

CPU - 4 Core

ОЗУ - 8 GB

HDD - SSD (это очень важно)

 

И так приступим.... Пишу очень много по памяти так что если где-то будут ошибки пишите поправим.

Предупреждаю впереди очень многа букаф!!! :blink:

И еще я не писатель, а больше читатель.

 

Делать будем все в Linux. Я рекомендую Linux на основе Ubuntu или Debian. Мои сервера работают на консольной версии Ubuntu.

Но для наглядности и удобства можете начать с версии Lubuntu 14.04.01 Мне кажется самой стабильной на данный момент.

Вся инструкция написана для Ubuntu Server 14.04.02 Нам нужен быстрый и легковесный сервер.

 

Кратко о Merged это дополнительный майнинг параллельных coins не влияющий на основной процесс майнинга. Добыча идет как бы в соло.

.........

Так Linux поставили.

 

1. Сделаем обновление системы:

sudo apt-get updatesudo apt-get upgradesudo rebootsudo apt-get dist-upgradesudo reboot

2. Установим зависимости и дополнительные программы "mc" и "htop":

mc (Midnight Commander) для удобства навигации в консольной версии Linux.

htop (top) расширенная версия утилиты "top" для мониторинга и тонкой настройки системы.

sudo apt-get install build-essential libtool autotools-dev autoconf automake libssl-dev libboost1.55-all-dev libminiupnpc-dev libqt5gui5 libqt5core5a libqt5dbus5 libglib2.0-dev libglibmm-2.4-dev libdb5.1++-dev libcurl4-openssl-dev qttools5-dev qttools5-dev-tools libprotobuf-dev libqrencode-dev pkg-config libprotoc8 protobuf-compiler git screen htop mc software-properties-common python-software-properties python-rrdtool python-pygame python-scipy python-twisted python-twisted-web python-imaging python-dev

3. Установим демон Bitcoin(BTC):

sudo add-apt-repository ppa:bitcoin/bitcoin sudo apt-get update sudo apt-get install bitcoind ​

4. Приступим к компиляции наших Merged Коинов:

 

4.1 Namecoin(NMC):

git clone https://github.com/namecoin/namecoin.git cd namecoin/srcmake# Скопируем namecoind в папку /usr/local/bin  # У меня все демоны там, можно - любое sudo cp namecoind /usr/local/bin/namecoind

Внимание если "git" будет ругаться на отсутствие доступа к папке ".coinfig" то смените владельца этой папки командой:

sudo chown user:group .config # где "user" ваш логин, а "group" ваша группа

 

4.2 Unobtanium(UNO) (надо делать четко по инструкции иначе не c компилируется наш демон Unobtanium):

git clone https://github.com/unobtanium-official/Unobtanium.gitcd Unobtaniumchmod +x autogen.shchmod +x share/genbuild.shchmod +x src/leveldb/build_detect_platform./autogen.sh./configuremake# Скопируем unobtanium-cli, unobtaniumd в папку /usr/local/bincd Unobtanium/srcsudo cp unobtanium-cli /usr/local/bin/unobtanium-clisudo cp unobtaniumd /usr/local/bin/unobtaniumd

К стати после "make" можно добавить ключ -j2 или -j4 где цифра "2 или 4" количество ядер процессора, тогда демоны будут быстрее компилироваться.

 

4.3 IXCoind(IXC):

git clone https://github.com/FrictionlessCoin/iXcoin.gitcd  iXcoin/srcmake -f makefile.unix ixcoind# Скопируем ixcoind в папку /usr/local/binsudo cp ixcoind /usr/local/bin/ixcoind

4.4 Fusioncoin(FSC):

git clone https://github.com/fusioncoin/fusioncoin.gitcd fusioncoin/srcmake -f makefile.unix fusioncoind# Скопируем fusioncoind в папку /usr/local/bin/sudo cp fusioncoind /usr/local/bin/fusioncoind

4.5 I0Coin(I0C):

git clone https://github.com/rsnel/i0coin.gitcd  i0coin/srcmake -f makefile.unix i0coind# Скопируем i0coind в папку /usr/local/bin/sudo cp i0coind /usr/local/bin/i0coind

4.6 Huntercoin(HUC):

git clone https://github.com/chronokings/huntercoin.gitcd huntercoin/srcmake# Скопируем huntercoind в папку /usr/local/bin/sudo cp huntercoind /usr/local/bin/huntercoind

4.7 Devcoin(DVC):

git clone https://github.com/coinzen/devcoin.gitcd devcoin/srcmake -f makefile.unix USE_PNP=1 devcoind# Скопируем devcoind в папку /usr/local/bin/sudo cp devcoind /usr/local/bin/devcoind

Так с компиляцией мы покончили.

 

5. Приступаем к созданию конфигов наших демонов:

Создаем папки:

mkdir ~/.bitcoinmkdir ~/.namecoinmkdir ~/.unobtaniummkdir ~/.ixcoinmkdir ~/.fusioncoinmkdir ~/.i0coinmkdir ~/.huntercoinmkdir ~/.devcoin

5.1 Bitcoin(BTC):

# Создаем файл bitcoin.conf nano ~/.bitcoin/bitcoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=8332port=8333rpcallowip=127.0.0.1disablewallet=1mintxfee=0.00001minrelaytxfee=0.00001# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x") 

5.2 Namecoin(NMC):

# Создаем файл namecoin.confnano ~/.namecoin/namecoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=8336port=8334rpcallowip=127.0.0.1# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x")

5.3 Unobtanium(UNO):

# Создаем файл unobtanium.confnano ~/.unobtanium/unobtanium.conf# Копируем туда:server=1listen=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=65535port=65534rpcallow=127.0.0.1 addnode=104.131.25.221addnode=108.61.10.90addnode=137.135.57.119addnode=144.76.239.66addnode=144.76.64.123addnode=158.255.89.244addnode=162.216.4.199addnode=162.243.47.14addnode=167.114.156.87addnode=178.33.209.208addnode=178.62.145.250addnode=185.50.213.123addnode=188.138.33.239addnode=188.138.94.6addnode=192.95.29.153addnode=192.99.245.21addnode=195.117.180.229addnode=198.15.127.242addnode=199.192.77.162addnode=199.192.78.194addnode=203.206.142.19addnode=63.247.147.166addnode=64.156.193.100addnode=68.232.186.171addnode=69.197.61.58addnode=74.120.220.54addnode=74.131.163.95addnode=75.19.27.26addnode=79.251.172.84addnode=91.235.254.37addnode=92.3.42.66addnode=93.197.227.99addnode=94.23.32.109# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x")

5.4 IXCoin(IXC):

# Создаем файл ixcoin.confnano ~/.ixcoin/ixcoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=8338port=8337rpcallowip=127.0.0.1addnode=24.34.40.175addnode=142.4.208.71addnode=24.42.148.53addnode=184.78.215.89addnode=62.75.167.48addnode=83.163.120.176addnode=123.203.84.34addnode=86.93.208.193# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x")

5.5 Fusioncoin(FSC):

# Создаем файл fusioncoin.confnano ~/.fusioncoin/fusioncoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=18491port=8492rpcallowip=127.0.0.1miningalgo=sha256addnode=54.193.11.95addnode=54.255.130.210addnode=198.23.242.92addnode=121.199.12.227addnode=54.185.94.219# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x")

5.6 I0Coin(I0C):

# Создаем файл i0coin.confnano ~/.i0coin/i0coin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcport=7332port=7333rpcallowip=127.0.0.1addnode=85.17.248.211:7333addnone=198.154.60.61:7333addnode=188.165.216.59:7333# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x")

5.7 Huntercoin(HUC):

# Создаем файл huntercoin.confgedit ~/.huntercoin/huntercoin.conf# Копируем туда:server=1daemon=1rpcuser=ПРИДУМАЙТЕ_СЛОЖНОЕ_ИМЯrpcpassword=ПРИДУМАЙТЕ_СЛОЖНЫЙ_ПАРОЛЬrpcallowip=127.0.0.1rpcport=8399port=8398algo=sha256daddnode=192.241.222.65addnode=192.81.209.210addnode=178.32.31.41addnode=162.243.175.205# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x")

5.8 Devcoin(DVC):

# Создаем файл devcoin.confgedit ~/.devcoin/devcoin.conf# Копируем туда:server=1daemon=1rpcuser=userWzorDVCrpcpassword=FCvhzdhrwq1MiPZX88YhHyKjDVsJzXFl6uirpcport=6333port=6334rpcallowip=127.0.0.1# Сохраняем конфиг ("Ctrl+o" "Enter" Ctrl+x")

# Не забываем сохранять внесенную информацию!!!

 

6. Так файлы конфигурации создали. Сделаем базовые настройки безопасности:

Так как мы тут все параноики нам нужно защитить наши честно добытые коины.Применим chmod 600 или 400 (все зависит от состояния паранойи) к нашим файлам конфигурацииПример:chmod 400 ~/.bitcoin/bitcoin.conf На основе примера повторить с остальными конфигами.

6.1 Farewell

sudo ufw enablesudo ufw allow 8333/tcp  # bitcoin peer to peersudo ufw allow 8334/tcp  # namecoin peer to peersudo ufw allow 65534/tcp  # unobtanium peer to peersudo ufw allow 8337/tcp  # ixcoin peer to peersudo ufw allow 6334/tcp  # devcoin peer to peersudo ufw allow 7333/tcp  # i0coin peer to peersudo ufw allow 8492/tcp  # fusioncoin peer to peersudo ufw allow 8398/tcp  # huntercoin peer to peersudo ufw allow 9333/tcp  # P2pool peer to peersudo ufw allow 9332/tcp  # P2Pool connections and Web interface# Не забываем открыть эти же порты на роутере если таковой есть. RPC порты ни где не открываем!!! # Если работаем по удаленке то открываем порт sshsudo ufw allow 22/tcp

7. Приступаем к запуску демонов. Первый запуск делаем в ручную потом добавим в автозагрузку.

# Запускаем демоны в терминале по очереди:bitcoindnamecoindunobtaniumd # Внимание первый запуск Unobtanium делаем с ключом -reindexixcoindfusioncoindi0coindhuntercoinddevcoind#Демоны начинают синхронизироваться с сетью.

# После запуска демона вы должны увидеть:

blogentry-14647-0-21557900-1433867976_thumb.jpg

# Если увидите типа зависания:

blogentry-14647-0-29294800-1433867984_thumb.jpg

# Не обращайте внимание просто закройте терминал и откройте его заново и продолжайте дальше. Демон все равно запустился.

#Демоны начинают синхронизироваться с сетью.

Ждем минут 5-10 и проверяем наши демоны:

bitcoin-cli getinfonamecoind getinfounobtanium-cli getinfoixcoin-cli getinfofusioncoind getinfoi0coind getinfohuntercoind getinfodevcoind getinfo

# Если все ОК то должны ​увидеть:

blogentry-14647-0-09137000-1433868877_thumb.jpg

 

Демоны синхронизируется долго, несколько дней поэтому рекомендую поискать торренты с цепочкой блоков. Например Huntercoin находится здесь. И не забываем что эти файлы кроссплатформенные. Т.Е. если у вас уже есть кошельки можете перекинуть свои файлы на сервер только естественно без "wallet.dat и конфигов"

 

8. Создаем скрипты автостарта и остановки наших демонов:

Основа скриптов это файл "skeleton" находящийся по пути /etc/init.d

cd /etc/init.d/sudo cp skeleton bitcoindsudo nano bitcoind# Далее вносим следующие изменения:#! /bin/sh### BEGIN INIT INFO# Provides: bitcoind# Required-Start: $network $local_fs# Required-Stop: $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Auto start-stop bitcoind# Description: Auto start-stop bitcoind via booting system# placed in /etc/init.d.### END INIT INFO# Author: wzor <poolcrypto.org@gmail.com>## Please remove the "Author" lines above and replace them# with your own name if you copy and modify this script.# Do NOT "set -e"# PATH should only include /usr/* if it runs after the mountnfs.sh scriptPATH=/sbin:/usr/sbin:/bin:/usr/binDESC="Bitcoin Daemon"NAME=/usr/local/bin/bitcoindDAEMON=$NAMEDAEMON_ARGS="-daemon"CLI=/usr/local/bin/bitcoin-cliDAEMON_LOADER="/usr/bin/taskset 0x4 "$DAEMONPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAMECHUID=user:group# Exit if the package is not installed[ -x "$DAEMON" ] || exit 0# Read configuration variable file if it is present[ -r /etc/default/$NAME ] && . /etc/default/$NAME# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB log_* functions.# Depend on lsb-base (>= 3.2-14) to ensure that this file is present# and status_of_proc is working.. /lib/lsb/init-functions## Function that starts the daemon/service#do_start(){# Return# 0 if daemon has been started# 1 if daemon was already running# 2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_LOADER --test > /dev/null \|| return 1start-stop-daemon --start --quiet --chuid $CHUID --pidfile $PIDFILE --exec $DAEMON_LOADER -- \$DAEMON_ARGS \|| return 2# Add code here, if necessary, that waits for the process to be ready# to handle requests from services started subsequently which depend# on this one. As a last resort, sleep for some time.}## Function that stops the daemon/service#stop_daemon_by_cli(){#[ ! -e "$PIDFILE" ] && echo "$DESC not running!" && return 0start-stop-daemon --start --chuid $CHUID --exec $CLI -- -rpcwait stopreturn 0}do_stop(){# Return# 0 if daemon has been stopped# 1 if daemon was already stopped# 2 if daemon could not be stopped# other if a failure occurredstop_daemon_by_clistart-stop-daemon --stop --quiet --chuid $CHUID --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $NAMERETVAL="$?"[ "$RETVAL" = 2 ] && return 2# Wait for children to finish too if this is a daemon that forks# and if the daemon is only ever run from this initscript.# If the above conditions are not satisfied then add some other code# that waits for the process to drop all resources that could be# needed by services started subsequently. A last resort is to# sleep for some time.start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON[ "$?" = 2 ] && return 2# Many daemons don't delete their pidfiles when they exit.rm -f $PIDFILEreturn "$RETVAL"}## Function that sends a SIGHUP to the daemon/service#do_reload() {## If the daemon can reload its configuration without# restarting (for example, when it is sent a SIGHUP),# then implement that here.#start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAMEreturn 0}case "$1" instart)[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"do_startcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;stop)[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"do_stopcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;status)status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?;;#reload|force-reload)## If do_reload() is not implemented then leave this commented out# and leave 'force-reload' as an alias for 'restart'.##log_daemon_msg "Reloading $DESC" "$NAME"#do_reload#log_end_msg $?#;;restart|force-reload)## If the "reload" option is implemented then remove the# 'force-reload' alias#log_daemon_msg "Restarting $DESC" "$NAME"do_stopcase "$?" in0|1)do_startcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_end_msg 1;;esac;;*)#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2exit 3;;esac:

# Пояснения для скрипта или что же там такое:

 

1.Provides - название скрипта

2. Short-Description/Description - описание того что делает данный файл, а то вдруг "забудем" или кто то другой будет разбираться.

3. DESC="Bitcoin Daemon" - описание сервиса

4. NAME=/usr/local/bin/bitcoind - имя и путь исполняемого файла

5. DAEMON=$NAME - какой демон должен запуститься

6. DAEMON_ARGS="-daemon" - задаём аргументы запуска демона, он должен стартовать режиме демона (правда можно и без этого аргумента. это я так для большей уверенности)

7. CLI=/usr/local/bin/bitcoin-cli - для остановки демона. Мы же знаем что бы остановить демон Bitcoin надо использовать "bitcoin-cli stop"

8. DAEMON_LOADER="/usr/bin/taskset 0x4 "$DAEMON - На этом пункте остановимся и распишем по подробней. Надо распределить нагрузку на сервер т.е. на его процессор и для этого нам поможет утилита "taskset". У нас есть две приоритетные задачи это ДЕМОН BITCOIN и СКРИПТ P2POOL-а. Аргумент "0x4" утилиты "taskset" запускает наш демон Bitcoin на третьем ядре процессора. Настоятельно рекомендую распределять между ядрами процессы самих демонов наших монет и скрипта p2pool-a и для повышения скорости работы пула-ноды. Как мы представляем себе четырехъядерный процессор - "1,2,3,4" это и есть ядра процессора, но это не так для системы ядро под номером "1" это "0" а в шестнадцатеричном формате это "0x00000001" или сокращенно "0x1". Идея такая у нас семь merged монет им отдадим на растерзание первые два ядра используя аргумент "0x3", для bitcoind "0x4" что заставит его работать исключительно на третьем ядре и скрипт p2pool-а "0x8" что соответствует четвертому ядру процессора.

В случае когда у вас только одноядерный процессор, то в данной строке нужно удалить "/usr/bin/taskset 0x4 " оставив только $DAEMON.

Если у вас процессор больше чем четырехъядерный то вам придется поискать в гугле значения ваших ядер.

9. CHUID=user:group - задаём пользователя и группу, от имени которых будет запускаться исполняемый скрипт.

 

9. Запуск скрипта bitcoind:

# Делаем скрипт исполняемым (находимся в папке /etc/init.d)sudo chmod +x bitcoind# Выходим из папки /etc/init.d и Запускаем скрипт:/etc/init.d/bitcoind# Должна появиться строка "{start|stop|restart|reload|force-reload}" нас интересует "start" и "stop"/etc/init.d/bitcoind start# Проверяем запустился демон Bitcoin утилитой "htop"sudo htop# Если видим как на скрине то все ОК если нет ищем ошибки!!!# Остановка нашего демона /etc/init.d/bitcoind stop # Если старт-стоп происходит без ошибок добавляем скрипт а автозагрузку sudo update-rc.d bitcoind defaults # С этого момента скрипты будут стартовать и останавливаться сами (соответственно демоны коинов тоже) при включении или отключении сервера!!!# Если нужно удалить из автостарта то выполняем следующую команду sudo update-rc.d -f bitcoind remove

Скрин "htop"

blogentry-14647-0-98919600-1434634236_thumb.jpg

 

10. Так на основе скрипта Bitcoin делаем скрипт для запуска Unobtanim. Т.К. их демоны отличаются от других тем что используют отдельные утилиты мониторинга и контроля, это соответственно "bitcoin-cli' и "unobtanium-cli".

cd /etc/init.dsudo cp bitcoind unobtaniumd# Изменяем все пункты которые связаны с bitcoin и на unobtanium и проводим те же процедуры что делали со скриптом bitcoind (пункт 9). 

11. Создаем скрипт запуска Namecoin (NMC) на основе его делаем остальные:

cd /etc/init.dsudo cd skeleton namecoindsudo nano namecoind# Далее вносим следующие изменения:#! /bin/sh### BEGIN INIT INFO# Provides: namecoind# Required-Start: $network $local_fs# Required-Stop: $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Auto start-stop namecoind# Description: Auto start-stop namecoind via booting system# placed in /etc/init.d.### END INIT INFO# Author: wzor <poolcrypto.org@gmail.com>## Please remove the "Author" lines above and replace them# with your own name if you copy and modify this script.# Do NOT "set -e"# PATH should only include /usr/* if it runs after the mountnfs.sh scriptPATH=/sbin:/usr/sbin:/bin:/usr/binDESC="Namecoin Daemon"NAME=/usr/local/bin/namecoindDAEMON=$NAMEDAEMON_ARGS="-daemon"DAEMON_LOADER="/usr/bin/taskset 0x3 "$DAEMONPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAMECHUID=user:group# Exit if the package is not installed[ -x "$DAEMON" ] || exit 0# Read configuration variable file if it is present[ -r /etc/default/$NAME ] && . /etc/default/$NAME# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB log_* functions.# Depend on lsb-base (>= 3.2-14) to ensure that this file is present# and status_of_proc is working.. /lib/lsb/init-functions## Function that starts the daemon/service#do_start(){# Return# 0 if daemon has been started# 1 if daemon was already running# 2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_LOADER --test > /dev/null \|| return 1start-stop-daemon --start --quiet --chuid $CHUID --pidfile $PIDFILE --exec $DAEMON_LOADER -- \$DAEMON_ARGS \|| return 2# Add code here, if necessary, that waits for the process to be ready# to handle requests from services started subsequently which depend# on this one. As a last resort, sleep for some time.}## Function that stops the daemon/service#do_stop(){# Return# 0 if daemon has been stopped# 1 if daemon was already stopped# 2 if daemon could not be stopped# other if a failure occurredstart-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMONRETVAL="$?"[ "$RETVAL" = 2 ] && return 2# Wait for children to finish too if this is a daemon that forks# and if the daemon is only ever run from this initscript.# If the above conditions are not satisfied then add some other code# that waits for the process to drop all resources that could be# needed by services started subsequently. A last resort is to# sleep for some time.start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON[ "$?" = 2 ] && return 2# Many daemons don't delete their pidfiles when they exit.rm -f $PIDFILEreturn "$RETVAL"}## Function that sends a SIGHUP to the daemon/service#do_reload() {## If the daemon can reload its configuration without# restarting (for example, when it is sent a SIGHUP),# then implement that here.#start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAMEreturn 0}case "$1" instart)[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"do_startcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;stop)[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"do_stopcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;status)status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?;;#reload|force-reload)## If do_reload() is not implemented then leave this commented out# and leave 'force-reload' as an alias for 'restart'.##log_daemon_msg "Reloading $DESC" "$NAME"#do_reload#log_end_msg $?#;;restart|force-reload)## If the "reload" option is implemented then remove the# 'force-reload' alias#log_daemon_msg "Restarting $DESC" "$NAME"do_stopcase "$?" in0|1)do_startcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_end_msg 1;;esac;;*)#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2exit 3;;esac:

11.1 Создаем остальные скрипты и не забываем все повторять как в пункте 9.

cd /etc/init.dsudo cp namecoind fusioncoindsudo cp namecoind i0coindsudo cp namecoind ixcoindsudo cp namecoind devcoindsudo cp namecoind huntercoind# Все делаем как в пунктах 9-10

12. Наконец-то переходим к p2pool-у

# Копируем p2poolgit clone https://github.com/p2pool/p2pool.git# На гитхабе есть много версий p2pool например можете скачать адаптив. Там больше выводится статистики.git clone https://github.com/amarian12/p2pool-adaptive.git# У Фореста очень простая по внешнему виду статистика поэтому поменяйте ее на более читаемую. Например:https://github.com/blixnood/P2PoolExtendedFrontEndhttps://github.com/johndoe75/p2pool-node-status# просто  скачайте архив и поменяйте все в папке "web-static"

12.1 Скрипт запуска p2pool через костыль :)

Скрипт создавался также для init.d но вот есть косяк. Во первых скрипт упорно не хочет ждать остальных демонов и запускается раньше и это не смотря на то что в нем прописан аргумент "$all". Второй это то что "python" (скрипт p2pool написан на нем) должен стартовать через утилиту "screen" а думать куда ее туда воткнуть у меня больше нет сил. И если честно я че-то утомился от этих скриптов. Поэтому я решил запускать этот скрипт другим скриптом.

# Скрипт основной. Создаем папку например "scripts'# Ниже разберем что там и как.mkdir ~/scriptscd scriptsnano run-p2pool# Далее вносим следующие изменения:#! /bin/sh### BEGIN INIT INFO# Provides: p2pool start# Required-Start: $all# Required-Stop: $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Auto init p2pool start# Description: Auto init p2pool start via booting system# placed in /etc/init.d.### END INIT INFO# Author: wzor <poolcrypto.org@gmail.com>## Please remove the "Author" lines above and replace them# with your own name if you copy and modify this script.# Do NOT "set -e"# PATH should only include /usr/* if it runs after the mountnfs.sh scriptPATH=/sbin:/usr/sbin:/bin:/usr/binDESC="P2Pool Start"NAME=pythonDAEMON=/usr/bin/$NAMEDAEMON_ARGS="/home/user/p2pool/run_p2pool.py --net bitcoin --give-author 0 rpcuser rpcpass -a your_wallet_btc --merged http://user:pass@127.0.0.1:8336/ --merged http://user:pass@127.0.0.1:65535/ --merged http://user:pass@127.0.0.1:18491/ --merged http://user:pass@127.0.0.1:8338/ --merged http://user:pass@127.0.0.1:7332/ --merged http://user:pass@127.0.0.1:8399/ --merged http://user:pass@127.0.0.1:6333/ --max-conns 100 --outgoing-conns 10 --fee 0"DAEMON_LOADER="/usr/bin/taskset 0x8 "$DAEMONPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/home/user/script/$NAMECHUID=user:group# Exit if the package is not installed[ -x "$DAEMON" ] || exit 0# Read configuration variable file if it is present[ -r /etc/default/$NAME ] && . /etc/default/$NAME# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB log_* functions.# Depend on lsb-base (>= 3.2-14) to ensure that this file is present# and status_of_proc is working.. /lib/lsb/init-functions## Function that starts the daemon/service#do_start(){# Return# 0 if daemon has been started# 1 if daemon was already running# 2 if daemon could not be startedstart-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON_LOADER --test > /dev/null \|| return 1start-stop-daemon --start --quiet --chuid $CHUID --pidfile $PIDFILE --exec $DAEMON_LOADER -- \$DAEMON_ARGS \|| return 2# Add code here, if necessary, that waits for the process to be ready# to handle requests from services started subsequently which depend# on this one. As a last resort, sleep for some time.}## Function that stops the daemon/service#do_stop(){# Return# 0 if daemon has been stopped# 1 if daemon was already stopped# 2 if daemon could not be stopped# other if a failure occurredstart-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMONRETVAL="$?"[ "$RETVAL" = 2 ] && return 2# Wait for children to finish too if this is a daemon that forks# and if the daemon is only ever run from this initscript.# If the above conditions are not satisfied then add some other code# that waits for the process to drop all resources that could be# needed by services started subsequently. A last resort is to# sleep for some time.start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON[ "$?" = 2 ] && return 2# Many daemons don't delete their pidfiles when they exit.rm -f $PIDFILEreturn "$RETVAL"}## Function that sends a SIGHUP to the daemon/service#do_reload() {## If the daemon can reload its configuration without# restarting (for example, when it is sent a SIGHUP),# then implement that here.#start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAMEreturn 0}case "$1" instart)[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"do_startcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;stop)[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"do_stopcase "$?" in0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;esac;;status)status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?;;#reload|force-reload)## If do_reload() is not implemented then leave this commented out# and leave 'force-reload' as an alias for 'restart'.##log_daemon_msg "Reloading $DESC" "$NAME"#do_reload#log_end_msg $?#;;restart|force-reload)## If the "reload" option is implemented then remove the# 'force-reload' alias#log_daemon_msg "Restarting $DESC" "$NAME"do_stopcase "$?" in0|1)do_startcase "$?" in0) log_end_msg 0 ;;1) log_end_msg 1 ;; # Old process is still running*) log_end_msg 1 ;; # Failed to startesac;;*)# Failed to stoplog_end_msg 1;;esac;;*)#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2exit 3;;esac:

# Разберем что там и как:

 

Основные пункты уже понятны они встречались выше.

DAEMON_ARGS="/home/user/p2pool/run_p2pool.py ------------ это с какими параметрами должен запуститься скрипт p2pool. В этом пункте:

--net bitcoin ---------------------------------------------------------------- пул работает с сетью BItcoin.

--give-author 0 ------------------------------------------------------------ донат создателю p2pool (на ваше усмотрение)

rpcuser rpcpass -----------------------------------------------------------логин и пароль из вашего конфига Bitcoin

-a your_wallet_btc ------------------------------------------------------- ваш внешний кошель куда будут падать Bitcoin если предусмотрена комиссия пула.

--merged http://user:pass@127.0.0.1:8336/ ------------------------merged - для того чтобы скрипт p2pool-а понял что у нас майнинг с параллельной добычей.

user:pass ------------------------------------------------------------------ логин и пароль из конфигов наших merged coins.

--max-conns 100 --outgoing-conns 10-------------------------------наше количество соединений ноды с сетью. Это с какой скоростью мы буем давать знать о найденных шарах-блоках. (Этот пункт обсудим еще чуть позже)

--fee 0-----------------------------------------------------------------------Комиссия ноды.

 

# С этим скриптом проделываем то же самое что и в п. 9. Кроме добавления в update-rc.d

 

12.2 Костыль (скрипт запускающий скрипт) :D

# Этот скрипит дает возможность запустить основной скрипт через утилиту "screen" с задержкой в 180 секунд (можете поставить любое на ваше усмотрение, но помните что наши коины по разному синхронизируются с сетью) cd /etc/init.dsudo cp skeleton start-p2pool# Приводим к виду:#! /bin/sh### BEGIN INIT INFO# Provides: start-p2pool# Required-Start: $all# Required-Stop: $local_fs $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: start-p2pool# Description: This runs a script "run-p2pool" in screen.### END INIT INFOcase "$1" instart)echo "Starting P2Pool"sleep 180screen -dmS p2pool /home/user/scripts/run-p2pool start;;stop)echo "Stopping P2Pool"/home/user/scripts/run-p2pool stop;;*)N=/etc/init.d/$NAMEecho "Usage: $N {start|stop}" >&2exit 1;;esacexit 0# Для него так же повторяем пункт 9.

# и так подводим потихоньку итоги.

! Мы собрали демоны наших коинов

! Создали скрипты автостарта демонов с распределением их по ядрам процессора.

Теперь будем делать оптимизацию ноды.

Для ноды очень важен интернет не мегабиты, а getwork latency (не путать с пингом).

Что это такое кратко можно понять из текста ниже (текст не мой)

Плохо (Latency):

  • Сервер: «Так, компьютер, отправил тебе пакет с данными. Получил?»
  • Компьютер: «…»
  • Сервер: «Ну, давай, отвечай, мне целый день тебя ждать?»
  • Компьютер: «…»
  • Сервер: «Ладно, проехали, вот тебе еще один пакет. Получил?»
  • Компьютер: «Ага, получил, и предыдущий пакет тоже, спасибо».
  • Сервер: «А чего же сразу не ответил?»
  • Компьютер: «Вот так я настроен по умолчанию, извините».

Хорошо (Latency):

  • Сервер: «Так, компьютер, отправил тебе пакет с данными. Получил?»
  • Компьютер: «Ага, шли следующий!»
  • Сервер: «Ух, быстро ты! Лови следующий. Получил?»
  • Компьютер: «Да, давай еще!»
  • Сервер: «Ого! Быстрый ты. Лови!»
  • И так далее.

# Только это не относиться к майнерам, а от ноды к ноде.

 

И так делаем дополнительные изменения в конфиге bitcoin.

Если с инетом все ОК. Можно добавить:

blockmaxsize=1000000 По умолчанию 750000. Это увеличит объем проводимых транзакций через наш демон bitcoin. И должен соответственно увеличить наш доход. Если инет не очень то можно поставить ниже чем "по умолчанию" - 250000.

Рекомендую так же уменьшить количество соединений демона bitcoin с сетью. По умолчанию 125.

maxconnections=25 Можно поставить 25-45. Это ограничит скачивание с нашей ноды blockchain.

Помните в конфиге запуска скрипта p2pool мы указывали значения --max-conns 100 --outgoing-conns 10. По умолчанию эти значения равны 40 и 6 соответственно. Можно так же их уменьшить.

Все это будет влиять на getwork latency а она очень влияет на DOA на нашей ноде.

Подбирайте лучшие значения для своих условий.

Если самый худший вариант с инетом то вот самые минимальные значения:

Для Bitcoin:

blockmaxsize=250000

maxconnections=8

mintxfee=0.0005

minrelaytxfee=0.0005

Для p2pool:

--max-conns 8

--outgoing-conns 4

 

Помним если поставим все по минимуму мы повысим скорость ноды. Но понизим свой доход. Надо найти золотую середину.

 

# И напоследок уж совсем тонкая настройка.

Воспользуемся командой "nice" для увеличения приоритета. Запустим "htop"

И на выбранном процессе клавишей "F7" увеличим приоритет демону bitcoin и python до -10 (в данном случае чем меньше значение тем больше приоритет, так что не удивляемся знаку "минус") (см. скрин выше "htop")

 

Какие недочеты: Даже наверное это важно надо создать отдельного пользователя и группу для всего выше изложенного. Т.Е. сделать разделение между администратором сервера и как бы пулом. Это для повышения безопасности.

 

Кому лень собирать демоны вот архив с уже готовыми демонами - кроме Bitcoin.

 

 

# Пока Финиш. Будут дополнения соответственно допишу.

 

 

#### Если это кому-то помогло меня можно отблагодарить :) на кошелек 14RTSbmixwthDNvxcLhXvuAyQfBHGXEXTc

59 Комментариев


Рекомендуемые комментарии



со стандартной прошивкой вроде так же работает.Только вот твою прошивку не с первого раза почему -то снесло.

Странно, это оригинальная прошивка я только поменял cgminer

Ссылка на комментарий

после сброса оставалась твоя подпись,потом на смитовскую прошил стало две подписи,и только потом полувчилось сбросить прошивки,делал софтово -удаленно

 

еще вопрос:например 

Spondoolies sp20 стабильнее будет работать на P2Pool?
Ссылка на комментарий

 

после сброса оставалась твоя подпись,потом на смитовскую прошил стало две подписи,и только потом полувчилось сбросить прошивки,делал софтово -удаленно

 

еще вопрос:например 

Spondoolies sp20 стабильнее будет работать на P2Pool?

 

sp20 не знаю а вот sp35 просто супер

Ссылка на комментарий

Под какие данные нужен быстрый SSD диск? Под кошельки или под данные самого p2pool сервера? Какие каталоги размещать на SSD?

Ссылка на комментарий

Под какие данные нужен быстрый SSD диск? Под кошельки или под данные самого p2pool сервера? Какие каталоги размещать на SSD?

Надо все разместить на SSD

Ссылка на комментарий

Спасибо ТС за инструкцию, поднимаю по ней ноду.

Столкнулся с проблемой при компиляции кошелька Unobtanium - версия BerkleyDB не нравиться, подавай 4.8.

Нашел на просторах инета решение. Вот оно:

 

Сначала вручную устанавливаем DB-4.8 :

 

wget http://download.orac....8.30.NC.tar.gz

tar -xzvf db-4.8.30.NC.tar.gz cd db-4.8.30.NC/build_unix

../dist/configure --enable-cxx

make

sudo make install

 

 

Выставляем переменные и символические ссылки:


export BDB_INCLUDE_PATH="/usr/local/BerkeleyDB.4.8/include"export BDB_LIB_PATH="/usr/local/BerkeleyDB.4.8/lib"sudo ln -s /usr/local/BerkeleyDB.4.8/lib/libdb-4.8.so /usr/lib/libdb-4.8.sosudo ln -s /usr/local/BerkeleyDB.4.8/lib/libdb_cxx-4.8.so /usr/lib/libdb_cxx-4.8.so

И вот тогда запускаем configure Unobtanium со следующими параметрами:

./configure CPPFLAGS="-I/usr/local/BerkeleyDB.4.8/include -O2" LDFLAGS="-L/usr/local/BerkeleyDB.4.8/lib"Остальное по инструкции ТС

P. S. Поправьте, если чего лишнего "наворотил"

Ссылка на комментарий

Если была нарушена последовательность установки или что то в системе раньше ставилось такое может быть. Как сделали это тоже правильно, так сказать крайний случай.

Ссылка на комментарий

Если была нарушена последовательность установки или что то в системе раньше ставилось такое может быть. Как сделали это тоже правильно, так сказать крайний случай.

Вообщем BerkeleyDB у меня свежее оказался, чем 4.8

Ссылка на комментарий

Если была нарушена последовательность установки или что то в системе раньше ставилось такое может быть. Как сделали это тоже правильно, так сказать крайний случай.

Кстати, в пункте 9 Вашего руководства неточность есть: скрипт запускаемым делается через команду CHMOD.

У Вас CHOWN стоит.

Очепятка... )

Ссылка на комментарий

Поднял ноду.

88.147.158.86:9332

Отрабатываю технологию, потом на более мощное железо переведу. Или на аренду.

Ссылка на комментарий

так интересует такой вопрос для каждой ноды нужно свое имя/пароль или можно все одним забить?

что бы монетки не украли (а это в полне возможно) нужно разные user и pass

Ссылка на комментарий

 

 

4.2 Unobtanium(UNO) (надо делать четко по инструкции иначе не c компилируется наш демон Unobtanium):git clone https://github.com/unobtanium-official/Unobtanium.git

cd Unobtanium

chmod +x autogen.sh

chmod +x share/genbuild.sh

chmod +x src/leveldb/build_detect_platform

./autogen.sh

./configure

make

# Скопируем unobtanium-cli, unobtaniumd в папку /usr/local/bin

cd Unobtanium/src

sudo cp unobtanium-cli /usr/local/bin/unobtanium-cli

sudo cp unobtaniumd /usr/local/bin/unobtaniumd

все по инструкции (копи-паст) но не компилится чертовка )

Ссылка на комментарий

Огромное спасибо Автору за подробнейшую инструкцию, особенно про "делание" демонов из скриптов!

Пул запущен и уже работает. 35822GH/s копают усиленно. 

Дело теперь, как всегда, в доводке интерфейса до идеала, удобного потребителю. В поисках альтернативы стандартной вэбморде мне рассказали, многие делают сборную солянку из нескольких вариантов. К сожалению нет большого количества времени, чтобы освоить еще и эту ипостась. 

В связи с этим вопрос. Какую версию могут посоветовать опытные, чтобы конечным потребителям, имеющим разного размера фермы, была возможность оперативно мониторить ситуацию с их шахтёрами.

 

И еще актуальный вопрос. С какой суммарной нагрузки на ноду желательно/необходимо/разумно устанавливать систему на SDD? Пока нагрузка до ходит до 40Th индикатор HDD мигает мягко говоря редко, и, как я думаю, пока система хранения не является узким местом пула.

 

Спасибо за внимание.

Ссылка на комментарий

В продолжение основной темы. Подключенные S5 с cgminer4.8 и даже 4.9 очень плохо работают с моей нодой. Статистика по discarded просто зашкаливает:

Приведу примеры, чтобы не быть голословным.

Одна картинка с S5-го подключенного к моей ноде https://yadi.sk/i/UnFQpacsjXF86 и другая картинка с такого же S5, подключенного к ghash.io  https://yadi.sk/i/XkzLE3D7jXFd9. Размещение S5-х рядом с нодой или подключение через инет роли не играет. Настройка сложности так же концептуально ситуацию не меняет. C момента вкдючения проходит буквально несколько секунд, а на 0 Accepted уже 19 Discarded. Это же не нормально?!

 

Буду рад конструктивным предложениям.

Ссылка на комментарий

В продолжение основной темы. Подключенные S5 с cgminer4.8 и даже 4.9 очень плохо работают с моей нодой. Статистика по discarded просто зашкаливает:

Приведу примеры, чтобы не быть голословным.

Одна картинка с S5-го подключенного к моей ноде https://yadi.sk/i/UnFQpacsjXF86 и другая картинка с такого же S5, подключенного к ghash.io  https://yadi.sk/i/XkzLE3D7jXFd9. Размещение S5-х рядом с нодой или подключение через инет роли не играет. Настройка сложности так же концептуально ситуацию не меняет. C момента вкдючения проходит буквально несколько секунд, а на 0 Accepted уже 19 Discarded. Это же не нормально?!

 

Буду рад конструктивным предложениям.

Напиши в личку настройки биткоин конф без логина и паролей. SSD это самое важное!!! И еще проц желательно больше 3Ghz.

Ссылка на комментарий

Напиши в личку настройки биткоин конф без логина и паролей. SSD это самое важное!!! И еще проц желательно больше 3Ghz.

System Information
Manufacturer: Gigabyte Technology Co., Ltd.
Product Name: Z68XP-UD4
Socket Designation: Socket 1155
Type: Central Processor
Family: Other
Manufacturer: Intel
ID: A7 06 02 00 FF FB EB BF
Version: Intel® Core i5-2500K CPU
Voltage: 1.0 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 3400 MHz
Память "спортивная" 4 Гб с синенькими радиаторами HyperX (кажись).
 

  1  [|                              0.5%]     Tasks: 38, 47 thr; 1 running
  2  [                               0.0%]     Load average: 0.21 0.44 0.37
  3  [||                             1.4%]     Uptime: 00:25:16
  4  [|||||                         12.4%]
  Mem[||||||||||||||||||||||||1161/3935MB]
  Swp[                           0/4076MB]
 
  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 1557 root2pool  20   0  771M  508M  7856 S 10.5 12.9  3:05.21 /usr/bin/python /var/p2pool/
 1214 root       20   0 1555M  452M 73152 S 17.7 11.5  1:51.49 /usr/local/bin/bitcoind -dae
 1427 root       22   2 1555M  452M 73152 S  1.0 11.5  0:21.37 /usr/local/bin/bitcoind -dae
 1740 root       20   0 27288  3904  3092 R  0.0  0.1  0:00.07 htop
 1420 root       20   0 28364  5012  3084 S  0.5  0.1  0:04.96 htop
 1193 mysql      20   0  711M  123M 11960 S  0.0  3.1  0:00.74 /usr/sbin/mysqld --basedir=/
 1424 root       20   0 1555M  452M 73152 S  0.0 11.5  0:02.49 /usr/local/bin/bitcoind -dae
 1206 mysql      20   0  711M  123M 11960 S  0.0  3.1  0:00.04 /usr/sbin/mysqld --basedir=/
 1221 root       20   0 1555M  452M 73152 S  0.0 11.5  0:08.92 /usr/local/bin/bitcoind -dae
 1217 root       20   0 1555M  452M 73152 S  1.0 11.5  0:06.16 /usr/local/bin/bitcoind -dae
 1215 root       20   0 1555M  452M 73152 S  1.0 11.5  0:06.20 /usr/local/bin/bitcoind -dae
 1216 root       20   0 1555M  452M 73152 S  1.4 11.5  0:06.27 /usr/local/bin/bitcoind -dae

Загрузка примерно такая.

 
И еще, как правильно распределить 4 ядра процессора для демонов кошелька и пула. Кому сколько и какие.
Сейчас у меня для bitcoind /usr/bin/taskset 0x4, а для p2pool /usr/bin/taskset 0x8. 

А это график, на котором видно, что ошибочных шар слишком много. Но вот как с ошибками бороться я не знаю. Порядка 30 S5-х и 1 - S3.

qiqsqs.jpg

И куда деваются найденные шары после перезапуска ноды?

Ссылка на комментарий

 

System Information
Manufacturer: Gigabyte Technology Co., Ltd.
Product Name: Z68XP-UD4
Socket Designation: Socket 1155
Type: Central Processor
Family: Other
Manufacturer: Intel
ID: A7 06 02 00 FF FB EB BF
Version: Intel® Core i5-2500K CPU
Voltage: 1.0 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 3400 MHz
Память "спортивная" 4 Гб с синенькими радиаторами HyperX (кажись).
 

  1  [|                              0.5%]     Tasks: 38, 47 thr; 1 running
  2  [                               0.0%]     Load average: 0.21 0.44 0.37
  3  [||                             1.4%]     Uptime: 00:25:16
  4  [|||||                         12.4%]
  Mem[||||||||||||||||||||||||1161/3935MB]
  Swp[                           0/4076MB]
 
  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 1557 root2pool  20   0  771M  508M  7856 S 10.5 12.9  3:05.21 /usr/bin/python /var/p2pool/
 1214 root       20   0 1555M  452M 73152 S 17.7 11.5  1:51.49 /usr/local/bin/bitcoind -dae
 1427 root       22   2 1555M  452M 73152 S  1.0 11.5  0:21.37 /usr/local/bin/bitcoind -dae
 1740 root       20   0 27288  3904  3092 R  0.0  0.1  0:00.07 htop
 1420 root       20   0 28364  5012  3084 S  0.5  0.1  0:04.96 htop
 1193 mysql      20   0  711M  123M 11960 S  0.0  3.1  0:00.74 /usr/sbin/mysqld --basedir=/
 1424 root       20   0 1555M  452M 73152 S  0.0 11.5  0:02.49 /usr/local/bin/bitcoind -dae
 1206 mysql      20   0  711M  123M 11960 S  0.0  3.1  0:00.04 /usr/sbin/mysqld --basedir=/
 1221 root       20   0 1555M  452M 73152 S  0.0 11.5  0:08.92 /usr/local/bin/bitcoind -dae
 1217 root       20   0 1555M  452M 73152 S  1.0 11.5  0:06.16 /usr/local/bin/bitcoind -dae
 1215 root       20   0 1555M  452M 73152 S  1.0 11.5  0:06.20 /usr/local/bin/bitcoind -dae
 1216 root       20   0 1555M  452M 73152 S  1.4 11.5  0:06.27 /usr/local/bin/bitcoind -dae

Загрузка примерно такая.

 
И еще, как правильно распределить 4 ядра процессора для демонов кошелька и пула. Кому сколько и какие.
Сейчас у меня для bitcoind /usr/bin/taskset 0x4, а для p2pool /usr/bin/taskset 0x8. 

А это график, на котором видно, что ошибочных шар слишком много. Но вот как с ошибками бороться я не знаю. Порядка 30 S5-х и 1 - S3.

qiqsqs.jpg

 

написал в личку

Ссылка на комментарий

К сожалению 120-150 SSD сейчас нет, но есть две 60-ки. Если их поставить в стрип, то нормально будет?

Для начало пойдет

Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...