Re: Re: Faster CREATE DATABASE by delaying fsync (was 8.4.1 ubuntu karmic slow createdb)
От | Greg Smith |
---|---|
Тема | Re: Re: Faster CREATE DATABASE by delaying fsync (was 8.4.1 ubuntu karmic slow createdb) |
Дата | |
Msg-id | 4B6CF822.9010608@2ndquadrant.com обсуждение исходный текст |
Ответ на | Re: Re: Faster CREATE DATABASE by delaying fsync (was 8.4.1 ubuntu karmic slow createdb) (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: Re: Faster CREATE DATABASE by delaying fsync (was 8.4.1 ubuntu karmic slow createdb)
|
Список | pgsql-hackers |
Andres Freund wrote: > On 02/03/10 14:42, Robert Haas wrote: >> Well, maybe we should start with a discussion of what kernel calls >> you're aware of on different platforms and then we could try to put an >> API around it. > In linux there is sync_file_range. On newer Posixish systems one can > emulate that with mmap() and msync() (in batches obviously). > > No idea about windows. There's a series of parameters you can pass into CreateFile: http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx A lot of these are already mapped inside of src/port/open.c in a pretty straightforward way from the POSIX-oriented interface: O_RDWR,O_WRONLY -> GENERIC_WRITE, GENERIC_READ O_RANDOM -> FILE_FLAG_RANDOM_ACCESS O_SEQUENTIAL -> FILE_FLAG_SEQUENTIAL_SCAN O_SHORT_LIVED -> FILE_ATTRIBUTE_TEMPORARY O_TEMPORARY -> FILE_FLAG_DELETE_ON_CLOSE O_DIRECT -> FILE_FLAG_NO_BUFFERING O_DSYNC -> FILE_FLAG_WRITE_THROUGH You have to read the whole "Caching Behavior" section to see exactly how all of those interact, and even then notes like http://support.microsoft.com/kb/99794 are needed to follow the fine points of things like FILE_FLAG_NO_BUFFERING vs. FILE_FLAG_WRITE_THROUGH. So anything that's setting those POSIX open flags better than before is getting the benefit of that improvement on Windows, too. But that's not quite the same as the changes using fadvise to provide better targeted cache control hints. I'm getting the impression that doing much better on Windows might fall into the same sort of category as Solaris, where the primary interface for this sort of thing is to use an AIO implementation instead: http://msdn.microsoft.com/en-us/library/aa365683(VS.85).aspx The effective_io_concurrency feature had proof of concept test programs that worked using AIO, but actually following through on that implementation would require a major restructuring of how the database interacts with the OS in terms of reads and writes of blocks. It looks to me like doing something similar to sync_file_range on Windows would be similarly difficult. -- Greg Smith 2ndQuadrant US Baltimore, MD PostgreSQL Training, Services and Support greg@2ndQuadrant.com www.2ndQuadrant.us
В списке pgsql-hackers по дате отправления: