Изменения

Перейти к: навигация, поиск

Производительность Ceph

867 байтов добавлено, 14:53, 12 июля 2019
Нет описания правки
* Так что свой RAID контроллер либо переключите в режим passthrough (если он умеет), либо перепрошейте, чтобы умел, либо выкиньте в помойку и купите HBA («RAID без RAID-функционала», например, LSI 9300-8i). Это актуально для всех видов программных хранилок — Ceph, ZFS и т. п.
* Если не выкинули RAID — отключайте все кэши контроллера, чтобы уменьшить влияние прослойки и не страдать при разряде батарейки / перемещении диска в другой сервер. Наверное, в теории можно выжить и с включенным кэшем, но это стрельба себе в ногу.
* Даже если у вас HBA — имейте в виду, что некоторые HBA (в частности, Adaptec) могут всё равно не сбросить кэш корректно и устроить вам Cloudmouse при отключении питания. Но по крайней мере точно известно, что LSI ведут себя нормально.
* У HBA тоже есть предел IOPS. К примеру, у LSI 9211-8i это ~280000 iops на весь контроллер.
* При подключении через SATA или HBA контроллер не забывайте для '''серверных''' SATA дисков сделать {{cmd|hdparm -W 0 /dev/sdX}}, для SAS — {{cmd|1=sdparm --set WCE=0 /dev/sdX}}.
=== O_SYNC vs fsync vs hdparm -W 0 ===
У SATA и SCSI дисков есть два способа сброса кэша: команда FLUSH CACHE и флаг FUA (Force Unit Access) на команде записи. Первый — это явный сброс кэша, второй — это указание записать операцию на диск, минуя кэш. Точнее, у SCSI оно есть, а с SATA ситуация точно не ясна: в спецификации NCQ бит FUA есть, но факту FUA большинством дисков вроде как не поддерживается и, соответственно, эмулируется ядром/контроллером.
По всей видимости, fsync() отправляет диску команду FLUSH CACHE, а открытие файла с O_SYNC устанавливает бит FUA на все команды записи.
А что с NVMe? В NVMe разнообразие чуть меньше — возможность отключить кэш в спецификации не предусмотрена вообще, но точно так же есть команды FLUSH CACHE и бит FUA. При этом по личным наблюдениям FUA часто игнорируется то ли диском, то ли Linux-ом, и <tt>fio -sync=1</tt> выдаёт с NVMe такие же результаты, как и без sync вообще. <tt>-fsync=1</tt> при этом ведёт себя как надо и приземляет производительность туда, где ей самое место (на десктопных NVMe — до тех же 1000—2000 iops).
P.S: Bluestore использует fsync. Filestore использует O_SYNC.
=== Серверные SSD ===
'''Seagate Nytro 1351 XA3840LE10063'''
Диск заполнен почти полностью, на 90-100100 %.
<div style="float: left">
</div>
<div style="clear:both"></div>
 
Если не хотите 288 иопс — отключайте кэш.
=== Ceph HDD+SSD ===

Навигация