Go to file
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
.tito build: tito: unify custom.py with pacemaker's version 2016-12-16 15:48:25 +01:00
build-aux Typo fix + qb blackbox(8) tweaks and extension + gitignore follow-up (#262) 2017-08-07 10:21:25 +01:00
docs Typo fix + qb blackbox(8) tweaks and extension + gitignore follow-up (#262) 2017-08-07 10:21:25 +01:00
examples configure: restrict nsl lib to where it's actually needed 2016-12-12 11:47:21 +01:00
include Typo fix + qb blackbox(8) tweaks and extension + gitignore follow-up (#262) 2017-08-07 10:21:25 +01:00
lib log: use fdatasync instead of fsync where possible (#263) 2017-08-07 10:52:02 +01:00
m4 configure: restrict pthreads to where it's actually needed 2016-12-12 11:46:13 +01:00
tests Low hanging bits (#264) 2017-08-07 10:18:30 +01:00
tools build: fix libqb.pc creation and make maintainer-clean 2012-08-27 15:07:36 +02:00
.gitignore Typo fix + qb blackbox(8) tweaks and extension + gitignore follow-up (#262) 2017-08-07 10:21:25 +01:00
.tito.spec.tmpl build: allow for git -> automatic COPR builds integration 2016-11-18 23:32:44 +01:00
.travis.yml CI: travis: fix du -> df and capture it also directly from test 2016-12-16 15:48:10 +01:00
autogen.sh build: follow-up on introducing custom m4 macros 2017-05-19 15:32:55 +02:00
check minor fixes to check script's ABI report 2015-08-28 11:20:20 -05:00
coding_style.txt Point the link to the Linux kernel coding style document to the right place (#256) 2017-05-26 14:15:32 +01:00
configure.ac log: use fdatasync instead of fsync where possible (#263) 2017-08-07 10:52:02 +01:00
COPYING Re-license to LGPL 2.1 2010-05-25 06:11:59 +10:00
INSTALL The license is in COPYING, not LICENSE 2015-12-16 19:28:20 +01:00
libqb.spec.in build: drop allegedly no longer intrusive syslog-tests opt-in switch 2016-12-12 12:18:37 +01:00
Lindent Change Lindent options to break the procedure type. 2011-06-22 14:19:14 +10:00
Makefile.am build: follow-up on introducing custom m4 macros 2017-05-19 15:32:55 +02:00
README.markdown doc: README: add a status badge+link for the COPR builds 2016-11-22 16:36:26 +01:00

libqb

What is libqb?

libqb is a library with the primary purpose of providing high-performance, reusable features for client-server architecture, such as logging, tracing, inter-process communication (IPC), and polling.

libqb is not intended to be an all-encompassing library, but instead provide focused APIs that are highly tuned for maximum performance for client-server applications.

Build Status COPR Build Status

For more information, see:

Dependencies

  • glib-2.0-devel (If you want to build the glib example code)
  • check-devel (If you want to run the tests)
  • doxygen and graphviz (If you want to build the doxygen man pages or html manual)

Source Control (GIT)

git clone git://github.com/ClusterLabs/libqb.git

See Github

Installing from source

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

How you can help

If you find this project useful, you may want to consider supporting its future development. There are a number of ways to support the project.