Re: >10% performance degradation since 2.6.18

From: Jeff Garzik
Date: Sun Jul 05 2009 - 16:46:39 EST


Herbert Xu wrote:
Jeff Garzik <jeff@xxxxxxxxxx> wrote:
What's the best setup for power usage?
What's the best setup for performance?
Are they the same?

Yes.

Is this a blind guess, or is there real world testing across multiple setups behind this answer?

Consider a 2-package, quad-core system with 3 userland threads actively performing network communication, plus periodic, low levels of network activity from OS utilities (such as nightly 'yum upgrade').

That is essentially an under-utilized 8-CPU system. For such a case, it seems like a power win to idle or power down a few cores, or maybe even an entire package.

Efficient power usage means scaling _down_ when activity decreases. A blind "distribute network activity across all CPUs" policy does not appear to be responsive to that type of situation.


Is it most optimal to have the interrupt for socket $X occur on the same CPU as where the app is running?

Yes.

Same question: blind guess, or do you have numbers?

Consider two competing CPU hogs: a kernel with tons of netfilter tables and rules, plus an application that uses a lot of CPU.

Can you not reach a threshold where it makes more sense to split kernel and userland work onto different CPUs?


If yes, how to best handle when the scheduler moves app to another CPU?
Should we reprogram the NIC hardware flow steering mechanism at that point?

Not really. For now the best thing to do is to pin everything
down and not move at all, because we can't afford to move.

The only way for moving to work is if we had the ability to get
the sockets to follow the processes. That means, we must have
one RX queue per socket.

That seems to presume it is impossible to reprogram the NIC RX queue selection rules?

If you can add a new 'flow' to a NIC hardware RX queue, surely you can imagine a remove + add operation for a migrated 'flow'... and thus, at least on the NIC hardware level, flows can follow processes.

Jeff


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