Re: [PATCH 10/11] readahead: dont do start-of-file readahead after lseek()
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2010-02-02 19:14:00
Also in:
linux-fsdevel, lkml
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2010-02-02 19:14:00
Also in:
linux-fsdevel, lkml
On Tue, 2 Feb 2010, Olivier Galibert wrote:
On Tue, Feb 02, 2010 at 10:40:41AM -0800, Linus Torvalds wrote:quoted
IOW, if you start off with a SEEK_END, I think it's reasonable to expect it to _not_ read the whole thing.I've seen a lot of: int fd = open(...); size = lseek(fd, 0, SEEK_END); lseek(fd, 0, SEEK_SET); data = malloc(size); read(fd, data, size); close(fd); Why not fstat? I don't know.
Well, the above will work perfectly with or without the patch, since it does the read of the full size. There is no read-ahead hint necessary for that kind of single read behavior. Rememebr: read-ahead is about filling the empty IO spaces _between_ reads, and turning many smaller reads into one bigger one. If you only have a single big read, read-ahead cannot help. Also, keep in mind that read-ahead is not always a win. It can be a huge loss too. Which is why we have _heuristics_. They fundamentally cannot catch every case, but what they aim for is to do a good job on average. Linus -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>