On 06/15/23 18:18, Matthew Wilcox wrote: > 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. Thanks Matthew. I do not have details of exactly how this is done. However, this does fit in with discussions I have had with our DB team. They can possibly recover using another (older) copy of the data. The smaller the size of data, the greater the possibility the older data can be used. -- Mike Kravetz