이 Computer World 기사 에서 PostgreSQL은 64 개의 코어 제한까지 확장 할 수 있음을 지정합니다. 이는 64 코어 멀티 코어 프로세서 하나에 해당됩니까? 아니면 코어 수가 적은 다중 프로세서?
내가 묻는 이유는 PostgreSQL이 확장 할 수있는 프로세서의 양을 찾으려고 노력하기 때문이지만 물론 프로세서 유형에 국한 될 수 있습니다. 그러나, 나는 다른 데이터베이스에서 다른 통계를 찾아 봤는데 (예 : Microsoft SQL Server는 여기 가 최대 320 개의 논리 프로세서를 확장 할 수 있습니다 진술) 그들은 코어의 자신의 수를 지정하지 마십시오. 매우 모호한 통계입니까?
어떤 생각이라도 대단히 감사하겠습니다. 감사!
답변
아닙니다. 매우 정확한 통계입니다. “논리 프로세서”는 핵심입니다. 그리고 핵심은 단지 물리적 프로세서에 어떻게 분산되어 있는지는 중요하지 않습니다.
그리고 지원되는 수보다 많은 코어를 가진 머신을 다루는 경우 PostgreSQL에는 문제가되지 않습니다. 각 연결은 본질적으로 단일 스레드 *이므로 코어 수에 관계없이 동시 연결의 효율성과 효율성을 제한 할 수 있습니다.
말할 것도없이, 더 복잡한 방법으로 물건을 묶지 않으려면 돈을 코어 수보다 더 빠른 코어에 넣어야합니다.
* 2017 업데이트 : 일부 쿼리 (또는 하위 쿼리)가 병렬로 실행될 수 있습니다 .
답변
Postgres는 설치하려는 프로세서 수만큼 확장 할 수 있으며 OS는 효과적으로 처리 / 관리 할 수 있습니다. 128 코어 시스템 (또는 128 개의 물리적 프로세서가있는 시스템)에 Postgres를 설치할 수 있으며 제대로 작동합니다. 이 수 는 OS 스케줄러가 많은 코어를 처리 할 수 있는지 더 나은 64 코어 시스템보다 작동합니다.
Postgres는 최대 64 코어까지 선형으로 확장되는 것으로 나타났습니다 (주의 사항 : 우리는 특정 구성 (디스크, RAM, OS 등)에서 읽기 성능에 대해 이야기하고 있습니다 -Robert Haas는 멋진 그래프가있는 블로그 기사를 가지고 있습니다 아래를 재현했습니다.
이 그래프에서 중요한 것은 무엇입니까?
클라이언트 수가 코어 수 보다 작거나 같으면 관계가 선형 (또는 거의 동일) 한 다음 클라이언트 연결이 많을수록 성능 이 대략적으로 로그 선형으로 감소 하기 시작 합니다. 백엔드가 CPU와 싸우기 시작하기 때문에 Postgres 백엔드를 실행하기 위해 코어를 수행하십시오 (부하 평균이 1.0 이상 등).
최대 64 개의 코어에 대해서만 시연 되었지만 프로세스가 더 이상없는 다른 하위 시스템 (디스크, 메모리, 네트워크)의 한계까지 코어 (및 클라이언트)를 계속 추가하고 성능을 계속 향상시킬 수 있음을 일반화 할 수 있습니다. CPU 경합 문제가 있지만 대신 다른 것을 기다리고 있습니다.
( 또한 Haas는 일반적으로 확장성에 대한 훌륭한 참조 자료가있는 32 코어에 대한 선형 확장 성을 입증하는 또 다른 기사 를 가지고 있습니다.
답변
다른 사람들은 논리 프로세서가 일반적으로 CPU 코어를 언급한다고 밝혔지만 코어가 CPU에 어떻게 퍼져 있는지는 중요하지 않다는 진술에 대해 언급하고 싶습니다.
코어간에 공유되거나 단일 또는 하위 그룹의 코어 전용 캐시를 CPU 다이에 가질 수 있습니다. 예를 들어 하나의 공통 구성은 전용 L1 캐시와 공유 L2 캐시입니다. 이 경우 단일 듀얼 코어 CPU의 확장 성은 두 개의 단일 코어 CPU와 다를 수 있습니다.
이러한 확장 성은 NUMA 머신이 NUMA 이외의 다른 동작을 나타내는 메인 메모리에 계속 영향을 미칩니다.
OP가 확장성에 대해 논의하고 있기 때문에 이것 만 지적합니다. 그 대답은 일반적으로 “프로그램 X는 Y CPU 코어를 사용할 수 있습니다”보다 더 미묘한 차이가 있습니다.
답변
이 경우 코어 수가 적은 여러 프로세서를 의미합니다. 일부 대화는 미래를 보장합니다. 일부는 마케팅이 가능합니다.