lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 30 Aug 2010 22:50:31 +0530 From: Srivatsa Vaddagiri <vatsa@...ux.vnet.ibm.com> To: Peter Zijlstra <a.p.zijlstra@...llo.nl> Cc: linux-kernel@...r.kernel.org, Ingo Molnar <mingo@...e.hu>, Paul Turner <pjt@...gle.com>, Chris Friesen <cfriesen@...tel.com>, Vaidyanathan Srinivasan <svaidy@...ux.vnet.ibm.com>, Pierre Bourdon <pbourdon@...ellency.fr> Subject: Re: [RFC][PATCH 1/3] sched: Rewrite tg_shares_up On Sun, Aug 29, 2010 at 12:30:26AM +0200, Peter Zijlstra wrote: > By tracking a per-cpu load-avg for each cfs_rq and folding it into a > global task_group load on each tick we can rework tg_shares_up to be > strictly per-cpu. So tg->load_weight is supposed to represent more or less current task load across all cpus? I see only atomic_add() to it - which means it can only keep growing or remain constant - IOW capturing the historical load even since the task group was started? I was expecting it to reduce based on how a group goes idle, otherwise > +static void update_cfs_shares(struct cfs_rq *cfs_rq) > +{ > + struct task_group *tg; > + struct sched_entity *se; > + unsigned long load_weight, load, shares; > + > + if (!cfs_rq) > + return; > + > + tg = cfs_rq->tg; > + se = tg->se[cpu_of(rq_of(cfs_rq))]; > + if (!se) > + return; > + > + load = cfs_rq->load.weight; > + > + load_weight = atomic_read(&tg->load_weight); > + load_weight -= cfs_rq->load_contribution; > + load_weight += load; > + > + shares = (tg->shares * load); > + if (load_weight) > + shares /= load_weight; this seem incorrect? Even though we have corrected tg->load_weight to reflect current load on 'cfs_rq', tg->load_weight still captures historical load on other cpus and hence could be a large #, making the division inaccurate? Also I wonder how much of a hot spot tg->load_weight would become .. - vatsa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists