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;
}

할당된 runtime은 quota만큼 다시 refill된다.

results matching ""

    No results matching ""