Knowledge base

PMTA knowledge base›Block Global›Directive§ 3.3.1.37

thread-min-priority

Global

Lowest process priority for the node's threads
in the configuration this is a linethread-min-priority 15inside the block Global
The slow end of the range

The default is 15. The directive is Unix only — the manual marks this separately.

The line sets the slow end of the process priority range the engine’s threads run with. The fast end is set by the paired thread-max-priority, and the manual describes them in one section: they are two bounds of one range, not two independent settings.

The vendor’s advice is direct: these directives should normally be left at their defaults. Changing them may be needed in one case — when the node shares the machine with other server software and priorities need to be weighted differently.

The main trap is changing one bound out of two. It is a range, and it makes sense to move it as a whole. A raised slow end with an untouched fast end narrows the range, and the difference between “fast” and “slow” threads disappears — the engine loses the ability to separate work by importance.

The other half: process priority numbers in Unix grow toward lower urgency. The defaults confirm it: the slow end is 15, the fast end 0. Reading “min” as “low priority” and “15” as “a small number”, it is easy to confuse the direction and configure it backwards.

What the Hub does. It does not write it — the vendor defaults stay.

The node, however, is not always alone on the machine: next to the engine the Hub may install the hubgate proxy gateway and the PowerDNS name server — exactly the “shares the machine with another server” case the manual names. The Hub still does not touch the priorities.

Recommended values

What to set. The vendor’s answer is unambiguous:

Value When
do not write always, if the node is alone on the machine
your own value the node shares the machine with another server, and priorities need weighting

In the second case both bounds need moving, not one. And remember the direction: a larger number means lower urgency.

The default 15, the “Unix only” mark, the advice to keep the defaults and the case “the node shares the machine with another server” are from the manual, § 3.3.1.37. The analysis of the scale direction and the advice to move both bounds are ours.
Example configuration
# the range is moved as a whole, not one of its bounds
thread-min-priority 5thread-max-priority 50
An example from the manual. Process priority numbers grow toward lower urgency — the defaults confirm it: the slow end is 15, the fast end 0.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
▲

Common mistakes and problems

what people get wrong and how it ends2 mistakes▶

Moving one bound out of two

§ 3.3.1.37

What it costsThe range narrows, and the engine loses the ability to separate threads by importance. The setting looks done, but the result is the opposite of what was intended.
How to spot itOnly one of the two lines is set in the configuration.
How to do it rightSet both or neither.

Confusing the direction of the scale

§ 3.3.1.37

What it costsProcess priority numbers in Unix grow toward lower urgency. Bounds set “by intuition” get swapped, and threads that should be fast become slow.
How to spot itThe slow end is set to a smaller number than the fast end.
How to do it rightCheck against the defaults: the slow end is 15, the fast end 0.
Compatibility
PowerMTA 6.0
described in the manual of this version · linux
The vendor does not state the first version for every directive — there is no note here. The name also appears in the 5.0 edition of the manual.
Reference data
Syntax
thread-min-priority <number>
Values
an integer, a Unix process priority
Default
15 § 3.3.1.37
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
Global
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
The directive is written at the root of the configuration file and applies to the whole node. It has no inheritance, but it does have a pair: the manual describes both bounds of the range in one section, and they should be changed together.
How to check on the node
Both bounds are read together — separately they make no sense:
grep -n 'thread-min-priority\|thread-max-priority' /etc/pmta/config
ps -eo pid,ni,comm | grep -i pmta
The second command shows the actual priorities of the node’s processes. If one bound is set and the other is not, the range is narrowed — and that is almost certainly not what was intended.
In the Hub
Cost of a mistake
dangerous: effects outlast a rollback
Scenarios
Capacity planning