On Thu, Jun 15, 2023 at 10:00:41AM -0700, James Houghton wrote: > I can't speak in detail about how databases recover from memory > poison. Mike, maybe you can share more details? Speaking generally (this would describe MySQL as well as any number of proprietary databases), hugetlbfs is used by databases as a supplier of memory to their userspace buffer cache. As database blocks are needed, they're read from storage using O_DIRECT. Depending on the database, they may or may not be updated in place. Just as in our page cache, if the hwpoison hits in a clean block, it can discard the block and re-read it. If it hits in a dirty block, it's Game Over. Most blocks are clean. A 1GB page contains so many blocks that taking out the entire 1GB is guaranteed to take out a dirty block. Taking out a single 4kB page is likely to take out only clean blocks.