Commit Graph

26 Commits

Author SHA1 Message Date
Andrey Borodin c4e2cedc35 Support of replication protocol 2019-04-12 15:13:50 +05:00
Dmitry Simonenko 6c0a1f09f8 odyssey: major rework of io architecture
This patch intend is to improve overall io performance, reduce
cpu and system usage.

Machinarium:

IO read/write logic is highly simplified and now based on conditions
instead of previously made internal readahead buffer and msg
queues. This allows to give user more control over io operations and
avoid doing undesired readahead copying.

Above that, TLS implementation reworked to use async logic instead of
separate BIO layer.

Direct pooling functions removed.

New objects machine_cond_t and machine_iov_t objects.

Odyssey:

Introduced readahead, io and relay objects.

Relay allows to connect two io handles for direct data retransmission
without double copying.

Removed configuration options no longer needed:
packet_read_size, packet_write_queue
2019-01-23 18:43:52 +03:00
Dmitry Simonenko 82f0deba7d odyssey: disable discard by default 2018-12-13 15:40:18 +03:00
Dmitry Simonenko c4f383ccfb odyssey: introduce pool_discard configuration parameter 2018-12-11 12:57:52 +03:00
Dmitry Simonenko dc3ae5ca2e odyssey: allow to set process/workers priority 2018-11-14 16:14:13 +03:00
Dmitry Simonenko 2d4f61f923 odyssey: introduce packet_write_queue 2018-11-13 18:29:25 +03:00
Dmitry Simonenko fbc037aa23 odyssey: implement packet retransmission in chunks; packet_read_size 2018-10-23 16:51:30 +03:00
Dmitry Simonenko 14d4a7f478 odyssey: add cache_msg_gc_size option and disable default caching 2018-09-26 18:18:17 +03:00
Dmitry Simonenko da7e6ea7a5 odyssey: major io rework and refactoring
This patch moves Odyssey from stream based write caching
to message driven. All write operations are delayed
and happen on a group of messages.

This removes necessity to do IO and wait for write completion during calls
from SSL_write() context. Write timings should behave more predictable now and
number of used syscalls should be also decreased.

This patch also simplifies caching management. All clients are simply
reusing cached messages without prolonged contention.

Several configuration options are no longer used:
pipeline, cache, cache_chunk
2018-08-28 17:43:46 +03:00
Dmitry Simonenko be59c897cc odyssey: gather current stats in routes instead of server 2018-08-09 17:39:36 +03:00
Dmitry Simonenko 008efe6727 odyssey: make stats_interval compatible with pgbouncer 2018-08-03 17:09:37 +03:00
Dmitry Simonenko c495b9ea8a odyssey: add unix_socket_mode configuration param 2018-07-03 16:02:46 +03:00
Dmitry Simonenko fb023d42cb odyssey: add unix socket support. fix #31 2018-07-02 18:41:17 +03:00
Dmitry Simonenko 7e636b9139 machinarium: support openssl >= 1.1.*. fix #17 2018-06-07 14:43:06 +03:00
Dmitry Simonenko cf3e99ecca odyssey: implement coroutine_stack_size config param. #9 2018-06-04 14:51:13 +03:00
Dmitry Simonenko af4a2a4c80 odyssey: add variadic buffer size read/write test 2018-05-15 15:13:44 +03:00
Dmitry Simonenko f5a4bd9a35 odyssey: support configurable list of common names to check 2018-05-10 15:49:31 +03:00
Dmitry Simonenko a907873715 odyssey: implement authenitcation "cert" 2018-04-26 16:02:18 +03:00
Dmitry Simonenko 65877bcf06 odyssey: minor documentation fixes 2018-03-20 17:24:48 +03:00
Dmitry Simonenko 7be3abed51 odyssey: minor fixes 2018-03-20 17:06:30 +03:00
Dmitry Simonenko dfc5e1b8f8 odyssey: document rest of config file 2018-03-20 16:38:31 +03:00
Dmitry Simonenko b3af6a28e9 odyssey: document routing rules in config 2018-03-20 16:10:08 +03:00
Dmitry Simonenko 392661556e odyssey: update config file documentation 2018-03-19 17:27:28 +03:00
Dmitry Simonenko 4655bd6ca4 odyssey: document listen section 2018-03-19 17:12:13 +03:00
Dmitry Simonenko 3f0b91d7de odyssey: add configuration file documentation 2018-03-16 17:07:32 +03:00
Dmitry Simonenko f108dcba09 odyssey: project rename 2018-03-12 17:03:15 +03:00