스케줄러가 FreeBSD에서 특정 커널을 사용하지 못하도록 방지

스케줄러가 FreeBSD에서 특정 커널을 사용하지 못하도록 방지

이 유틸리티를 통해 cpuset(1)프로세스를 특정 코어에 고정하는 것이 가능한 것 같습니다. 다른 모든 프로세스(현재 및 미래 프로세스)에 특정 코어를 사용하지 않도록 스케줄러에 지시할 수 있습니까?

답변1

당신은 읽을 수있다오래된스케줄러가 들어있어요FreeBSD 운영 체제의 프로세스 관리

새로운"ULE 스케줄러FreeBSD 5에 도입되었지만 7.1까지는 기본적으로 활성화되지 않았습니다. 설명하는 논문을 찾을 수 있습니다.여기. 이를 통해 스케줄러의 작동 방식을 더 잘 이해할 수 있습니다.

힌트:CPU 선호도를 연구할 때는 CPU 토폴로지를 이해하는 것이 가장 좋습니다.

  $ sysctl kern.sched.topology_spec

힌트: 프로그램 통계-S 플래그를 사용하면 사용된 CPU 세트를 간략하게 설명하는 데도 도움이 됩니다.

 $ procstat -a -S

예 - "cpusets"를 관리하여 스케줄러에게 코어를 "피하도록" 지시할 수 있습니다. 예제는 매뉴얼 페이지를 확인하세요.CPU 그룹(1). CPUset 1이 기본 설정입니다. 컬렉션을 수정하기만 하면 됩니다.

~에서남성페이지:

처음 4개의 CPU만 포함하고 나머지는 유휴 상태가 되도록 모든 스레드가 기본적으로 위치한 CPUset을 수정합니다.

cpuset -l 0-3 -s 1

CPU가 8개 있다고 가정하면 이제 기본 CPU 세트의 모든 스레드를 처음 4개로 이동했습니다. 이렇게 하면 기본 세트를 수정할 때 나머지 코어가 유휴 상태가 되는 것을 방지할 수 있습니다(기본 프로세스는 세트 1에서 시작됩니다).

나머지 CPU에 대해 새 CPU 세트(예: 2번)를 생성한 다음 필요할 때 할당할 수 있습니다.

관련 정보