NUMA와 같은 것은 병렬 프로그래밍에 유망한 것으로 보입니다. 잘못 입력하지 않으면 현재 최신 CPU에 i7처럼 기본 제공 기능이 내장되어 있습니다.CLR이 곧 NUMA를 적용 할 것으로 예상합니까?
CLR에서 곧 NUMA를 적용 할 것으로 예상합니까?
편집 : 이것에 의해 나는 그것을지지하고 그것을 이용한다는 것을 의미합니다.
NUMA와 같은 것은 병렬 프로그래밍에 유망한 것으로 보입니다. 잘못 입력하지 않으면 현재 최신 CPU에 i7처럼 기본 제공 기능이 내장되어 있습니다.CLR이 곧 NUMA를 적용 할 것으로 예상합니까?
CLR에서 곧 NUMA를 적용 할 것으로 예상합니까?
편집 : 이것에 의해 나는 그것을지지하고 그것을 이용한다는 것을 의미합니다.
NUMA는 하드웨어 아키텍처이므로 CLR에서 직접 채택해야하는 것은 아닙니다. 자세한 내용은 NUMA FAQ.
을 참조하십시오. 즉, 소프트웨어가 아키텍처를 인식하게하는 것이 장점입니다. CLR 팀에있는 사람들은 캐시 일관성 문제 등을 알고있는 것 같아서 이에 대한 최적화가 있습니다. 또한 C# 4의 작업 병렬 라이브러리에서 스케줄러 디자인은 NUMA 아키텍처의 장점을 활용할 수있는 가능성이 있습니다.
의미에서 NUMA는 CLR의 메모리 모델과 직각을 이룹니다. 즉, 하드웨어/OS에는 액세스 방법이 있고 CLR에는 메모리 모델 요구 사항이 있으며 CLR 구현 자의 도움이 필요합니다. 실제로 이것은 어려우며 there are flaws in the current implementation입니다. 그러나 CLR이 이미 NUMA를 지원하는 하드웨어에서 실행되기 때문에 "곧 NUMA를 적용하십시오."라는 의미가 확실하지 않습니다.?
내가 아는 한 CLR은 기본 OS에서 사용하는 것과 동일한 첫 터치 메모리 할당 전략을 사용합니다. 가상 페이지를 터치하는 첫 번째 스레드는 스레드가 발생하는 CPU에 해당하는 NUMA 노드로 맵핑됩니다 (CLR이 아닌 OS에 의해). 개발자가 나중에 다른 CPU의 스레드가 응용 프로그램의 수명 동안 나중에 동일한 NUMA 노드에있는 동일한 메모리를 사용할 가능성이 있습니다. –
NUMA를 하드웨어 아키텍처로 강조하면서 지금까지의 모든 대답이 정확합니다. 동시성과 CLR에 this article by Joe Duffy이 될 것입니다.
NUMA는 기본적으로 프로세서 당 메모리 컨트롤러가 있습니다. 인텔 퀵 패스와 AMD HyperTransport가 있습니다. 내가 아는 한, 현재 마더 보드가 없습니다. i7이나 Phenom의 경우 하나 이상의 CPU를 지원할 것입니다.
어쨌든이 수치는 CLR과 아무 관련이 없습니다. 시스템을 활용할 수 있습니다.
그건 사실이 아니야. NUMA를 인식하는 것은 힙 관리자 (또는이 경우 CLR 메모리 관리자)의 몫입니다. OS는 Windows 및 Linux가 사용하는 현재의 첫 번째 터치 전략보다 더 나은 결정을 내리기에 충분한 정보를 얻지 못할 것입니다. http://stackoverflow.com/questions/9439402/array-memory-management를 참조하십시오. –
"캐시 일관성 문제를 알고있는 것 같습니까?"및 "유망한 스케줄러 설계 ..."에 대한 참조가 있습니까? 나는 더 많이 읽고 싶다. –
FYI : "캐시 일관성"은 소프트웨어 문제가 아닙니다. 주류 NUMA는 모두 ccNUMA (캐시 일관성 NUMA)이기 때문에 인텔과 AMD는이를 해결했습니다. 그러나 어떤 소프트웨어가 해결해야하는지는 스레드/프로세스가 실행되는 코어/CPU (선호도)에 따라 메모리를 할당하는 위치입니다. –