Go Scheduler의 M 및 P 생성 이해
Go 스케줄러는 고루틴, OS 스레드(M) 및 컨텍스트가 포함된 모델에서 작동합니다. /프로세서(P). 성능 최적화를 위해 스케줄러는 M과 P의 생성과 사용을 동적으로 관리합니다.
M의 생성
M은 스케줄러가 차단 실행 필요성을 감지하면 생성됩니다. 작업. 예제 코드에서 고루틴은 추가 M 생성을 트리거하는 차단 데이터베이스 작업을 수행합니다. 생성된 M의 정확한 수는 차단된 고루틴 수와 사용 가능한 시스템 리소스에 따라 다릅니다.
생성 of P
P는 새로운 고루틴이 시작될 때 생성됩니다. 그러나 스케줄러는 각 고루틴에 대해 새로운 P를 생성하지 않습니다. 대신 기존 P 인스턴스를 재사용하여 일반적으로 사용 가능한 CPU 수로 설정되는 GOMAXPROCS 값과 동일한 P 수를 고정적으로 유지합니다.
예제 코드에서
테스트 코드에서는 두 개의 배치로 50개의 고루틴을 생성합니다. 데이터베이스 작업이 차단되므로 차단 고루틴을 처리하기 위해 필요에 따라 M이 생성됩니다. 그러나 P 인스턴스가 재사용되므로 시스템의 가상 코어 수를 나타내는 8개의 P만 생성됩니다.
추가 리소스
이에 대한 자세한 내용은 주제에 대해서는 다음 리소스를 참조하세요.
위 내용은 Go 스케줄러는 차단 작업이 있을 때 M 및 P 생성을 어떻게 관리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!