aio_req_per_thread.5 (2010 09)
a
aio_req_per_thread(5) aio_req_per_thread(5)
(Tunable Kernel Parameters)
NAME
aio_req_per_thread - desirable ratio between number of pending AIO requests and servicing threads
VALUES
Failsafe
4
Default
1
Allowed values
1-100
Recommended values
1-100
DESCRIPTION
The implementation of POSIX AIO on HP-UX uses kernel threads to perform I/Os to filesystems that do
not directly support true asynchronous I/O. (This distinction is transparent to the user.) The kernel
threads are organized into worker-thread pools (called AIO thread pools) created on a per-process basis.
Since a thread pool mechanism for I/Os introduces a variety of trade-offs concerning utilization of CPU
time vs. I/O resources, four dynamic tunables are available to customize the behavior of this thread pool:
aio_proc_threads(5), aio_proc_thread_pct(5), aio_req_per_thread(5), and aio_monitor_run_sec(5). Please
see individual manpages for details on each of these tunables.
The tunable
aio_req_per_thread
specifies, on a per-process basis, the desirable ratio between the
number of pending POSIX AIO requests and the number of threads in the AIO thread pool.
The number of threads in the AIO thread pool is bounded by the tunables
aio_proc_thread_ptct
and aio_proc_threads
, but the aio_req_per_thread tunable determines how the AIO thread
pool behaves within that bound.
aio_req_per_thread
determines how much the AIO thread pool
grows as the number of outstanding AIO requests grows, by defining how many I/Os each thread will be
responsible for.
Who Is Expected to Change This Tunable?
System administrators that run applications requiring heavy usage of POSIX AIO to filesystems.
Restrictions on Changing
This tunable is dynamic. Changes to to this tunable take effect immediately for new processes started
after the change. They also impact existing processes, but the speed with which the changes propagate to
running processes is determined by the tunable
aio_monitor_run_sec
.
When Should the Value of This Tunable Be Raised?
aio_req_per_thread should be raised for applications that want to limit the number of threads used
by the POSIX AIO subsystem. Applications would want to do this to either free up more process threads
for other work, or to limit the level of concurrency inside POSIX AIO, perhaps to reduce load on physi-
cally limited I/O devices.
What Are the Side Effects of Raising the Value of This Tunable?
By allowing less threads for POSIX AIO requests, concurrency is reduced and AIO I/O requests will have
to wait longer for servicing. This can result in increased latency and reduced POSIX AIO performance on
systems whose I/O stack could otherwise handle heavier loads. On the other hand, less threads per
request can result in less context switching, reducing the CPU utilization of POSIX AIO.
When Should the Value of This Tunable Be Lowered?
aio_req_per_thread should be lowered when applications want to maximize the concurrency and
performance of POSIX AIO requests. This should be done when an application does not need a large
number of threads for other work.
What Are the Side Effects of Lowering the Value of This Tunable?
Lowering this tunable results in more threads being used by POSIX AIO to handle I/O requests, which
could increase CPU usage and use up threads that applications might need for other work. On the other
hand, POSIX AIO performance should increase.
HP-UX 11i Version 3: September 2010 − 1 − Hewlett-Packard Company 1