Chapter 11. Tuning

Introduction

This chapter contains imformation useful to obtain the best performance of the LIXA state server (lixad) in your environment. As explained in the section called “Configuring the server” the server provide some configuration parameters that can be tuned.

There are basically two tuning paths:

  • number of server threads: the level of internal parallelism can be tuned according with the number of available CPUs

  • disk performance: several parameters are available to find the best trade off between performance and reliability

The two tuning paths are typically not fully independent: increasing the number of server threads increases the pressure to the disk(s) and vice versa.

Number of server threads

The LIXA state server is a multi-threaded process with one network listener and many managers; every manager runs in a dedicated thread. Choosing the optimal number of threads requires some trials: following the just work concept the default configuration specifies 3 threads, but your installation might perform better using a different number (in the next paragraphs you can collect some hints).

Note

If you use the journal based state engine, lixad will start 3 different POSIX threads for every server thread; if you use the traditional state engine, lixad will start a single POSIX thread for every server thread.

Refer to the section called “Configuring the server” for information about how to specify the number of server threads.

Disk performance

To get the best IO performance, lixad provides 3 complementary strategies:

  • scattering IO through different disks: every server thread points its own set of state files, if your system provides independent disks, you can assign them to different server threads

  • choosing the state engine type: two state engines, traditional and journal based; the first has a proven track of reliability because it has been deployed in production environments since 2009 while the latter is a new engine released in 2020 and provides amazingly low latency

  • configuring the state engine: depending on the previous choice, different options are available to optimize the performance of the state engine