LINUX.ORG.RU

Raid для игоря

 , , ,


1

2

Добрый вечер.
Интересует сравнение raid1 mdadm(тот же btrfs или ext) и raid1 btrfs.
добавляю третий диск. озадачился альтернативами.
задачи: загрузка игр и локаций в играх и тд. то есть более менее последовательное чтение.

фороникс говорит, что mdadm лучше. но...2014 год. может, уже причесали? Лень переобуваться.
https://openbenchmarking.org/embed.php?i=1410302-LI-BTRFSRAID97&sha=8e69c...

п.с. да, ссд есть, да занимаюсь хентаем. но всё ж винты по 2тб, а ссд на 2 тб...

Ответ на: комментарий от Moderators

на данный момент установлены в стиме:
gta5, gta4, civ5, ets2,ats....
это из наиболее крупных

darkenshvein ★★★★★
() автор топика

https://www.phoronix.com/scan.php?page=article&item=linux54-hdd-raid

Тут сравнение внутреннего RAID’а btrfs и mdadm + Ext4/XFS на HDD

Чистый btrfs выглядит достаточно неплохо, надо сказать. Даже не везде проигрывает XFS).

Лишняя прослойка для btrfs врядли пойдёт на пользу. Так что я бы не советовал комбинацию mdadm и btrfs.

chaos_dremel ★★
()
Последнее исправление: chaos_dremel (всего исправлений: 1)

С RAID-1 ты не выиграешь ничего. Совсем ничего. RAID-1 на скорость чтения влияет ровно никак. RAID-1 — это чтобы при подыхании одного диска с играми ты мог продолжать играть… даже если диск сдох во время загрузки локации.

Смотри в сторону RAID-5, RAID-6.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

raid1 иногда умеет _читать_ с чередованием, как raid0, но вот запись синхронная на оба диска, да. Если каналы sata аппаратно независимые (не используется мультиплексор) - будет чередование при чтении, возможно нужно настроечки крутить, не помню уже что конкретно, избавился от механики и софтрайда совсем.

Так что теоретически райд1 на скорость чтения влияет. Практически - от реализации и настроек зависит.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 2)
Ответ на: комментарий от Jameson

raid1 иногда умеет читать с чередованием, как raid0

Ключевое слово — иногда.

Так что теоретически райд1 на скорость чтения влияет.

Там, где он влияет, эти показатели в сравнении с RAID-5/RAID-6 просто смешные. Ну и конечно жертвовать половиной объёма (топикстартер хочет игры, они весят немало) ради незаметного прироста скорости чтения, которого скорее всего не будет — такое себе.

но вот запись синхронная на оба диска, да

Играм вроде и не требуется писать много.

mord0d ★★★★★
()
Ответ на: комментарий от Jameson

запись не нужна в юзкейсе загрузки игр.

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от mord0d

задумался.
что мешает на raid1 читать третий кусок с 3 носителя? реализация raid1?
потестировал на raid1 копирование директорий.
сейчас конвертну в raid5 и посмотрим на нём ещё скорости.

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от darkenshvein

что мешает на raid1 читать третий кусок с 3 носителя?

RAID-1 — это mirror, поэтому запись у него будет замеряться по самому медленному диску, а чтение — по самому быстрому (FIXME?) (из живых с неповреждёнными метаданными). RAID-5/RAID-6 размазывают данные по нескольким дискам, потому скорость записи будет ГОРАЗДО быстрее записи на один даже самый быстрый диск (того же типа), а скорость чтения будет ГОРАЗДО быстрее скорости записи. Другими словами: RAID-1 считывает с первого попавшегося (FIXME: Одного или нескольких? Может ли RAID-1 сравнивать метаданные при обращении к данным?) диска, а RAID-5/RAID-6 — со всех параллельно.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Потому что контрольная сумма рассчитывается и записывается. А при чтении - нет. Ты теоретик что ли? Реально связываться с райдами выше 0\1 имеет смысл только при наличии аппаратного контроллера с BBU, своим набортовым кешем, процессором и в идеале ещё и блочным кешем на ssd. Городить софтварные райды 5\6 идея так себе. Кстати на винтах объёмом больше терабайта raid5 вообще не рекомендуется. Ты уже давно несёшь тут чушь, нахватавшись по верхам теории, возможно покрутив разок софтварный райд. Хватит, остановись пожалуйста.

Jameson ★★★★★
()
Ответ на: комментарий от mord0d

raid 1 на неодинаковых дисках - бред и выстрел в ногу, при одинаковых дисках чтение будет либо в режиме чередования, как в raid0, либо нет, если каналы сата реализованы через мультиплексор. В случае разных по скорости чтения дисков читаться будет быстрейший, да. Запись будет идти с синхронизацией, на оба (не всегда, но mdraid будет стараться атомарно балансировать и выравнивать).

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)

Реально имеет смысл играть с размером блока райда и ФС для ускорения чтения, при последовательном чтении тип ФС не так важен как размер читаемого блока. При отсутствии честного аппаратного райда вылезать за пределы raid0\1 из двух дисков не нужно. Реально можно сделать красиво воткнув перед райдом блочный кеш из ssd на 64\128 гигов, например средствами bcache. Это будет работать независимо от ФС, не помешает линейному чтению толстоты, но при этом ускорит случайное чтение. Кроме того нынче игрушки умеют и желают тянуть текстуры из паков в несколько(много) потоков, райд тут не поможет, чтение хоть и линейное, но многопоточное. А вот если это в блочном ssd кеше застрянет - будет красиво тогда.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

raid1 при чтении ведёт себя как raid0, кроме редких нынче древних чипсетов где сата каналы реализовывались через мультиплексор и нужно было думать и вычитывать какие каналы «честные», а какие не очень. Но в таких случаях и raid0 тоже прироста не даст. Так что raid0 для игорь не нужен совсем. Ускорение при чтении и так будет, ускорять запись обычно не нужно и минус надёжность какая никакая.

Jameson ★★★★★
()
Ответ на: комментарий от mord0d

конвертнул в рейд5. на моей кустарной кухне raid5-btrfs оказался медленнее.
кеши старался сбрасывать с
sync; echo 1 > /proc/sys/vm/drop_caches
raid1
time cp -r Planet\ Explorers/ /tmp/
real 1m21,275s
user 0m0,052s
sys 0m11,809s

time cp -r Grand\ Theft\ Auto\ IV /tmp/
real 3m23,094s
user 0m0,108s
sys 0m21,318s

time cp -r RisingWorld/ /mnt/ramdisk/
real 0m34,171s
user 0m0,054s
sys 0m2,432s

time cp -r Boobs\ Saga/ /mnt/ramdisk/
real 0m20,990s
user 0m0,004s
sys 0m2,671s

raid5
time cp -r Planet\ Explorers/ /tmp/
real 1m42,990s
user 0m0,062s
sys 0m12,641s

time cp -r Grand\ Theft\ Auto\ IV /tmp/
real 4m6,625s
user 0m0,123s
sys 0m22,861s

time cp -r RisingWorld/ /mnt/ramdisk/
real 0m56,346s
user 0m0,056s
sys 0m2,670s

time cp -r Boobs\ Saga/ /mnt/ramdisk/
real 0m32,792s
user 0m0,008s
sys 0m2,990s

darkenshvein ★★★★★
() автор топика
Последнее исправление: darkenshvein (всего исправлений: 1)
Ответ на: комментарий от Jameson

Если каналы sata аппаратно независимые

как это узнать?
что-то мне подсказывает, что встроенный сата-контроллер в моих последних двух материнках - полное дерьмо

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от chaos_dremel

чота по тестам совсем хуже.
см. моё сообщение с тестами выше.

в обоих случаях это три винта. и r1 и r5.

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от darkenshvein

Чипсет какой? А вообще можно было определить так - если в бивисе есть интеловский софтрайд - те каналы из которых он этот райд предлагает сделать как раз «честные». Если ограничений не накладывает и предлагает все каналы - все честные. Вообще мультиплексоры уже очень давно не используют, с десяток лет наверное. Вряд ли у тебя настолько старое железо.

https://ata.wiki.kernel.org/index.php/SATA_hardware_features

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)

Ещё учти что сама шина между sata контроллером и между мостами может накладывать ограничения. Но вряд ли ты в это упрёшься с двумя механическими дисками.

https://www.anandtech.com/show/2973/6gbps-sata-performance-amd-890gx-vs-intel...

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)

И ещё https://habr.com/ru/post/78311/

И вот https://serverfault.com/questions/814546/how-to-obtain-read-speeds-of-two-dis...

Вкратце «btrfs only used one disk during reads»

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

«Raid0 interleaves chunks of data so reading from 1 to 100 will read essentially read odd values from disk 1 and even values from disk 2. Raid1 on the other hand is a mirror e.g. duplicate and while I don't know the exact technical reason why raid1 will not on MD perform as fast as raid0 I can assume that it's better for one thread to get „full disk speed“ for what it wants to read instead of having to share the bandwidth (and seeks) with all other threads accessing the disk.»

Так что реально для игорь полезнее raid0, если нужно именно в скорость чтения упороться. А ещё полезнее raid10, но нужно четыре диска.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 4)
Ответ на: комментарий от Jameson

Хватит, остановись пожалуйста.

Ладно.

mord0d ★★★★★
()
Ответ на: комментарий от chaos_dremel

Есть такое понятие как Write penalty.

Этот момент я как-то проморгал.

mord0d ★★★★★
()
Ответ на: комментарий от Jameson

на неодинаковых дисках

На неодинаковых по скорости. Не надо забывать про износ (который никогда не бывает равномерным, даже если диски из одной партии).

И да, я ведь остановился. ☺

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Я чот грубанул, сорян. Вообще тут такое дело. Поскольку у каждого диска свой кэш, свои собственные мозги и разная карта износа\калибровка даже «одинаковые» диски слегка неодинаковые. Поэтому абсолютно синхронно писать на них невозможно технически. mdadm использует хитрую и сложную для изложения здесь технологию балансировки этой разницы при записи, стараясь держать разницу между дисками в «мозгах» по минимуму. Но в случае жёсткого аппаратного зависона raid1 после перезагрузки может оказаться в неконсистентном состоянии, при котором данные на дисках не совпадают и непонятно какой из них считать «истинным» и использовать для восстановления. Это происходит потому что софтрайд не имеет кэшпамяти подпёртой батарейкой, ака BBU. В результате требуется ручное восстановление райда, автоматом он не соберётся. Такое бывает редко, но бывает, так что softraid1 тоже говно местами. Если диски сильно разные шансы в это вляпаться возрастают...

Jameson ★★★★★
()
Ответ на: комментарий от mord0d

Дык он так то прав в итоге, это я тупанул, точнее забыл что mdadm реализация raid1 ускоряет многопоточное чтение, а одним потоком тянет только с одного шпинделя. btrfs raid1 почти так же работает, только он между шпинделями балансирует не потоки, а читающие данные pid. Так что для игорь действительно лучше raid0 или raid10 для слегка богатых. То что надёжности raid0 не даёт - да и хрен с ним, если там библиотеку steam например хранить. Ну грохнется райд, можно заново собрать с новым диском и перекачать игори по новой.

Jameson ★★★★★
()
Ответ на: комментарий от chaos_dremel

btrfs balance status /mountpoint
что нет уже операций.
когда до этого запускал проверку статуса - были, ползла.
для пущей честности я ещё дефраг перед тестами прогонял, кстати.

там не полностью 2 тб, по партиции с каждого винта.

darkenshvein ★★★★★
() автор топика

А не лучше ли поставить максимум RAM, который поддерживает проц и материнка?

И на сторадж станет совершенно наплевать, даже если он состоит из одного древнего диска 5400 RPM. Просто перед запуском игры сделать cat /файлы/игры >/dev/null и дальше всё будет читаться из page cache. А запись играм практически не нужна.

im-0
()
Ответ на: комментарий от mord0d

отказываться можно от какого-либо предложения. Когда тебе говорят формулу «предлагаю то-то». Но я ничего не предлагал конкретно тебе. А то, что ответ на текст твоего сообщения, так дело не в тебе, дело в тексте.

И мне уже ответили по делу и развёрнуто (о том, что чтение на RAID-1 не страдает, а запись в играх не нужна). Тебе просто нечего сказать в диалоге и вести ты его не сможешь, даже если захочешь.

Einstok_Fair ★★☆
()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Jameson

Поэтому абсолютно синхронно писать на них невозможно технически.

Причём здесь писать? Топикстартеру ж вроде для игр, а там запись раз в сто лет во время установки, плюс небольшая дозапись всяких сохранений и логов. Моё предположение о том, что чтение важнее записи, топикстартер не опроверг и не подтвердил, потому исхожу из среднестатистического — чтение приоритетнее записи.

С записью я не прав, признаю. Никогда не копал в RAID-5/RAID-6 на предмет как там это устроено по причине отсутствия необходимости в этой информации (софтварные RAID-5/RAID-6 — это такое себе, а после хардварных RAID мне ещё долго отпиваться нейролептиками).

mdadm использует хитрую и сложную для изложения здесь технологию балансировки этой разницы при записи, стараясь держать разницу между дисками в «мозгах» по минимуму. Но в случае жёсткого аппаратного зависона raid1 после перезагрузки может оказаться в неконсистентном состоянии, при котором данные на дисках не совпадают и непонятно какой из них считать «истинным» и использовать для восстановления.

В ZFS это очень аккуратно обошли дропом недописанных или битых коммитов после аварии.

Это происходит потому что софтрайд не имеет кэшпамяти подпёртой батарейкой, ака BBU.

А толку от кэшей, если данные не дошли? Если падает машина полностью, не успев дослать данные целиком, какое поведение будет у хардварного RAID? Я не ковырял, но тут либо дроп коммита, либо, если производитель головой ударился, принятие данных за валидные и превращение всего в тыкву (прямо как в mdadm).

В результате требуется ручное восстановление райда, автоматом он не соберётся. Такое бывает редко, но бывает

А ещё контроллер может глюкануть (я не стану закидывать какахами определённых производителей), и превратить всё в тыкву.

так что softraid1 тоже говно местами

Если объективно, у всего есть свои плюсы и минусы. И свои юзкейсы.

Если диски сильно разные шансы в это вляпаться возрастают…

Иногда бывает что начальство не хочет, бухгалтерия не может, а админу пофиг.

mdadm реализация raid1 ускоряет многопоточное чтение

btrfs raid1 почти так же работает

Даже если в btrfs исправили его рандомные превращения в тыкву (это было давно, потому как бы должны уже), конвертировать пул вместо пересоздания — это какое-то вынимание гланд через задницу. Не может такое обойтись без последствий.

btrfs raid1 почти так же работает

действительно лучше raid0

Погоди, что? Откуда взялся RAID-0?

или raid10 для слегка богатых

А вот тут всеми лапками «за».

То что надёжности raid0 не даёт - да и хрен с ним, если там библиотеку steam например хранить.

В условиях о надёжности ничего не сказано, потому как бы очевидно. RAID-5/RAID-6 тоже надёжности не дают.

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

Софтварный может грохнуться и без смерти диска. ☺

mord0d ★★★★★
()
Ответ на: комментарий от im-0

А не лучше ли поставить максимум RAM, который поддерживает проц и материнка?

И на сторадж станет совершенно наплевать, даже если он состоит из одного древнего диска 5400 RPM. Просто перед запуском игры сделать cat /файлы/игры >/dev/null и дальше всё будет читаться из page cache. А запись играм практически не нужна.

Это даст прирост только на старте. Если работают какие-то сервисы, работающие с дисками, page cache быстро уйдёт в небытие, и через час-другой игры будет то же самое, что и без.

Плюс пока эти, скажем, 30G прочитаются (с 5400RPM диска, ага) — пройдёт столько времени, что играть отпадёт свякое желание.

Так что бред.

mord0d ★★★★★
()
Ответ на: комментарий от darkenshvein

Даже если в btrfs исправили его рандомные превращения в тыкву (это было давно, потому как бы должны уже), конвертировать пул вместо пересоздания — это какое-то вынимание гланд через задницу. Не может такое обойтись без последствий.

©

mord0d ★★★★★
()

сделай кэш на ssd вместо этого

anonymous
()
Ответ на: комментарий от mord0d

RAID-1 на скорость чтения влияет ровно никак

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

anonymous
()
Ответ на: комментарий от Jameson

В случае разных по скорости чтения дисков читаться будет быстрейший, да.

и узнает он это откуда?

anonymous
()
Ответ на: комментарий от Jameson

raid1 при чтении ведёт себя как raid0

только, если чтение в несколько потоков.

anonymous
()
Ответ на: комментарий от Jameson

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от mord0d

Никогда не копал в RAID-5/RAID-6
RAID-5/RAID-6 тоже надёжности не дают.

тебя же просили остановиться

anonymous
()
Ответ на: комментарий от Jameson

теоретически райд1 на скорость чтения влияет

в идеальных условиях. у тса условия не идеальные — множественность пользователей + неравномерная нагрузка

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.