Chapter 10. IO Subsystem Tuning
io subsystem defines XNIO workers and buffer pools that are used by other JBoss EAP subsystems, such as Undertow and Remoting.
10.1. Configuring Workers
You can create multiple separate workers that each have their own performance configuration and which handle different I/O tasks. For example, you could create one worker to handle HTTP I/O, and another worker to handle EJB I/O, and then separately configure the attributes of each worker for specific load requirements.
See the IO Subsystem Attributes appendix for the list of configurable worker attributes.
Worker attributes that significantly affect performance include
io-threads which sets the total number of I/O threads that a worker can use, and
task-max-threads which sets the maximum number of threads that can be used for a particular task. The defaults for these two attributes are calculated based on the server’s CPU count.
See the JBoss EAP Configuration Guide for instructions on how to create and configure workers.
10.1.1. Monitoring Worker Statistics
You can view a worker’s runtime statistics using the management CLI. This exposes worker statistics such as connection count, thread count, and queue size.
The following command displays runtime statistics for the
The number of core threads, which is tracked by the
core-pool-size statistic, is currently always set to the same value as the maximum number of threads, which is tracked by the
10.2. Configuring Buffer Pools
IO buffer pools are deprecated, but they are still set as the default in the current release. For more information about configuring Undertow byte buffer pools, see the Configuring Byte Buffer Pools section of the Configuration Guide for JBoss EAP.
A buffer pool in the
io subsystem is a pooled NIO buffer instance that is used specifically for I/O operations. Like workers, you can create separate buffer pools which can be dedicated to handle specific I/O tasks.
See the IO Subsystem Attributes appendix for the list of configurable buffer pool attributes.
The main buffer pool attribute that significantly affects performance is
buffer-size. The default is calculated based on the RAM resources of your system, and is sufficient in most cases. If you are configuring this attribute manually, an ideal size for most servers is 16KB.
See the JBoss EAP Configuration Guide for instructions on how to create and configure buffer pools.