Re: [PATCHES] O_DIRECT for WAL writes

Поиск
Список
Период
Сортировка
От ITAGAKI Takahiro
Тема Re: [PATCHES] O_DIRECT for WAL writes
Дата
Msg-id 20050628161732.402D.ITAGAKI.TAKAHIRO@lab.ntt.co.jp
обсуждение исходный текст
Ответ на Re: [PATCHES] O_DIRECT for WAL writes  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: [PATCHES] O_DIRECT for WAL writes  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список pgsql-hackers
Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Yeah, this is about what I was afraid of: if you're actually fsyncing
> then you get at best one commit per disk revolution, and the negotiation
> with the OS is down in the noise.

If we disable writeback-cache and use open_sync, the per-page writing
behavior in WAL module will show up as bad result. O_DIRECT is similar
to O_DSYNC (at least on linux), so that the benefit of it will disappear
behind the slow disk revolution.

In the current source, WAL is written as:
    for (i = 0; i < N; i++) { write(&buffers[i], BLCKSZ); }
Is this intentional? Can we rewrite it as follows?
   write(&buffers[0], N * BLCKSZ);

In order to achieve it, I wrote a 'gather-write' patch (xlog.gw.diff).
Aside from this, I'll also send the fixed direct io patch (xlog.dio.diff).
These two patches are independent, so they can be applied either or both.


I tested them on my machine and the results as follows. It shows that
direct-io and gather-write is the best choice when writeback-cache is off.
Are these two patches worth trying if they are used together?


            | writeback | fsync= | fdata | open_ | fsync_ | open_
patch       | cache     |  false |  sync |  sync | direct | direct
------------+-----------+--------+-------+-------+--------+---------
direct io   | off       |  124.2 | 105.7 |  48.3 |   48.3 |  48.2
direct io   | on        |  129.1 | 112.3 | 114.1 |  142.9 | 144.5
gather-write| off       |  124.3 | 108.7 | 105.4 |  (N/A) | (N/A)
both        | off       |  131.5 | 115.5 | 114.4 |  145.4 | 145.2

- 20runs * pgbench -s 100 -c 50 -t 200
   - with tuning (wal_buffers=64, commit_delay=500, checkpoint_segments=8)
- using 2 ATA disks:
   - hda(reiserfs) includes system and wal.
   - hdc(jfs) includes database files. writeback-cache is always on.

---
ITAGAKI Takahiro
NTT Cyber Space Laboratories


Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Teodor Sigaev
Дата:
Сообщение: Re: contrib/rtree_gist into core system?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Wierd panic with 7.4.7