lkml.org 
[lkml]   [2011]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 03/15] sched: introduce primitives to account for CFS bandwidth tracking
    One nitpicking...

    (2011/05/03 18:28), Paul Turner wrote:
    > In this patch we introduce the notion of CFS bandwidth, partitioned into
    > globally unassigned bandwidth, and locally claimed bandwidth.
    >
    > - The global bandwidth is per task_group, it represents a pool of unclaimed
    > bandwidth that cfs_rqs can allocate from.
    > - The local bandwidth is tracked per-cfs_rq, this represents allotments from
    > the global pool bandwidth assigned to a specific cpu.
    >
    > Bandwidth is managed via cgroupfs, adding two new interfaces to the cpu subsystem:
    > - cpu.cfs_period_us : the bandwidth period in usecs
    > - cpu.cfs_quota_us : the cpu bandwidth (in usecs) that this tg will be allowed
    > to consume over period above.
    >
    > Signed-off-by: Paul Turner <pjt@google.com>
    > Signed-off-by: Nikhil Rao <ncrao@google.com>
    > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
    > ---

    (snip)

    > @@ -369,9 +379,45 @@ struct cfs_rq {
    >
    > unsigned long load_contribution;
    > #endif
    > +#ifdef CONFIG_CFS_BANDWIDTH
    > + int runtime_enabled;
    > + s64 runtime_remaining;
    > +#endif
    > #endif
    > };
    >
    > +#ifdef CONFIG_CFS_BANDWIDTH
    > +static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)
    > +{
    > + return &tg->cfs_bandwidth;
    > +}
    > +
    > +static inline u64 default_cfs_period(void);
    > +
    > +static void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
    > +{
    > + raw_spin_lock_init(&cfs_b->lock);
    > + cfs_b->quota = RUNTIME_INF;
    > + cfs_b->period = ns_to_ktime(default_cfs_period());
    > +}
    > +
    > +static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq)
    > +{
    > + cfs_rq->runtime_remaining = 0;
    > + cfs_rq->runtime_enabled = 0;
    > +}
    > +
    > +static void destroy_cfs_bandwidth(struct cfs_bandwidth *cfs_b)
    > +{}
    > +#else
    > +#ifdef CONFIG_FAIR_GROUP_SCHED
    > +static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
    > +void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}

    Nit: why not static?

    > +static void destroy_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
    > +#endif /* CONFIG_FAIR_GROUP_SCHED */
    > +static void start_cfs_bandwidth(struct cfs_rq *cfs_rq) {}
    > +#endif /* CONFIG_CFS_BANDWIDTH */
    > +
    > /* Real-Time classes' related field in a runqueue: */
    > struct rt_rq {
    > struct rt_prio_array active;

    The rest looks good for me.

    Reviewed-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>


    Thanks,
    H.Seto



    \
     
     \ /
      Last update: 2011-05-10 09:21    [W:4.073 / U:0.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site