>  기사  >  백엔드 개발  >  Go Scheduler는 언제, 왜 새로운 M 및 P 프로세서를 할당합니까?

Go Scheduler는 언제, 왜 새로운 M 및 P 프로세서를 할당합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-30 17:36:03894검색

When and Why Does the Go Scheduler Allocate New M and P Processors?

Go Scheduler가 새로운 M 및 P 프로세서를 할당하는 시기와 이유

Go 런타임의 스케줄링 모델을 이해하는 것은 애플리케이션 성능을 최적화하는 데 중요합니다. 이 모델의 주요 측면 중 하나는 M(기계)과 P(프로세서)의 할당입니다.

M과 P는 언제 생성됩니까?

M 프로세서는 언제 생성됩니까? :

  • 새 고루틴이 시작됩니다(예비 유휴 M이 없는 경우)
  • A 시스템 호출의 기존 M 블록(M으로 알려진 새 운영 체제 스레드 생성) )

P 프로세서는 모든 로컬 실행 큐가 가득 찼을 때 생성됩니다. 하나의 고루틴이 실행 중이고 실행할 준비가 된 이웃 고루틴이 글로벌 큐에 배치되고 단일 p가 포함됩니다.

블로킹 작업 및 P 재사용

제공된 테스트 코드에서 고루틴은 블로킹 데이터베이스 작업을 수행합니다. 차단 작업은 P 프로세서에서 M 프로세서를 제거합니다.

이 경우 차단된 고루틴을 처리하려면 새로운 M 프로세서를 생성해야 합니다. 초기 8개(가상 코어 수) M 프로세서는 두 번째 배치에 충분하지 않습니다. 새로운 M 프로세서는 필요에 따라 할당됩니다.

추가 리소스

  • https://www.programmersought.com/article/79557885527/
  • https://blog.golang.org/go-goroutine-os-thread-and-cpu-management

위 내용은 Go Scheduler는 언제, 왜 새로운 M 및 P 프로세서를 할당합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.