关于调度参数的疑问
yinghaoyu opened this issue · 1 comments
yinghaoyu commented
请问一下,这里针对不同策略的计算是有什么依据吗(根据什么原理确定的参数)?
SchedulingParameters GetSchedulingParameters(SchedulingProfile profile,
std::size_t numa_domains,
std::size_t available_processors,
std::size_t desired_concurrency) {
if (profile == SchedulingProfile::ComputeHeavy) {
return GetSchedulingParametersForComputeHeavy(desired_concurrency);
} else if (profile == SchedulingProfile::Compute) {
return GetSchedulingParametersForCompute(numa_domains, available_processors,
desired_concurrency);
} else if (profile == SchedulingProfile::Neutral) {
// @sa: `SchedulingProfile` for the constants below.
return GetSchedulingParametersOfGroupSize(numa_domains, desired_concurrency,
16, 32);
} else if (profile == SchedulingProfile::Io) {
return GetSchedulingParametersOfGroupSize(numa_domains, desired_concurrency,
12, 24);
} else if (profile == SchedulingProfile::IoHeavy) {
return GetSchedulingParametersOfGroupSize(numa_domains, desired_concurrency,
8, 16);
}
FLARE_UNREACHABLE("Unexpected scheduling profile [{}].",
underlying_value(profile));
}
0x804d8000 commented
计算密集的一般有一定的处理耗时,为了避免worker不均衡导致的长尾请求,优先考虑更大的group size。io密集的因为都处理的很快,可以容忍一定的不均衡,所以优先考虑调度效率。