Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
13 мая 2015, 12:42:54 PM   # 1
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я заметил, что извлечение блоков по протоколу Bitcoin медленно в моей обстановке.
Мой узел в моей локальной сети, которые имеют над скоростью 100MB с моим Dev компьютером.

Я не нахожу способ сделать это лучше, и я хотел бы ваш совет, вот мой вывод:

  • Средняя скорость Выполнено: 5МБ / s
  • Максимальная скорость Достигнутые (ponctual): 15MB / s
  • Fetch стратегии: GetData 50 000 блоков, Совет для Genesis
  • сокет клиента буфер приема не сыта (указать bitcoind не посылает достаточно быстро)
  • Disk IO и CPU не ограничен
  • Когда RCV буфер клиента пуст, он занимает 100 мс с низкой дисперсией, прежде чем новые данные поступают
  • Используя 2 соединения вместо одного для извлечения блоков скорости вещи вверх немного (7.5MB / с) средний

Я пытался играть с получать и отправлять буфера на обоих bitcoind и клиентского кода, без эффекта.

Я заметил, что 100ms времени потребуется для моего буфер заполняются снова должен исходить из ThreadMessageHandler.

Однако, просмотрев код, я не видел никакой ошибки: если отправить буфер узла Bitcoin не является полным, я не должен испытывать каких-либо задержек 100 мс.
Еще раз, пытаясь изменить размер буферов bitcoind не имели никакого эффекта.

Есть идеи ?

Моя альтернатива для синтаксического анализа каталога BLK по SMB, которые идут рядом с 75 МБ / S.
Но это хрупкое решение, которое я хотел бы избежать.
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier


Как заработать Биткоины?
Без вложений. Не майнинг.


13 мая 2015, 1:57:17 PM   # 2
 
 
Сообщения: 1736
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Получил 1806 Биткоинов
Реальная история.





Здравствуй,
Несколько вопросов:
1. Является ли это с Bitcoin ядра 0.10.1?
2. Вы только синхронизироваться блок цепь на вашей локальной сети на одной другой машине? Если вы можете синхронизировать с нескольких компьютеров, которые могут ускорить процесс.
3. HDD или SSD на машинах?
4. функции CPU?

🙂
cr1776 сейчас офлайн Пожаловаться на cr1776   Ответить с цитированием Мультицитирование сообщения от cr1776 Быстрый ответ на сообщение cr1776

13 мая 2015, 3:24:36 PM   # 3
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Однако, просмотрев код, я не видел никакой ошибки: если отправить буфер узла Bitcoin не является полным, я не должен испытывать каких-либо задержек 100 мс.
Еще раз, пытаясь изменить размер буферов bitcoind не имели никакого эффекта.

Похоже, что это будет только пропустить сон, если по крайней мере один узел получает данные, и это необработанный. Я не знаю почему, что связано с буфера передачи.

Вы пробовали сбросив 100 мс сон 1мс?
TierNolan сейчас офлайн Пожаловаться на TierNolan   Ответить с цитированием Мультицитирование сообщения от TierNolan Быстрый ответ на сообщение TierNolan

13 мая 2015, 3:44:47 PM   # 4
 
 
Сообщения: 1330
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Есть много условий там. Я бы также попытаться установить для начала сна до очень низкого значения, и если есть реальное улучшение я отлаживать немного.
Это слишком легко пропустить что-то там.
Neuroticfish сейчас офлайн Пожаловаться на Neuroticfish   Ответить с цитированием Мультицитирование сообщения от Neuroticfish Быстрый ответ на сообщение Neuroticfish

13 мая 2015, 3:55:09 PM   # 5
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

котировка
Является ли это с Bitcoin ядра 0.10.1?
да

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


котировка
HDD или SSD на машинах?
4 HDD в RAID5, 10K RPM (сервер имеет свой собственный контроллер RAID)

котировка
спецификации CPU

У меня есть Dell Powerdge T620, процессор не ограничен, ни диск IO.

котировка
Вы пробовали сбросив 100 мс сон 1мс?
Нет, вообще говоря, everytimes я пытался компиляция bitcoind, я сдался после нескольких часов впустую и разочарования, так что я просто представить себе это вызвано сном. Время 100мса кажется очень последовательным.

котировка
Есть много условий там. Я бы также попытаться установить для начала сна до очень низкого значения, и если есть реальное улучшение я отлаживать немного.
Спасибо, ну, я думаю, мне придется попытаться скомпилировать Bitcoin еще раз на окнах.

Мне было интересно, если я что-то очевидное отсутствует, любой "волшебный параметр" где-то.
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

13 мая 2015, 4:53:11 PM   # 6
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Время 100мса кажется очень последовательным.

Мне было интересно, если я что-то очевидное отсутствует, любой "волшебный параметр" где-то.
TCP_NODELAY?

Интересно Джон Нэйгл имеет учетную запись на этом форуме:



Изменить: Я на самом деле отправляю это из Windows, а не моя обычной машины. Это мне потребовалось некоторое время, чтобы найти место, где ОС включают в себя файлы расположены. В поисках правильного написания я нашел забавный комментарий в одном из SDKs окон:

Код:
// отключить nagling

Очевидно, что делает глагол из фамилии чьей-то знак уважения. Я просто интересно, начиная ли это с строчными буквами «п» означает больше уважения или меньше уважения?
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

13 мая 2015, 5:15:45 PM   # 7
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Время 100мса кажется очень последовательным.

Мне было интересно, если я что-то очевидное отсутствует, любой "волшебный параметр" где-то.
TCP_NODELAY?

Интересно Джон Нэйгл имеет учетную запись на этом форуме:





Хорошая попытка, но ничего не изменилось.
Я думаю, что NODELAY больше для отправителя. Если мне удастся собрать bitcoind, я буду стараться, чтобы установить без задержки на нем, наряду с изменением сна.
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

13 мая 2015, 5:19:13 PM   # 8
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Чтобы быть уверенным, я также пытаюсь синхронизировать bitcoind от моего Dev машины с одного моего сервера, чтобы увидеть, если я получаю такую ​​же скорость, как раз, чтобы исключить любую возможность того, что что-то в моем коде не так.
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

13 мая 2015, 5:35:15 PM   # 9
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Просто попытался соединиться с bitcoind на моем Dev машины. Был некоторый рывок к 1 Мб / с, то раскинувшимся 30Кбом / с. (Я остановился в блоке 50K)
Я думаю, это нормально, так как bitcoind проверяет входящие блоки. любил бы попробовать на более высоких блоков, хотя. (Но мой DEV машина SSD полно)
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

15 мая 2015, 9:08:27 AM   # 10
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Нет, вообще говоря, everytimes я пытался компиляция bitcoind, я сдался после нескольких часов впустую и разочарования, так что я просто представить себе это вызвано сном. Время 100мса кажется очень последовательным.

Пробовали ли вы, глядя на GitHub автосборщика войти? Я думаю, что если Travis может это сделать, это должно быть легко сделать вручную тоже.
https://travis-ci.org/bitcoin/bitcoin/jobs/62665884

hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

15 мая 2015, 9:46:01 AM   # 11
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

спасибо, я посмотрю. Я не мастер Linux, но это должно помочь
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

15 мая 2015, 7:32:29 PM   # 12
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Вы используете свое собственное программное обеспечение в качестве приемника? Я думаю, что процессор, а не пропускная способность сети, как правило, вопрос.
TierNolan сейчас офлайн Пожаловаться на TierNolan   Ответить с цитированием Мультицитирование сообщения от TierNolan Быстрый ответ на сообщение TierNolan

16 мая 2015, 12:14:31 AM   # 13
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Вы используете свое собственное программное обеспечение в качестве приемника? Я думаю, что процессор, а не пропускная способность сети, как правило, вопрос.
Да на стороне клиента мое собственное программное обеспечение. Но мой процессор в основном простаивает, а RCV буфер моего клиента не было времени, чтобы заполнить вверх, что означает, что я обрабатывать быстрее, чем скорость, к которой bitcoind посылает мне блоки.
Что беспокоит меня это последовательная задержка для заполнения буфера RCV когда я осушил ее, прочитав мой сокет ... Он принимает 100мс. (+ - 20мс)
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

16 мая 2015, 10:05:50 AM   # 14
 
 
Сообщения: 2366
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Существует преднамеренный сон в обработке сообщений.

Он был снят в 0.11 (мерзавца мастера прямо сейчас) с помощью Патрика Strateman PR 5971.

Есть мучительно точные инструкции здания, https://github.com/bitcoin/bitcoin/blob/master/doc/gitian-building.md  достаточно, чтобы заставить кого-то, кто не очень технические производства битовых идентичные бинарных файлов к отпуску.

(Более простой процесс сборки тоже работает, конечно, если вы не заботитесь о воспроизведении builds--, но эти инструкции также имеют преимущество быть очень точными.)
gmaxwell сейчас офлайн Пожаловаться на gmaxwell   Ответить с цитированием Мультицитирование сообщения от gmaxwell Быстрый ответ на сообщение gmaxwell

16 мая 2015, 12:48:44 PM   # 15
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Существует преднамеренный сон в обработке сообщений.

Он был снят в 0.11 (мерзавца мастера прямо сейчас) с помощью Патрика Strateman PR 5971.

Есть мучительно точные инструкции здания, https://github.com/bitcoin/bitcoin/blob/master/doc/gitian-building.md  достаточно, чтобы заставить кого-то, кто не очень технические производства битовых идентичные бинарных файлов к отпуску.

(Более простой процесс сборки тоже работает, конечно, если вы не заботитесь о воспроизведении builds--, но эти инструкции также имеют преимущество быть очень точными.)

Круто Я попытаюсь это. Если проблема действительно пришла от этого сна, то это будет улучшение более чем 30%, это может быть в 10 раз улучшения для моего случая. (Так как мой код не проверяет, блоки, только загрузить их, большую часть времени загрузки впустую ожидание 100мса)
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

16 мая 2015, 2:55:09 PM   # 16
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Я пытался следить за процессом сборки.

котировка
./ Бен / gbuild --commit Биткойн = мастер ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
котировка
Остановка цели, если она вверх
Создание новой копии изображения
Запуск целевой
Проверяется цель вверх
Подготовка среды сборки
Обновление APT-получить хранилище (войти вар / install.log)
Установка дополнительных пакетов (войти вар / install.log)
Система Обновление может занять некоторое время
Создание пакетов манифест
Создание скрипт сборки (вар / встроенный скрипт)
Запуск скрипта сборки (войти вар / build.log)
Захватывать результаты
дегтя: Это не выглядит как архив тар
деготь: Выход с состоянием отказа из-за предыдущие ошибки
./ Бен / gbuild: 21: в `системы ': не удалось запустить экземпляр-из-мишени из сборки (RuntimeError)
        от ./bin/gbuild:267:in `блока (2 уровня) в <главный>'
        от ./bin/gbuild:259:in `каждый»
        от ./bin/gbuild:259:in `блока в <главный>'
        от ./bin/gbuild:257:in `каждый»
        от ./bin/gbuild:257:in `<главный>'

install.log и build.l пустуют.

встроенный скрипт

котировка
НИКО @ Bitcoin-сборки: ~ / gitian-строитель $ хвост вар / встроенный скрипт
  найти . -имя "Lib * .la" -Удалить
  найти . -имя "Lib * .a" -Удалить
  гт -rf $ {DISTNAME} / Lib / pkg-config
  найти $ {DISTNAME} | сортировать | деготь --no-рекурсии --mode = 'и + RW, идти + RW, а + X' --owner = 0 --group = 0 -c -Т - | GZIP -9n > $ {OUTDIR} / $ {DISTNAME} - $ {я} .tar.gz
  CD ../../
сделанный
MkDir -p $ OUTDIR / ЦСИ
мв $ SOURCEDIST $ OUTDIR / ЦСИ
мв $ {OUTDIR} / $ {DISTNAME} -x86_64 -. * tar.gz $ {OUTDIR} / $ {DISTNAME} -linux64.tar.gz
мв $ {OUTDIR} / $ {DISTNAME} -i686 -. * tar.gz $ {OUTDIR} / $ {DISTNAME} -linux32.tar.gz

Ну, разве я забыл что-то очевидное, я думаю, я буду просто ждать, чтобы быть 0.11, я думаю, никто из вас не хватает времени, чтобы помочь мне построить успешно, и у меня нет времени, чтобы выяснить Линукс вуду самостоятельно.
Я буду обновлять этот пост, когда +0,11 выходит опубликовать результат, 0,11 есть на моих проблемах perfs.
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

16 мая 2015, 3:51:25 PM   # 17
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Круто Я попытаюсь это. Если проблема действительно пришла от этого сна, то это будет улучшение более чем 30%, это может быть в 10 раз улучшения для моего случая. (Так как мой код не проверяет, блоки, только загрузить их, большую часть времени загрузки впустую ожидание 100мса)

Я побежал с Lastest на мастер на Linux, и это 0-1ms на блок для чистого скачивания. Я удостоверился, чтобы загрузить 1000 блоков с каждым GetData запроса.

В Linux, 0.10.1.rc2 быстро, как хорошо, но только если я запросить несколько блоков одновременно. Каждое GetData сообщение стоит 100мса, так что отправка один на каждые 1000 блоков намного быстрее.

Жутко, когда я запускаю Java скачать код на окнах с последней загрузкой (0.10.1), это 20-30ms на блок.

"мерзавец мастер фотографии"

GetData (1000 блоков): 0-1ms для каждого блока
GetData (1 блок): 37-42ms для каждого блока

"мерзавец контроль v0.10.1rc2" [Linux]

GetData (1000 блоков): 1-3ms для каждого блока
GetData (1 блок): 100-101ms для каждого блока
TierNolan сейчас офлайн Пожаловаться на TierNolan   Ответить с цитированием Мультицитирование сообщения от TierNolan Быстрый ответ на сообщение TierNolan

16 мая 2015, 4:58:20 PM   # 18
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Я уже выборка блоков с GetData 10000 блоков.

В 100мсе я видел не то же самое, "100мс на блок",
Я точно означает, что, когда приемный буфер моего сокета пуст, то он принимает последовательно 100ms, прежде чем новые данные поступают внутрь.

Я измеряю это как раз перед чтением следующего сообщения.

Он не делает никаких различий, если таковые 1MB блоки или 1Kb блоки.

Я чувствую PR gmaxwell переговоров о фиксированных моих проблемах. Я дам вам знать, на 0.11.
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

15 июня 2015, 12:43:40 AM   # 19
 
 
Сообщения: 700
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Я просто проверил 0.11rc1.

Заголовки загружаются в 3 раза быстрее. (Загрузка 3MB / s вместо прежних 1 Мб / с)
Мой блок скорость загрузки не очень изменился.

Я не замечаю, что 100ms время ожидания последовательно больше.
Николя Dorier сейчас офлайн Пожаловаться на Николя Dorier   Ответить с цитированием Мультицитирование сообщения от Nicolas Dorier Быстрый ответ на сообщение Николя Dorier

15 июня 2015, 3:42:11 AM   # 20
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: как увеличить скорость загрузки блока на одном локальном узле

Что-то где-то, потому что я проверил несколько раз, и я не понимаю, что происходит между NBitcoin и bitcoind. Здесь доля некоторые результаты:

Это один из несколько перспективы, что я сделал с 0.10.1


И это испытание выход: (эти цифры являются кб / с)



А следующие результаты для того же теста против 0.11rc

(Прогон 1)




Как мы видим, на некоторое время она работала намного лучше, однако, через минуту более или менее он пошел вниз.

(Прогон 2)




(Бег 3)




(Запуск 4)




Я проверил это точно так же. Bitcoind был связан только с NBitcoin.

Еще одна вещь, что странно, я видел (я не был в состоянии воспроизвести его) является то, что при загрузке блоков, обмен пинг / понга в середине занимает 4 секунды.
 
lontivero сейчас офлайн Пожаловаться на lontivero   Ответить с цитированием Мультицитирование сообщения от lontivero Быстрый ответ на сообщение lontivero



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW