В этой статье «Компьютерный мир» указано, что PostgreSQL может масштабироваться до ограничения на ядро в 64. Означает ли это для одного многоядерного процессора 64 ядра? Или несколько процессоров с меньшим количеством ядер?
Причина, по которой я спрашиваю, заключается в том, что я пытаюсь определить, сколько процессоров PostgreSQL может масштабироваться, но, конечно, это может быть ограничено типом процессора. Тем не менее, я нашел другие статистические данные в других базах данных (т. Е. Microsoft SQL Server здесь заявляет, что может масштабироваться до 320 логических процессоров), и они не указывают их количество ядер. Это очень расплывчатая статистика?
Любые мысли будут высоко ценится. Спасибо!
Ответы:
Нет, это очень точная статистика. «Логический процессор» - это ядро. А суть в том, что не имеет значения, как они распределены по физическим процессорам.
И если вы имеете дело с машиной с большим количеством ядер, чем поддерживаемое число, это не должно быть проблемой с PostgreSQL. Каждое соединение по своей природе является однопоточным *, поэтому любое количество ядер будет ограничивать эффективность и действенность одновременных соединений.
Излишне говорить, что это также означает, что вы должны вкладывать свои деньги в более быстрые ядра, чем в количество ядер, если вы не хотите кластеризовать вещи более сложным способом.
* 2017 Обновление: некоторые запросы (или подзапросы) могут выполняться параллельно .
источник
Needless to say this also means you should put your money in faster cores than quantity of cores unless you want to cluster things in a more complicated method.
<- Я согласен с этим утверждением только в том случае, если количество ядер превышает число одновременно работающих клиентов и число одновременных клиентов вряд ли увеличится. Для производительности очень важно иметь ядро, доступное для каждого бэкэнда Postgres ...Postgres может масштабировать столько процессоров, сколько вы хотите установить, и ваша ОС может эффективно обрабатывать / управлять. Вы можете установить Postgres на 128-ядерный компьютер (или даже на компьютер с 128 физическими процессорами), и он будет работать нормально. Это может даже работать лучше, чем на 64-ядерном компьютере, если планировщик ОС может обрабатывать такое количество ядер.
Было показано, что Postgres линейно масштабируется до 64 ядер (с оговорками: мы говорим о производительности чтения в конкретной конфигурации (диск, ОЗУ, ОС и т. Д.) - у Роберта Хааса есть статья в блоге с хорошим графиком, который Я воспроизвел ниже:
Что важно в этом графике?
Отношение является линейным (или почти таким) до тех пор, пока число клиентов меньше или равно количеству ядер , а затем начинается то, что выглядит примерно как линейно-линейное снижение производительности, поскольку у вас больше клиентских подключений, чем у вас. делать ядра для запуска бэкэндов Postgres, потому что бэкэнды начинают бороться за процессор (средняя нагрузка превышает 1.0 и т. д.).
Хотя это было продемонстрировано только для до 64 ядер, вы можете обобщить, что вы можете продолжать добавлять ядра (и клиентов) и продолжать улучшать производительность, вплоть до ограничения какой-либо другой подсистемы (диск, память, сеть), где процессы больше не работают проблемы с процессором, но вместо этого они ожидают чего-то другого.
(У Haas также есть еще одна статья, в которой они доказали линейную масштабируемость до 32 ядер, в которой есть отличный справочный материал по масштабируемости в целом - настоятельно рекомендуется справочное чтение!)
источник
Другие пояснили, что логический процессор обычно относится к ядру процессора, но я хочу прокомментировать утверждение, что не имеет значения, как ядра распределяются по процессорам.
На кристалле ЦП могут быть кэши, которые совместно используются ядрами или выделены для отдельных или подгрупп ядер. Например, одна общая конфигурация - это выделенный кэш L1 и общий кэш L2. В этом случае масштабируемость одноядерного ЦП может отличаться от двух одноядерных.
Эти эффекты масштабируемости сохраняются в основной памяти, причем машины NUMA демонстрируют поведение, отличное от не-NUMA.
Я указываю на это только потому, что ОП обсуждает вопросы масштабируемости, ответы на которые, как правило, более тонкие, чем «программа X может использовать Y ядер ЦП».
источник
В данном случае они означают несколько процессоров с меньшим количеством ядер ... Некоторые из разговоров о перспективах на будущее. Некоторые говорят о маркетинге.
источник