On Mon, 2013-03-25 at 13:24 +0800, Michael Wang wrote:
>         if (affine_sd) {
> -               if (cpu != prev_cpu && wake_affine(affine_sd, p,
> sync))
> +               if (cpu != prev_cpu && wake_affine(affine_sd, p,
> sync)) {
> +                       /*
> +                        * wake_affine() stuff try to pull wakee to
> the cpu
> +                        * around waker, this will benefit us if the
> data
> +                        * cached on waker cpu is hot for wakee, or
> the extreme
> +                        * ping-pong case.
> +                        *
> +                        * However, do such blindly work too
> frequently will
> +                        * cause regression to some workload, thus,
> each time
> +                        * when wake_affine() succeed, throttle it for
> a while.
> +                        */
> +                       wake_affine_throttle(p);
>                         prev_cpu = cpu;
> +               }

How about only throttling when wake_affine() starts returning false? At
that point its lost its benefit.

Also, why not place this inside wake_affine() like you did the throttled
test.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to