Чем больше потоков, тем меньше IOPS?
Я только начал пробовать AWS. У меня есть микро-экземпляр Postgres на RDS, и я запускаю сканер на c4.large. Когда у меня есть только один паук (одна нить), я получаю около 10 записей IOPS. но если два паука (2 потока) были развернуты, я получаю около 7 операций записи IOPS. Если я правильно понимаю, так как я выделил 20 ГБ, максимальное количество операций ввода-вывода в секунду должно быть в сумме 60IOPS. Я прикрепил мониторинг ниже.
Когда был развернут только один паук:
Когда второй паук был развернут рядом с:
Обратите внимание на снижение со средней 10 операций ввода-вывода записи до средней записи 7 операций ввода-вывода в секунду.
Любая помощь будет высоко ценится.
1 ответ
Какой тип ввода / вывода вы используете? Это механический или флэш (SSD)?
В случае механического бэкенда вы наблюдаете ожидаемое поведение: Postgres - это приложение с синхронизированной записью, и это означает, что даже если вы увеличите количество запущенных потоков, запись в полете (глубина очереди) останется низкой. В то же время вы постоянно заставляете головки дисков перемещаться (как правило) в очень разные места.
Другими словами, вы выполняете более тяжелую загрузку на вашем диске без выгоды, которая возникает при большей глубине очереди.
Именно по этой причине базы данных часто развертываются на серверах с кэш-памятью обратной записи с резервным питанием от батареи: кэш-память обратной записи поглощает несколько записей и объединяется, обеспечивая более высокую глубину очереди для дисковых операций.