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 ★★★★★
()
Ответ на: комментарий от Evgueni

как минимум WALпишется с O_DIRECT/fsync. иначе - это не СУБД а решето с вероятностным сохранением данных.

NiTr0 ★★★★★
()
Ответ на: комментарий от 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 ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.