멀티 코어 4 웨이 서버에서 실행되는 대형 멀티 스레드 C# 응용 프로그램이 있습니다. 현재 우리는 "서버 모드"가비지 수집을 사용하고 있습니다. 그러나 테스트 결과 워크 스테이션 모드 GC가 더 빠릅니다."워크 스테이션"가비지 수집 또는 "서버"가비지 수집을 사용해야합니까?
MSDN says : 서버 API를 사용
관리되는 코드 응용 프로그램은 서버에 최적화 된 가비지 컬렉터 (GC) 대신 기본 워크 스테이션 GC를 사용하여 상당한 혜택을받을 수 있습니다.
워크 스테이션은 기본 GC 모드이며 단일 프로세서 컴퓨터에서만 사용할 수 있습니다. 워크 스테이션 GC는 콘솔 및 Windows Forms 응용 프로그램에서 호스팅됩니다. 실행중인 프로그램과 동시에 전체 (2 세대) 모음을 수행하므로 대기 시간이 최소화됩니다. 이 모드는 클라이언트 응용 프로그램에 유용합니다. 클라이언트 응용 프로그램에서는 인식 성능이 일반적으로 원시 처리량보다 더 중요합니다.
서버 GC는 다중 프로세서 컴퓨터에서만 사용할 수 있습니다. 각 프로세서에 대해 별도의 관리되는 힙 및 스레드를 만들고 병렬로 컬렉션을 수행합니다. 수집 중에는 관리되는 모든 스레드가 일시 중지됩니다 (원시 코드를 실행하는 스레드는 원시 호출이 반환 될 때만 일시 중지됩니다). 이러한 방식으로 서버 GC 모드는 처리량 (초당 요청 수)을 최대화하고 프로세서 수가 증가함에 따라 성능을 향상시킵니다. 특히 4 개 이상의 프로세서가 장착 된 컴퓨터에서 성능이 향상되었습니다.
하지만 성능이 떨어지는 것은 아닙니다. !!!! 누구 조언있어?
DanC. 이것은 GC 모드에 대해 처음 들었습니다. 관련 MSDN 페이지에 대한 링크를 게시 할 수 있습니까? – spender
어떤 종류의 성능이 기대 되는가? 프로그램 Windows GUI 기반 또는 일부 종류의 웹 서비스입니까? –
요하네스에게 감사드립니다. – spender