Messages in this thread | | | Date | Thu, 28 Jun 2001 01:23:49 +0100 | From | "Stephen C. Tweedie" <> | Subject | Re: [PATCH] swapin flush cache bug |
| |
Hi,
On Thu, Jun 28, 2001 at 09:07:52AM +0900, NIIBE Yutaka wrote: > Marcelo Tosatti wrote: > > I think Stephen C. Tweedie has some considerations about the cache > > flushing calls on do_swap_page(). > > Yup. IIRC, he said that flushing cache at do_swap_page() (which I've > tried at first) is not good, because it's the hot path and it causes > another performance problem in apache or sendmail, where many > processes share the pages in swap cache. > > Then, the fix I sent yesterday is second try. The flush is moved to > I/O routine, instead of do_swap_page().
I really want somebody who has worked on weird caching architectures to look at it too, but I don't see that the new code works well. First, don't we want to do a flush_page_to_ram() *before* starting the swap IO? There's no point dma'ing the swap page to ram if old, dirty cache data is then going to be written back on top of that.
Secondly, the flushing of icache/dcache only needs to be done by the time we come to use the page, so can be performed any time, before or after the IO. We're not going to be accessing the page during IO so if we flush first we won't risk having stale cache data by the time the IO completes.
So, why not just do the flushing before the IO? Adding an async trap to flush the page after swap IO seems the wrong approach: this should be possible to fix synchronously.
Cheers, Stephen - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |