LINUX.ORG.RU

Настройка Postgres для быстрого SSD

 ,


0

3

Взял у Селектела в тест сервак для тестирования хваленого SSD Intel P4800X.

Написал тест, который в многопотоке делает INSERTы в PostgreSQL по одному (не batch). Получил прирост производительности относительно HDD RAID10 примерно в два раза. Тесты чтения будут позже.

Как выжать все соки из SSD с помощью Postgres? iostat -dx показывает утилизацию SSD ~20%. Предполагаю что проблема с конфигом PostgreSQL,


Файловым кэшом заведует ОС, так что конфиг PostgreSQL вряд кардинально ситуацию поменяет.

Evgueni 👍👍
()
Ответ на: комментарий от NiTr0

Ээээ, в случае PostgreSQL это не так, так как это всего навсего СУБД и его целью не является полная замена ОС. Возможно, я отстал от жизни, но ещё пару-тройку лет по-моему было именно так.

Evgueni 👍👍
()
Ответ на: комментарий от NiTr0

Я не понял ремарки. O_DIRECT/fsync делается по окончанию транзакции для записи изменений и единственный способ ускорить это «в конфиге» это отключить её, что смысла действительно не имеет.

Evgueni 👍👍
()
Ответ на: комментарий от Deleted

процессор насколько грузится ?
упирается ядром ?

Ни одним ядром не упирается в 100%.

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

что в логах? в один поток инсертишь?

Пробовал 100, 200, 500, 2000 потоков. Ситуация не сильно отличается. При 2000 потоках нагрузка на диск уменьшается. Ни один поток не упирается в 100%, cpu idle от 20-30%.

exst
() автор топика

С помощью утилиты fio удалось в random 4k утилизировать диск на 100%. Позже попробую провести fio поверх ФС.

exst
() автор топика

Да ничего ты из постгреса не вытащишь, проходили уже. Он сам по себе такой, поломанный при проектировании, не может утилизировать высокопроизводительный диск на 100%.

Чтобы постгрес получал все преимущества быстрых дисков его надо перепроектировать с нуля.

anonymous
()

Учитывая большинство рекомендаций по использованию SSD, оптимизация будет сведена к созданию пользователя с правами read-only и работой только из-под него.

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

А как, если не секрет? Статья на хабре будет? ;)

Запустил fio с конфигом:

[readtest]
blocksize=4k
filename=/dev/nvme0n1
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32
[writetest]
blocksize=4k
filename=/dev/nvme0n1
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32

Только чтение или только запись также утилизируют накопитель на 100%. Получается около 440kIOPS, что соответствует заявлению производителя. Если сменить libaio на что-то другое (sync, psync, mmap), производительность падает в разы, при этом утилизация близка к 100%.

Также удалось утилизировать диск на 90% в тесте PostgreSQL с двумя чтениями из двух таблиц и записью во вторую таблицу.

Была идея написать статью на хабре, но материала для мало. Все тезисы уместились в эту тему на форуме.

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

Позже выложу. По работе загруз, нет времени.

exst
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.