libqb/lib
Jan Pokorný 333fc80a80 log: use fdatasync instead of fsync where possible (#263)
Using years-old benchmark attached to PostreSQL ML[1], I've observed
tiny bit more than double boost in speed when using fdatasync instead of
traditional fsync, on two Linux machines, each equipped with an SSD.
While the observation may be disputable (there are various
interpretations to what "synchronized I/O" actually means), by logical
extension of what the two are supposed to do, one can expect fdatasync
will perform no worse than fsync.  Having the timestamps correct is
really not a priority, compared to timely processing of the message
stream.  So let's use it whenever possible with QB_LOG_CONF_FILE_SYNC
requested.

As an aside, PostreSQL seems to be be using "fdatasync" method of
updating out to disk by default on Linux till today[2].

[1] https://www.postgresql.org/message-id/1095055866.414539fadb90d@webmail.rawbw.com
    https://www.postgresql.org/message-id/attachment/20659/syncbench.c
[2] https://www.postgresql.org/docs/current/static/runtime-config-wal.html#GUC-WAL-SYNC-METHOD

Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
2017-08-07 10:52:02 +01:00
..
.gitignore Cleanup the .gitignore files 2012-05-09 21:43:58 +10:00
array.c LOG: set the return code when calloc fails 2012-11-23 10:24:56 +11:00
atomic_int.h Add internal support for the new __atomic gcc builtins 2013-05-13 10:15:55 +10:00
hashtable.c Add the processing which remove notifier at skiplist_destroy function 2013-01-15 01:57:29 +09:00
hdb.c Unify to QB_TRUE/QB_FALSE a boolean value 2013-01-11 02:01:06 +09:00
ipc_int.h Allow Linux to use filesystem sockets (#248) 2017-04-28 16:13:02 +01:00
ipc_setup.c Allow Linux to use filesystem sockets (#248) 2017-04-28 16:13:02 +01:00
ipc_shm.c Med: rb: make it more robust against trivial IPC API misuses 2016-11-04 19:02:32 +01:00
ipc_socket.c ipc: fix compile warning on non-Linux platforms (#252) 2017-05-18 16:16:22 +01:00
ipcc.c Doc tweaking (#261) 2017-07-20 15:21:51 +01:00
ipcs.c Low: sanitize import of <poll.h> symbols 2016-10-17 17:39:09 +02:00
libqb.pc.in build: fix libqb.pc creation and make maintainer-clean 2012-08-27 15:07:36 +02:00
log_blackbox.c Med: rb: make it more robust against trivial IPC API misuses 2016-11-04 19:02:32 +01:00
log_dcs.c LOG: copy the function/filename for dynamic callsites 2013-03-20 17:10:35 +11:00
log_file.c log: use fdatasync instead of fsync where possible (#263) 2017-08-07 10:52:02 +01:00
log_format.c Merge pull request #217 from jnpkrn/log-serialize-check-char-properly 2016-06-20 08:52:53 +01:00
log_int.h Feature: Implement "extended" logging using a marker character 2015-04-30 12:14:53 -04:00
log_syslog.c Get coverity to ignore this warning. 2012-02-03 14:42:25 +11:00
log_thread.c Refactor: log_thread: fix and diminish inferior comments 2016-10-21 09:42:48 +02:00
log.c Low hanging bits (#264) 2017-08-07 10:18:30 +01:00
loop_int.h LOOP: make it possible to pass in NULL as the default loop instance 2012-02-10 14:47:49 +11:00
loop_job.c Unify the list processing with qb_list function 2013-01-09 02:04:20 +09:00
loop_poll_epoll.c epoll: don't miss poll events under high load 2014-06-05 15:25:26 +10:00
loop_poll_int.h POLL: seperate out the poll/epoll and add kqueue 2012-04-04 00:26:20 +10:00
loop_poll_kqueue.c The udata member of the kevent struct is a void * 2015-01-23 01:58:02 +01:00
loop_poll_poll.c POLL: seperate out the poll/epoll and add kqueue 2012-04-04 00:26:20 +10:00
loop_poll.c loop: Fix splint error 2017-03-06 14:31:57 +00:00
loop_timerlist.c TIMER: check for null timer handle 2012-03-09 12:17:03 +11:00
loop.c Low: loop: don't bring runtime down for a trivial API misuse 2017-06-06 14:04:46 +01:00
Makefile.am lib: update library version for upcoming 1.0.2 release 2017-05-19 14:59:20 +01:00
map_int.h PTRIE: refcount the notifier structs 2012-01-25 16:09:32 +11:00
map.c MAP: add a notifier purely to allow the user to free memory. 2011-12-14 00:26:01 +11:00
ringbuffer_helper.c Med: rb: use new qb_rb_close_helper able to resort to file truncating 2016-11-04 19:05:35 +01:00
ringbuffer_int.h Med: rb: use new qb_rb_close_helper able to resort to file truncating 2016-11-04 19:05:35 +01:00
ringbuffer.c [tests] Fix qb_rb_chunk_peek test so it's consistent with qb_rb_read 2017-01-31 10:41:29 +00:00
rpl_sem.c rpl_sem: make destroy more compliant 2013-02-19 12:40:06 +11:00
rpl_sem.h rpl_sem: make destroy more compliant 2013-02-19 12:40:06 +11:00
skiplist.c Add the processing which remove notifier at skiplist_destroy function 2013-01-15 01:57:29 +09:00
strchrnul.c Use safer versions of string functions (strcpy -> strlcpy) 2012-02-08 22:00:49 +11:00
strlcat.c Fix strlcpy and strlcat functions 2012-12-19 10:42:08 +11:00
strlcpy.c Fix strlcpy and strlcat functions 2012-12-19 10:42:08 +11:00
trie.c High: trie: allow modifying the trie map during the notify callback 2014-07-30 09:58:04 -05:00
unix.c Low: unix: new qb_sys_unlink_or_truncate{,_at} helpers 2016-11-04 19:02:50 +01:00
util_int.h Fix typos: in{ -> s}tance, d{e -> i}stinguished 2017-06-06 14:04:46 +01:00
util.c Add Hurd support 2016-03-17 13:47:16 +01:00