<- Back
Comments (46)
- ameliaquiningThis post comes uncomfortably close to plagiarizing https://thebuild.com/blog/2026/04/23/preempt_none-is-dead-yo..., which it cites as a source; almost all the technical explanation is in there and some of the wording is extremely similar. Compare, e.g., "What Linux 7.0 actually changed" in Pettus's post to "What Is Preemption?" in this one. I think this link should have been to Pettus's post instead.
- fulafel> PREEMPT_NONE: The kernel almost never interrupts a running threadThis seems confused. These are options for preemptibility of the kernel, which is a relatively modern fearure. Userspace could always be preempted and these options do not change anything there. The kernel must in any case frequently interrupt threads and processes to implement preemptive multitasking which Linux of course had since the beginning.Read more eg at https://lwn.net/Articles/944686/ or help texts at https://github.com/torvalds/linux/blob/master/kernel/Kconfig...
- ozgrakkurtIt is a crime that postgres isn't able to allocate with 1GB huge pages by changing a config parameter in 2026Also a crime that people are still running databases with 4kb pages.To put it in perspective, this means you will have more than 30 million pages on a server with 128GB RAM. As an example, if there is 16bytes of metadata for memory page. The metadata itself would take more than half a gigabyte.
- busterI'd rather like to know if any real world usage broke, before coming to the conclusion that an edge case synthetic benchmark is worth changing the kernel (back or wherever) where supposedly the change that broke the benchmark had real world benefits.Since we will never know it might be a good idea to feature gate the change, change the default and let users decide to change it back. This may give some feedback on the lkml or else to decide if the change is worthwhile?
- MBCookThis only happened under a very odd configuration. Yeah it wasn’t great but it was not the normal case.The headline implies it broke PG everywhere. It didn’t.
- selckin
- fabian2kThat regression is maybe most useful as a reminder to people to configure huge pages for PostgreSQL. That's the one recommended basic performance tuning that is just annoying enough to set up that I suspect many people with smaller DBs will skip it.Though I actually don't know how large shared buffers has to be for huge pages to make a noticeable difference.
- ahartmetzPREEMPT_LAZY triggering on page faults seems like a bad idea in light of this. It is probably not a good idea to suspend processes right when they get unexpectedly bogged down. The logic makes a little more sense for syscalls that are expected to take long compared to a scheduling quantum (a few milliseconds). But page faults are mostly invisible and unplannable.It only took a few decades for Linux to get a good CPU scheduler and good I/O schedulers, too. I don't get how such an important area can be so bad for so long. But then, bad scheduling is everywhere. I find it to be a pretty fun area to work in, but, judging by how much it is less than half-assed in much existing software, most developers seem to hate dealing with it?
- nijaveRight on the heels of 6.19 breaking tcmalloc and Mongo
- jeltzModerators should change this headline because it is nowhere near true. It only regressed performance on some incorrect configurations.
- ApolloFortyNineI can't help but think of the classic XKCD example of breaking a user's workflow [1].Doing research though a spinlock actually doesn't seem as unusual a hack as it would first seem, do drivers and the like not have similar issues because they don't trigger a page fault I guess?[1] https://xkcd.com/1172/
- baqTLDR of the LMKL thread: 120GB RAM postgres with hugepages=off, lock contention went from terrible to abysmal. nothing to see here except that amazon for whatever reason runs DB tests with huge pages disabled. (hope I'm not paying for RDS and auroras like that in production!)
- dataflowAn X% performance regression is basically a (100 - X)% feature breakage, so whatever that implies in terms of breaking userspace...
- PunchyHamsterSeems Linus needs to yell at someone again.Especially with containers around you might very well hit the case of running new kernel but older version of PostgreSQL with no code mitigation for the problem