CFS를 이해했다고 생각했는데...
예약된 대기 시간은 실행 가능한 각 프로세스가 프로세서의 해당 공유를 수신할 것으로 예상하는 시간입니다. Linux 커널 코드에서는 다음을 제공합니다.
(기본값: 6ms * (1 + ilog(ncpus)), 단위: 나노초)
1개 CPU 머신의 경우 6ms가 걸리고, 4코어 머신의 경우 18ms가 걸립니다. Rpi Zero 원코어와 Rpi 4 쿼드코어에서 확인해 보니 그런 것 같습니다. 그러나 쿼드 코어가 있는 Pi 4는 0보다 더 강력한 시스템입니다. 확실히 예약 대기 시간이 3배가 아니라 더 작을 것이라고 예상할 수 있습니까? 두 경우 모두 sched_min_capsularity를 살펴보면 둘 다 8개의 작업을 처리한 다음 0.75ms와 2.25ms의 고정 시간 조각으로 대체됩니다. 나는 이것 때문에 분명히 혼란스러워합니다 ...
답변1
당신은 확실히 계획된 지연이 3배 더 큰 것보다 3배 더 작을 것이라고 예상할 것입니다.
이것이 _NONE, _LOG로 "수정"된 이유입니다. 또는 _LINEAR.
SMP의 개념을 생각해보면나뉘다, CPU를 추가하는 대신. 이렇게 하면 전반적인 성능을 얻을 수는 없지만 여전히 더 나은 응답성을 얻을 수 있습니다.
이 짧은 함수("마침표")는 두 가지 모두를 사용합니다.최소 세분성그리고숨어있는. 다시 포맷했습니다. 나는 당신이 C를 이해하기 위해 C에 대해 아무것도 알 필요가 없다고 생각합니다.너무 가능하지 않음힌트:
static u64 __sched_period(unsigned long nr_running)
{
if (unlikely(nr_running > sched_nr_latency))
return nr_running * sysctl_sched_min_granularity;
else
return sysctl_sched_latency;
}
마지막으로, 사물보다 단어에 대한 더 많은 정보: Wikipedia, CFS:
...이것원자 단위개별 프로세스의 CPU 점유율을 할당합니다(따라서이전 시간 조각 개념)
저것추가의남아 있는 단어는 다음과 같습니다 kernel/sched/fair.c
.
* (to see the precise effective timeslice length of your workload,
* run vmstat and monitor the context-switches (cs) field)
값6밀리초,0.75밀리초(=1/8) 그리고24밀리초(= ncpus=8에 대해 수정된 _LOG)할 수 있는IMHO, 그것을 주기, 즉 시간 조각으로 해석하세요. 이를 헤르츠(Hertz)로 환산하면 Kconfig.hz
100HZ(서버)부터 1000HZ(고응답)까지의 범위가 일치합니다.
1/.00075 s
1333.3 Hz
1초에 1,000개 이상의 최소 단위 "슬라이스"를 수용할 수 있습니다.
1/.006 s
166.6 Hz
166개의 수정되지 않은 대기 시간 "슬라이스"는 100HZ "서버"와 250HZ "손상" 사이에 있습니다.
1/.024 s
41.6 Hz
8개 코어에 로그 수정을 적용하면 각 코어가 컨텍스트 전환을 4배까지 줄일 수 있지만 "유효 대기 시간"은 여전히 낮습니다.
이발소와 비교했을 때, 새로운 고객이 10분 이상 기다릴 필요가 없도록 하고 싶습니다. 이것은 당신이해야한다는 것을 의미합니다잡다10분마다 현재 고객이 자리에 앉습니다. 적어도 인사 시간에는요.
좌석이 4개 있고 이발사가 있는 매장에서는 그 10분을 단축할 수 있습니다. 4명의 이발사가 각각 캐비닛에서 일하며 40분마다 멈춰서 살펴보기만 하면 됩니다. 신규 고객은 이전처럼 평균 10분만 기다리면 됩니다.
이는 대기 시간의 완전한 "선형" 수정입니다.N을 곱한다.
그러나 최악의 시나리오에서는 네 사람 모두 동시에 신규 고객을 체크인하게 됩니다. 왜냐하면 동시에 시작하기 때문입니다. 이 시간 이후에 고객이 입장하면 서비스를 받기까지 39분을 기다려야 할 수도 있습니다.
따라서 절충안으로 N을 곱하는 대신로그(N)로.
1 + ilog(N)
이는 1+ilog(4) = 1+2가 되므로 4명의 이발사는 이발 시간을 10분에서 30분(40분이 아닌)으로 연장할 수 있습니다. 함께 10분 지연을 달성합니다.
4배에서 16으로, 50분으로만 연장됩니다. "수정"은 대수적이며 다음과 같습니다 + 1
.