커널 시작 매개변수 nohz_full과 isolcpus=nohz의 차이점은 무엇입니까?

커널 시작 매개변수 nohz_full과 isolcpus=nohz의 차이점은 무엇입니까?

지터에 민감한 프로세스의 CPU 코어를 분리할 때 부팅 매개변수 nohz_full와 cpuset이 자주 사용됩니다 isolcpus(후자가 cpuset을 선호하여 더 이상 사용되지 않지만 여전히 존재한다는 것을 알고 있습니다). 매개변수 isolcpus가 하나 더 있습니다 nohz. 같은 효과가 있는지 궁금합니다 nohz_full.

답변1

초기의,nohz_full커널 매개변수는 (*)만 의미합니다.

가능할 때마다 틱을 중지할 CPU의 지정된 목록을 설정합니다.

언제이기종 CPU목적은 다음과 같습니다(*):

플래그 목록에 지정된 간섭을 격리하기 위해 하나 이상의 CPU를 지정합니다.

폭동표시된 영역은 타이머 규모보다 훨씬 넓습니다.
실제로 작업 대기열이 모든 CPU에서 공유되고 로드 밸런싱을 위해 스케줄러 알고리즘은 해당 CPU 모두에서 실행되어야 합니다. 이는 또한 nohz_full이 isolcpus를 방지하지 못하는 간섭을 포함합니다.

이번 패치(2015년부터) 심지어 다음과 같이 인정합니다.

nohz_full은 isolcpus가 설정된 경우에만 유용합니다. 그렇지 않으면 스케줄러를 주기적으로 실행하여 작업이 다른 코어에서 도난당하는지 확인해야 합니다.

그리고 그랬다:

명령줄에서 nohz_full=xxx로 시작할 때 isolcpus=xxx도 설정한 것처럼 작동하고 nohz_full CPU를 포함하도록 isolcpus 설정을 설정(또는 확장)해야 합니다.

따라서... 이제 지정된 CPU 그룹이 동일하면 이 두 매개변수를 더 이상 지정할 필요가 없다고 생각할 수 있습니다.


(*) 인용하다Linux 커널 사용자 및 관리자 안내서

관련 정보