static void __aggregate_redistribute_shares(struct task_group *tg)
{
	int i, max_cpu = smp_processor_id();
	unsigned long rq_weight = 0;
	unsigned long shares, max_shares = 0, shares_rem = tg->shares;

	for_each_possible_cpu(i)
		rq_weight += tg->cfs_rq[i]->load.weight;

	for_each_possible_cpu(i) {
		/*
		 * divide shares proportional to the rq_weights.
		 */
		shares = tg->shares * tg->cfs_rq[i]->load.weight;
		shares /= rq_weight + 1;

		tg->cfs_rq[i]->shares = shares;

		if (shares > max_shares) {
			max_shares = shares;
			max_cpu = i;
		}
		shares_rem -= shares;
	}

	/*
	 * Ensure it all adds up to tg->shares; we can loose a few
	 * due to rounding down when computing the per-cpu shares.
	 */
	if (shares_rem)
		tg->cfs_rq[max_cpu]->shares += shares_rem;
}
static void __aggregate_redistribute_shares(struct task_group *tg)
{
	int i, max_cpu = smp_processor_id();
	unsigned long rq_weight = 0;
	unsigned long shares, max_shares = 0, shares_rem = tg->shares;

	for_each_possible_cpu(i)
		rq_weight += tg->cfs_rq[i]->load.weight;

	for_each_possible_cpu(i) {
		 
		shares = tg->shares * tg->cfs_rq[i]->load.weight;
		shares /= rq_weight + 1;

		tg->cfs_rq[i]->shares = shares;

		if (shares > max_shares) {
			max_shares = shares;
			max_cpu = i;
		}
		shares_rem -= shares;
	}

	 
	if (shares_rem)
		tg->cfs_rq[max_cpu]->shares += shares_rem;
}