This article addresses observed high memory utilization in Alpha Block 1 of the KHT memory on a Juniper PTX10001-36MR device running Junos EVO.
The KHT stores hashed representations of filter keys used to match packet headers against configured policies.
Alpha memory blocks are used to distribute and balance these filters across multiple memory slices and replicas to optimize performance and redundancy.
The system uses a make-before-break approach during filter updates, meaning new filters are installed before old ones are removed to ensure uninterrupted packet forwarding.
Memory utilization on Alpha Block 1 reaches 82%, while Alpha Block 0 remains low.
Example output from the affected device:
FPC0:PIC0:NPU0 mem-util-flt-alpha-kht-slice-0-rep-0-block-1-utilization 82 FPC0:PIC0:NPU0 mem-util-flt-alpha-kht-slice-0-rep-1-block-1-utilization 82 FPC0:PIC0:NPU0 mem-util-flt-alpha-1-kht-utilization 82
Lab replication shows balanced utilization initially:
alpha-0-kht-utilization: 41 alpha-1-kht-utilization: 41
After modifying a prefix list and changing a firewall filter term from accept to discard, the imbalance reappears:
accept
discard
alpha-0-kht-utilization: 1 alpha-1-kht-utilization: 82
This behavior is expected and is a result of the system's make-before-break logic during filter updates:
You can monitor Alpha memory utilization using commands like:
request pfe execute command "show npu memory info | match kht-utilization" target fpc0