Re: [PATCH 08/24] net, diet: Make TCP metrics optional
From: josh@joshtriplett.org
Date: 2014-05-06 19:37:56
Also in:
lkml
On Tue, May 06, 2014 at 11:58:38AM -0700, Tom Herbert wrote:
On Tue, May 6, 2014 at 11:32 AM, Andi Kleen [off-list ref] wrote:quoted
quoted
We simply can not compete with user space, as a programmer is free to keep what he really wants/needs.Not true. With my patches and LTO Linux can be competive with LWIP+socket layer. (about 60K more text). And it's easier to use because it's just the standard interface.quoted
I have started using linux on 386/486 pcs which had more than 2MB of memory, it makes me sad we want linux-3.16 to run on this kind of hardware, and consuming time to save few KB here and here.Linux has always been a system from very small to big. That's been one of its strengths. It is very adaptable. Many subsystems are very configurable for this. For example that is why we have both SLOB and SLUB. That is why we have NOMMU MM and lots of other tuning knobs for small systems. So if the other subsystems can do this, why should it be impossible for networking?Can this at least be done without the combinatorial explosion in number of configurations? As Yuchung pointed out these patches introduce at least one unresolved configuration dependency. CONFIG_SMP works quite well since with a single parameter we can enable/disable a whole bunch of functionality in bulk, and it's quite clear that new development cannot break smp or non-smp configurations. Maybe you want something similar like CONFIG_NETWORK_SMALL?
That seems completely reasonable. Likewise, for infrastructure that scales by CPU, keying off of CONFIG_NR_CPUS might make sense. I'd suggest inverting it, so that 'n' means "small" and 'y' means fully featured. Here's a rough description for a CONFIG_NETWORK_FULL: config NETWORK_FULL default y bool "Full-featured networking stack" if EMBEDDED --help-- Leave this option enabled for a full-featured networking stack, including features used by the vast majority of systems. Saying N here results in a minimal embedded networking stack, suitable only for the most memory-constrained and storage-constrained systems; the minimal stack removes many features, and optimizes for code and data size rather than performance. If in doubt, say Y here.