В этом Статья Computer World, он указывает, что PostgreSQL может масштабироваться до предела ядра в 64. Означает ли это для одного многоядерного процессора из 64 ядер? Или несколько процессоров с меньшим количеством ядер?
Причина, по которой я спрашиваю, заключается в том, что я пытаюсь выяснить, до какого количества процессоров PostgreSQL может масштабироваться, но, конечно, это может быть ограничено типом процессора. Однако я нашел другую статистику в других базах данных (например, Microsoft SQL Server Вот заявляя, что он может масштабироваться до 320 логических процессоров), и они не указывают количество ядер. Это очень расплывчатая статистика?
Любые мысли были бы очень признательны. Спасибо!
Postgres может масштабироваться до любого количества процессоров, которое вы хотите установить, и ваша ОС может эффективно справляться / управлять. Вы можете установить Postgres на 128-ядерный компьютер (или даже на компьютер со 128 физическими процессорами), и он будет работать нормально. Это может даже лучше, чем на 64-ядерной машине, если планировщик ОС может обрабатывать такое количество ядер.
Postgres был показан масштаб линейно до 64 ядер (с оговорками: мы говорим о производительности чтения в конкретной конфигурации (диск, ОЗУ, ОС и т. д.) - У Роберта Хааса есть статья в блоге с красивым графиком который я воспроизвел ниже:
Отношения линейны (или почти) до тех пор, пока Количество клиентов меньше или равно Количество ядер, а затем начинается то, что выглядит примерно лог-линейным уменьшение с точки зрения производительности, поскольку у вас больше клиентских подключений, чем ядер для запуска серверных программ Postgres, потому что они начинают бороться за ЦП (средняя загрузка превышает 1,0 и т. д.).
Пока это было только продемонстрировал для 64 ядер, вы можете обобщить, что вы можете продолжать добавлять ядра (и клиентов) и продолжать улучшать производительность до предела какой-либо другой подсистемы (диск, память, сеть), где процессы больше не имеют проблем с процессором, но вместо этого ожидая чего-то другого.
(У Haas также есть другая статья, в которой доказана линейная масштабируемость до 32 ядер. в котором есть отличные справочные материалы по масштабируемости в целом - настоятельно рекомендуется прочитать справочную информацию!)
Нет, это очень точная статистика. «Логический процессор» - это ядро. А ядро - это просто так, неважно, как они распределены по физическим процессорам.
И если вы имеете дело с машиной с большим количеством ядер, чем поддерживаемое количество, это не должно быть проблемой для PostgreSQL. Каждое соединение по своей сути однопоточный* Итак, какое бы количество ядер у вас ни было, это ограничивает эффективность одновременных подключений.
Излишне говорить, что это также означает, что вам следует вкладывать деньги в более быстрые ядра, чем в количество ядер, если вы не хотите кластеризовать вещи более сложным методом.
* Обновление 2017 г .: Некоторые запросы (или подзапросы) могут выполняться параллельно.
Другие пояснили, что логический процессор обычно относится к ядру ЦП, но я хочу прокомментировать заявление о том, что не имеет значения, как ядра распределены по ЦП.
У вас могут быть кеши на кристалле ЦП, которые являются общими для ядер или предназначены для одного или подгрупп ядер. Например, одна общая конфигурация - это выделенный кэш L1 и общий кеш L2. В этом случае масштабируемость одного двухъядерного процессора может отличаться от масштабируемости двух одноядерных процессоров.
Эти эффекты масштабируемости продолжаются в основной памяти, при этом машины с NUMA ведут себя иначе, чем машины без NUMA.
Я указываю на это только потому, что ОП обсуждает вопросы масштабируемости, ответы на которые, как правило, более тонкие, чем «программа X может использовать Y ядер ЦП».
В данном случае они имеют в виду несколько процессоров с меньшим количеством ядер ... Некоторые разговоры ориентированы на будущее. Некоторые говорят о маркетинге.