Re: Potential Large Performance Gain in WAL synching
От | Curtis Faith |
---|---|
Тема | Re: Potential Large Performance Gain in WAL synching |
Дата | |
Msg-id | DMEEJMCDOJAKPPFACMPMIECKCEAA.curtis@galtair.com обсуждение исходный текст |
Ответ на | Re: Potential Large Performance Gain in WAL synching (Bruce Momjian <pgman@candle.pha.pa.us>) |
Ответы |
Re: Potential Large Performance Gain in WAL synching
(Bruce Momjian <pgman@candle.pha.pa.us>)
|
Список | pgsql-hackers |
I wrote: > > I'm no Unix filesystem expert but I don't see how the OS can > > handle multiple writes and fsyncs to the same file descriptors without > > blocking other processes from writing at the same time. It may be that > > there are some clever data structures they use but I've not seen huge > > praise for most of the file systems. A well written file system could > > minimize this contention but I'll bet it's there with most of the ones > > that PostgreSQL most commonly runs on. > > > > I'll have to write a test and see if there really is a problem. Bruce Momjian wrote: > Yes, I can see some contention, but what does aio solve? > Well, theoretically, aio lets the file system handle the writes without requiring any locks being held by the processes issuing those reads. The disk i/o scheduler can therefore issue the writes using spinlocks or something very fast since it controls the timing of each of the actual writes. In some systems this is handled by the kernal and can be very fast. I suspect that with large RAID controllers or intelligent disk systems like EMC this is even more important because they should be able to handle a much higher level of concurrent i/o. Now whether or not the common file systems handle this well, I can't say, Take a look at some comments on how Oracle uses asynchronous I/O http://www.ixora.com.au/notes/redo_write_multiplexing.htm http://www.ixora.com.au/notes/asynchronous_io.htm http://www.ixora.com.au/notes/raw_asynchronous_io.htm It seems that OS support for this will likely increase and that this issue will become more and more important as uses contemplate SMP systems or if threading is added to certain PostgreSQL subsystems. It might be easier for me to implement the change I propose and then see what kind of difference it makes. I wanted to run the idea past this group first. We can all postulate whether or not it will work but we won't know unless we try it. My real issue is one of what happens in the event that it does work. I've had very good luck implementing this sort of thing for other systems but I don't yet know the range of i/o requests that PostgreSQL makes. Assuming we can demonstrate no detrimental effects on system reliability and that the change is implemented in such a way that it can be turned on or off easily, will a 50% or better increase in speed for updates justify the sort or change I am proposing. 20%? 10%? - Curtis
В списке pgsql-hackers по дате отправления: