cfs bandiwidth
cfs bandwidth는..
struct cfs_bandwidth에 의해 표현된다.
per-taskgroup 단위로 사용된다.
task_group 구조체에 embedded되어 관리된다.
생성,초기화,소멸 시점
태스크그룹을 나타내는 자료구조 task_group 구조체에 포함되어 있다. 태스크그룹이 생성될 때 생성이 된다고 볼 수 있다. 초기화도 그 즈음에 초기화된다.
sched_creage_group()
-> alloc_fair_sched_group()
->-> init_cfs_bandwidth()
이래저래 초기화를 진행한다는 얘기를....
kernel/sched/fair.c
void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
{
raw_spin_lock_init(&cfs_b->lock);
cfs_b->runtime = 0;
cfs_b->quota = RUNTIME_INF;
cfs_b->period = ns_to_ktime(default_cfs_period());
INIT_LIST_HEAD(&cfs_b->throttled_cfs_rq);
hrtimer_init(&cfs_b->period_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED);
cfs_b->period_timer.function = sched_cfs_period_timer;
hrtimer_init(&cfs_b->slack_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
cfs_b->slack_timer.function = sched_cfs_slack_timer;
}