Я только что подготовил выделенный сервер для singlehop.
Я провожу несколько тестов, чтобы узнать, чего ожидать с точки зрения производительности. На стороне ввода-вывода (с 4 дисками по 1 ТБ в RAID 10) я получаю:
write-cache disabled
200 MB/s read throughput
30 MB/s write throughput
Я думал, что это действительно мало по сравнению с моим настольным HD, который дает 150-150 или около того. Я побеседовал с ними, и они предложили включить кеш записи. Новые результаты:
write-cache enabled
280 MB/s read
260 MB/s write
что здорово и почти означает, что мне придется добавить BBU за дополнительную ежемесячную плату.
Нормально ли, если пропускная способность записи составляет 1/4 от обычного диска на RAID10, если у вас нет кеша записи? Кажется, будто это намеренно плохо - заставлять вас мириться с BBU. Буду доволен нормальной нерейдовой производительностью 150/150.
ОБНОВИТЬ: Они смотрят на это сейчас и видят, что-то не так. Я дам Ахамату принятый ответ, поскольку он сломался, когда это 8-кратное падение повлияло на рабочую нагрузку сервера, а когда - нет. Обновится снова, если я получу больше данных. +1 за другие ответы. Спасибо.
ОБНОВЛЕНИЕ2: Кажется, что-то не так с оборудованием. Переехал на новую машину с идентичными характеристиками и со скоростью записи 80 МБ / с без кеша с обратной записью. 250 МБ / с с включенным кешем. так что 3-кратное падение производительности и разумная пропускная способность без этого.
Да, вам нужен кеш-блок с автономным питанием. Скорость записи без него обычно низкая. Если вашему приложению требуется такая производительность, вам нужно будет заплатить ...
Производительность в реальных приложениях будет варьироваться в зависимости от характера приложения.
Асинхронная запись будет идти в ОЗУ, в то время как у вас есть доступная для буферизации записи. Очевидно, что запись в ОЗУ будет происходить значительно быстрее, чем на диск. Это значение по умолчанию для большинства (всех?) Современных операционных систем. Если у вас достаточно ОЗУ для записи, пока она не будет сброшена на диск, тогда все операции записи будут выполняться очень быстро. Однако есть период времени, когда потеря питания приводит к потере данных. Буферизация записи на диск с резервным питанием от батареи сокращает (но не исключает полностью) этот период.
Синхронная запись должна быть зафиксирована на диск до того, как запись может вернуться, и это значительно медленнее. Это режим по умолчанию для NFS и некоторых других приложений. При синхронной записи буферизация записи на диск с резервным питанием от батареи значительно увеличивает кажущуюся производительность записи и устраняет риск потери данных из-за сбоев питания. Однако обратите внимание, что записи по-прежнему идут в энергозависимую память, она просто была перемещена в память платы диска, а не в основную память. ZFS решила эту проблему другим способом, используя SSD ZIL, который фиксирует SSD и возвращает операцию записи, а затем перемещает ее на вращающиеся диски.
Так что вам действительно нужно посмотреть на свое приложение. Большинство ваших операций записи синхронны или асинхронны? Для асинхронного режима вы можете обойтись без больших объемов оперативной памяти. Для синхронной работы вам понадобится кэш записи с резервным питанием от батареи (но ZFS может предоставить более дешевое решение).
В любом случае нужно кеширование записи.
В сценарии RAID10 это действительно медленно даже без кеша с обратной записью.
Какой инструмент вы пытаетесь использовать для измерения? Для этого я рекомендую Phoronix.
На дисках SATA RAID10 1 ТБ скорость последовательной записи должна быть не менее 80-100 МБ / с, а в случайном порядке она не должна опускаться ниже 50 (конечно, это также зависит от параллелизма).