Viewing: at_min.4

.TH AT_MIN 4 2026-09-13 Lustre "Lustre Kernel Interfaces"
.SH NAME
at_min \- minimum seconds for RPC adaptive timeout estimate
.SH SYNOPSIS
.SY
.BI "lctl get_param *." FSNAME "*.at_min"
.SY
.BI "lctl get_param at_min"
.SY
.BI "lctl set_param *." FSNAME "*.at_min=" TIMEOUT_MIN_SECONDS
.SY
.BI "lctl set_param at_min=" TIMEOUT_MIN_SECONDS
.YS
.SS PROPERTIES
.TP
.B Access Permissions
.br
.BR 644 " | " -rw-r--r--
.TP
.B Scope
.br
Global and per import and target device
.TP
.B Config
.br
Always present
.TP
.B Default
.br
.RB at_min= 5
.TP
.B Valid Range
.br
.RB at_min= 0
.br
.RB at_min= at_max
.SH DESCRIPTION
The
.B at_min
parameter sets the lower limit on the service time estimate to
.IR TIMEOUT_MIN_SECONDS .
Together with
.BR at_max (4),
this sets the range within which client RPC timeouts are estimated.
The client will always wait at least
.B at_min
seconds for an RPC to timeout before it resends it.
This avoids aggressively resending an RPC when a server is busy and the
client has not received any RPC replies recently with an updated service time.
.PP
On servers, the global
.B at_min
default may be automatically adjusted based on the
.BR expected_clients (4)
tunable as the number of connected clients grows.
.PP
When administrators set
.BR expected_clients ,
the server calculates a suitable
.B at_min
using the formula
.IR "(ilog2(expected_clients + 7) - 3) * 5 / 2" .
If
.B at_min
is changed manually to a non-zero value, either via
.BR lctl-set_param (8)
for example,
.BR "lctl set_param at_min=15" ,
or through the corresponding kernel module parameter, the value is
considered
.I pinned
and automatic scaling from
.B expected_clients
will no longer update
.BR at_min .
Automatic scaling can be re-enabled by writing
.BR "lctl set_param at_min=0" ,
which unpins
.B at_min
and immediately recalculates it from the current
.B expected_clients
value.
.PP
Per-target
.BI *. FSNAME *.at_min
settings override the global value and are not modified by
.BR expected_clients (4).
.PP
If, for some reason (usually due to temporary network outages or sudden spikes
in load immediately after mount),
the adaptive timeout value is too short and clients time out their RPCs,
you can increase the minimum value to compensate for this.
.PP
It is preferred to set
.B at_min
as a per-target tunable using the
.BI *. FSNAME - TARGET *.at_min
parameter instead of the global parameter. This avoids issues if a single
client mounts two separate filesystems with different at_min tunable settings.
.SH MODULES
This parameter is in the following modules:
.EX
.B at_min
.B mdc.*.at_min
.B mdt.*.at_min
.B mgc.*.at_min
.B mgs.*.at_min
.B obdfilter.at_min
.B osc.at_min
.EE
.SH EXAMPLES
Permanently increase the minimum timeout on nodes of the testfs filesystem:
.EX
.RB mgs# " lctl set_param -P *.testfs*.at_min=15"
.EE
.SH AVAILABILITY
.B at_min
is part of the
.BR lustre (7)
filesystem package since release 1.6.4,
.\" commit 1.6.0-1416-gde3c3fdf25
but the per-subsystem tunables are only present since release 2.16.0.
.\" commit v2_15_58-111-g0f2bc318d7
The automatic scaling based on expected_clients is present since release 2.18.0.
.\" commit 2.17.58.x
.SH SEE ALSO
.BR at_early_margin (4),
.BR at_extra (4),
.BR at_history (4),
.BR at_max (4),
.BR expected_clients (4),
.BR ldlm_enqueue_min (4)