Author

Topic: Цепочка и RAID 1 (Read 2558 times)

legendary
Activity: 1120
Merit: 1069
July 08, 2013, 02:15:59 AM
#21
Кошелек ведет проверку параллельно скачиванию блоков, и делает по этой причине эту проверку не оптимальным методом. Очевидно что 'скачать базу до текущего момента' у соседа и проверить внешним приложением (где то тут была невероятно быстрая opensource утилита для разного анализа blockchain) гораздо эффективнее для 'старта'.

RAID с чередованием (stripe) сам по себе очень плохо решает задачу оптимизации чтения (да и записи если честно), наиболее заметный прирост замечают на блочных/линейных операциях больших объемов, и очень мало какие контроллеры будут делать грамотное кеширование и распределение запросов по устройствам (с отдельными очередями IO на диск, например), я не слышал чтобы софтовые решения LVM или MDADM этим могли похвастаться.

Для базы данных blockchain необходимы высокие IOPS на рандомных запросах, прирост которых для raid0 'дай бог' логарифмический (от количества). И не забываем, raid часто читают весь блок (дефолтные настройки) данных секторов, на которые порезан логический раздел (для оптимизации read ahead) - для базы blockchain это размер должен быть сравним с размером блока (десятки килобайт) или даже транзакции (считанные байты) а значения по умолчанию для типичных рейдов - 2-4 мегабайта. Т.е. raid может даже ухудшить скорость работы.

p.s. у вас 16 GB оперативной памяти, этого спокойно хватит для однократной загрузки блоков, после этого данные перемещаются на обычный диск.
Если у вас linux и оперативной памяти меньше или сравнимо с размером базы blockchain (можно и 8GB обойтись) то можно разместить blockchain на отдельном разделе с ext4, и временно включить на нем journal_write_back (и в опциях монтирования), в этом случае скорость работы с базой будет сравнима со скоростью tmpfs (пока не закончится оперативная память, доступная для файлового кеша и буферов).
legendary
Activity: 1400
Merit: 1000
July 08, 2013, 02:08:45 AM
#20
зачем вообще это всё? синхронизация идёт меньше одного дня. После синхронизации одновременно даже 6 кошельков разных криптовалют не нагружают даже ноутбучный винчестер с 5400 оборотов/минуту ( в windows длина очереди диска от 0 до 0.08)
legendary
Activity: 2296
Merit: 1057
July 08, 2013, 02:04:14 AM
#19
это решаемо предварительным скачивание бд

Ничего я не путаю, просто решаю свою задачу, все требования которой вам не известны.

Вот скачали вы БД предварительно. Потом программа должна её проверить. Это значит, что надо много читать и много искать.

Чтение будет работать с одинаковой скоростью на RAID-0 и RAID-1 (в моём случае с mdadm, а не аппаратным контроллером).

И только ваши догмы и предрассудки (о том, что только RAID-0, если нужна скорость) мешают вам воспринимать других людей не менее умными чем вы сами.
кто вам сказал что я умный  Shocked  Huh
проверка идет в разы быстрее скачивания
есть синтетические тесты скорости диска погоняйте их и убедитесь сами какой вам оптимальнее
newbie
Activity: 42
Merit: 0
July 08, 2013, 01:55:39 AM
#18
это решаемо предварительным скачивание бд

Ничего я не путаю, просто решаю свою задачу, все требования которой вам не известны.

Вот скачали вы БД предварительно. Потом программа должна её проверить. Это значит, что надо много читать и много искать.

Чтение будет работать с одинаковой скоростью на RAID-0 и RAID-1 (в моём случае с mdadm, а не аппаратным контроллером).

И только ваши догмы и предрассудки (о том, что только RAID-0, если нужна скорость) мешают вам воспринимать других людей не менее умными чем вы сами.
legendary
Activity: 2296
Merit: 1057
July 08, 2013, 01:46:06 AM
#17
Я правильно понимаю, что если положить кошелёк на raid1, то он будет работать во столько раз быстрее, сколько дисков в RAID1-массиве (т.е. если в зеркале 4 одинаковых диска, то цепочка будет синхронизироваться в четыре раза быстрее)?
эм... а вы не путаете 1 с 0? Smiley
RAID1 может ускорить скорость чтения, и то не на всех контроллерах. ибо как бэ идеологически создавался для увеличения надёжности хранения а не скорости
точно путает!
Raid1 - делает зеркалирование дисков
Raid0 - склейку в одно логическое пространство с параллельным вводом-выводом
кошелек работает быстро, а вот синхронизируется первый раз долго, но это решаемо предварительным скачивание бд
full member
Activity: 162
Merit: 104
July 08, 2013, 12:29:55 AM
#16
Я правильно понимаю, что если положить кошелёк на raid1, то он будет работать во столько раз быстрее, сколько дисков в RAID1-массиве (т.е. если в зеркале 4 одинаковых диска, то цепочка будет синхронизироваться в четыре раза быстрее)?
эм... а вы не путаете 1 с 0? Smiley
RAID1 может ускорить скорость чтения, и то не на всех контроллерах. ибо как бэ идеологически создавался для увеличения надёжности хранения а не скорости
Xtc
legendary
Activity: 1973
Merit: 1028
;u
July 06, 2013, 01:49:18 PM
#15
Quote
Ну и это не отвечает на вопрос - как запустить систему на допустим трёх машинах параллельно для ускорения (типа distcc)
Для ускорения чего? Текущей скорости недостаточно, когда база уже загружена? Обычным пользователям скорости скачивания/добавления новых блоков хватает, проблема только в первоначальной загрузке всей базы.
legendary
Activity: 1120
Merit: 1069
July 06, 2013, 01:46:51 PM
#14
отказались от oracle berkely db и сменили ее на LevelDB

Странные люди. Ведь в этой новой базе данных нет индексов.

"This is not a SQL database. It does not have a relational data model, it does not support SQL queries, and it has no support for indexes"

зачем тогда вообще нужен движок БД? Не проще ли просто запрограммировать кастомную структуру данных?

почитайте про document oriented и key-value database, они представляют из себя один больший индекс по primary key (если брать аналогию из реляционных sql db) они предоставляют больше возможностей для ускорения чем более сложные - реляционные.

Ну и это не отвечает на вопрос - как запустить систему на допустим трёх машинах параллельно для ускорения (типа distcc)
потому что никому не надо было, я предложил вам способы решения...

первый же результат в google:
http://serverfault.com/questions/152985/emulate-a-smp-server-with-a-linux-cluster
newbie
Activity: 42
Merit: 0
July 06, 2013, 01:39:22 PM
#13
отказались от oracle berkely db и сменили ее на LevelDB

Странные люди. Ведь в этой новой базе данных нет индексов.

"This is not a SQL database. It does not have a relational data model, it does not support SQL queries, and it has no support for indexes"

зачем тогда вообще нужен движок БД? Не проще ли просто запрограммировать кастомную структуру данных?

Ну и это не отвечает на вопрос - как запустить систему на допустим трёх машинах параллельно для ускорения (типа distcc)
legendary
Activity: 1120
Merit: 1069
July 06, 2013, 01:35:30 PM
#12
для каждого блока приходится делать сотни и тысячи запросов к текущей базе на каждую транзакцию

Это же отлично! Это означает, что можно параллелить работу на сотни и тысячи ядер, не так ли?
Если есть N машин с многоядерными процессорами, это поможет?

Но всё равно непонятно, как получается много часов.
на сколько я понимаю 0.8+ версии так и делают, используют сразу несколько процессоров для проверки загружаемой цепочки, и даже для ускорения работы отказались от oracle berkely db и сменили ее на LevelDB
p.s. что то мне говорит, что необходимости в кластерной реализации кошелька возникнет еще не скоро, но на сколько я знаю для linux есть библиотеки, позволяющие эмулировать многоядерную машину в кластере для тех приложений, которые это еще не поддерживают, конечно же итоговая производительность упрется в скорость сети, но вы можете попробовать...
newbie
Activity: 42
Merit: 0
July 06, 2013, 01:29:18 PM
#11
для каждого блока приходится делать сотни и тысячи запросов к текущей базе на каждую транзакцию

Это же отлично! Это означает, что можно параллелить работу на сотни и тысячи ядер, не так ли?
Если есть N машин с многоядерными процессорами, это поможет?

Но всё равно непонятно, как получается много часов.
legendary
Activity: 1120
Merit: 1069
July 06, 2013, 01:08:21 PM
#10
тупо уприрается в мощность проца.

Правильно ли я понимаю, что там можно большую часть работы по проверке цепочки (а не по майнингу) провести через видеокарту?
сомнительно.

Основная нагрузка скорее идет не на вычисление sha256 (мой процессор максимум считает на скорости ~20MH/s т.е. миллионы в секунду, а весь blockchain содержит всего несколько сотен тысяч блоков) а определение связности между транзакциями (проверка, что все монеты потрачены правильно), т.е. для каждого блока приходится делать сотни и тысячи запросов к текущей базе на каждую транзакцию.
newbie
Activity: 42
Merit: 0
July 06, 2013, 12:56:00 PM
#9
тупо уприрается в мощность проца.

Правильно ли я понимаю, что там можно большую часть работы по проверке цепочки (а не по майнингу) провести через видеокарту?
hero member
Activity: 798
Merit: 1000
July 06, 2013, 12:54:52 PM
#8
заново выситываются и сверяются хеши блоков.

Сколько процентов времени уходит на хеширование,
а сколько процентов времени на поиск блоков в базе данных?
Понятия не имею Smiley На хеширование в зависимости от мощности проца, поиск по базе в зависимости от дисковой подсистемы. В случае с РАМ-диском там скорей всего все тупо уприрается в мощность проца.
newbie
Activity: 42
Merit: 0
July 06, 2013, 12:52:45 PM
#7
мне почти впритык хватило раздела в 10GB

У меня на машине всего 16 GB RAM. Правильно ли я понимаю, что две валюты на ней таким способом не запустить, и обменник не получится?
newbie
Activity: 42
Merit: 0
July 06, 2013, 12:51:48 PM
#6
заново выситываются и сверяются хеши блоков.

Сколько процентов времени уходит на хеширование,
а сколько процентов времени на поиск блоков в базе данных?
legendary
Activity: 1120
Merit: 1069
July 06, 2013, 12:51:40 PM
#5
месц
2) сколько нужно памяти под tmpfs-диск (т.е. например, если хочется на узле иметь несколько валют, то какого размера память заказывать у хостера на виртуальной машине).
На win7x64 машине месяц назад мне почти впритык хватило раздела в 10GB
hero member
Activity: 798
Merit: 1000
July 06, 2013, 12:50:34 PM
#4
1) зачем ему столько времени? (интересна конкретная раскладка)
В процессе скачивания все цепочка блоков полностью проверяется на валидность. Т.е. заново выситываются и сверяются хеши блоков.
newbie
Activity: 42
Merit: 0
July 06, 2013, 12:48:10 PM
#3
до считанных часов

Потрясяюще! Интересно:
1) зачем ему столько времени? (интересна конкретная раскладка)
2) сколько нужно памяти под tmpfs-диск (т.е. например, если хочется на узле иметь несколько валют, то какого размера память заказывать у хостера на виртуальной машине).
legendary
Activity: 1120
Merit: 1069
July 06, 2013, 12:45:08 PM
#2
Да быстрее, но зависимость далеко не линейная.
p.s. размещение базы blockchain на ram-диске ускоряет синхронизацию до считанных часов
newbie
Activity: 42
Merit: 0
July 06, 2013, 12:38:40 PM
#1
Я правильно понимаю, что если положить кошелёк на raid1, то он будет работать во столько раз быстрее, сколько дисков в RAID1-массиве (т.е. если в зеркале 4 одинаковых диска, то цепочка будет синхронизироваться в четыре раза быстрее)?
Jump to: