For the longest time, "Flat Memory" was the only available option. Recently, I can also choose "Sparse Memory". These are the only two options available to me. Flat memory is the default and it's what I have been using for a long time now, but I am curious about sparse memory and whether I should try it.
I am having a hard time finding a real, solid definition of what sparse memory is. Near as I can tell, it's like sparse files in that it may be non-contiguous and may have holes in its allocation. But that leaves some things unanswered. It doesn't tell me if SPARSEMEM is a drop-in replacement for FLATMEM that won't break anything. It doesn't tell me what performance differences there may be, if any. If it helps, this is a standard desktop PC with an AMD64 X2 processor; I have nothing exotic in terms of hardware.
Any attempt to Google this topic results in tons of posts from various Linux Kernel mailing lists where people are talking about how to implement it in C without discussing its merits. Any other search results just regurgitate the "help" text from the kernel config, something a lot of sites like to repost endlessly without adding new information to it. That makes it difficult for those who are seaching in the first place because they need more information than provided by the help text they already have.
The kernel config help text does suggest selecting FLATMEM if you are in doubt, but it doesn't explain why.
Anyway, I was hoping someone here who is knowledgable about these things might be willing to help me understand the difference.



