PEM statistics tables¶
F5 BIG-IP Policy Enforcement Manager (PEM) exposes a set of statistics tables that help you monitor subscriber sessions, policy enforcement, protocol interactions, and system performance. Use these tables to verify that PEM is working as expected, identify issues early, and troubleshoot problems in your deployment.
This reference covers each statistics table, its fields, and troubleshooting tips to help you interpret the data.
Before you begin¶
To view PEM statistics, run the tmctl command on the BIG-IP system. For example:
tmctl -d blade pem_actions_stat
Use the -w flag to set the column width for readability:
tmctl -d blade -w 300 pem_sessiondb_rtt_stats
pem_actions_stat¶
This table tracks policy enforcement actions. Use it to verify that PEM is applying the correct action (pass or drop) to each flow and to identify the reason for any dropped flows.
Supported actions¶
PEM supports the following enforcement actions:
Gate status (allow or drop)
UDP rate pacing
TCP optimization
Fields¶
| Counter | Description |
|---|---|
pass |
Number of flows that passed (gate enabled). |
drop |
Total number of dropped flows. This value is the sum of all drop_* counters listed below, plus any flows dropped by a policy rule action set to drop. |
reeval_cnt |
Total number of policy reevaluations. |
reeval_max |
Highest number of policy reevaluations in the current window. |
tcpopt_to_net |
Number of flows with TCP optimization applied to the uplink (network) side. |
tcpopt_to_sub |
Number of flows with TCP optimization applied to the subscriber side. |
drop_no_session |
Flows dropped because no matching session was found. |
drop_dssm_timeout |
Flows dropped because the Distributed Session State Manager (DSSM) did not respond in time. |
drop_dssm_err |
Flows dropped because DSSM returned an error or was unavailable. |
drop_session_cleanup |
Flows dropped because the session was being cleared or had moved to another pod. |
drop_policy_gate |
Flows dropped because a PEM gate policy is explicitly set to drop. |
drop_ingress |
UDP or non-TCP ingress data that arrived after a drop was signaled but before the flow was fully removed. |
drop_egress |
UDP or non-TCP egress data that arrived after a drop was signaled but before the flow was fully removed. |
drop_server_side_flow |
Flows dropped because a new server-side flow arrived for unknown traffic. |
drop_redirect_fallback |
Flows dropped because an HTTP redirect failed and the fallback action is set to drop. |
Drop counter relationship¶
The drop counter is the sum of all individual drop reasons:
drop = drop_no_session + drop_dssm_timeout + drop_dssm_err + drop_session_cleanup
+ drop_policy_gate + drop_server_side_flow + drop_redirect_fallback
+ drop_ingress + drop_egress + (policy rule action drops)
If drop does not equal the sum of all drop_* counters plus policy-action drops, report this as a defect.
Key Diagnostics¶
drop_dssm_timeoutordrop_dssm_errincreasing: These counters point to a DSSM connectivity or performance issue. Check DSSM reachability and review thepem_dssm_rtt_statstable.dropdoes not match the sum ofdrop_*counters: This indicates a counting inconsistency.Any
drop_*counter increasing unexpectedly: Investigate each counter individually to determine whether the drops are expected (for example, a policy gate set to drop) or indicate a problem.
pem_sessions_stat¶
This table tracks the full lifecycle of PEM subscriber sessions, including how sessions are created, provisioned, updated, deleted, and how IP addresses are assigned.
Columns¶
Every row in this table includes three columns:
| Column | Description |
|---|---|
current |
Number of sessions in this state right now. |
max |
Highest value that current has reached since the last reset. |
total |
Total number of sessions that have entered this state at least once since the system started. |
Session lifecycle states¶
| Field | Description |
|---|---|
sess_active |
Sessions currently active in PEM (not yet marked for deletion). |
sess_del_marked |
Sessions marked for deletion but not yet fully removed. |
sess_del_total |
Total number of session deletions completed. |
Provisioning states¶
Every active session is in exactly one of the following four states at any time. The current values of these four fields should add up to sess_active.current.
| Field | Description |
|---|---|
sess_prov_wait |
Session is waiting for the first provisioning response (from Gx, Sd, static config, or iRule). |
sess_prov_hold |
Session is held before provisioning starts (for example, during late binding). |
sess_provisioned |
Session has active policy rules installed and is fully provisioned. |
sess_prov_fail |
The most recent provisioning attempt for this session failed. |
The following fields are derived counters that overlap with the four states above. They are not part of the partition.
| Field | Description |
|---|---|
sess_not_provisioned |
Sessions that don't currently have active policy rules. This includes sessions in sess_prov_wait, sess_prov_hold, or sess_prov_fail. |
sess_prov_after_hold |
Sessions that became provisioned after being held in sess_prov_hold. |
sess_prov_no_rad_att |
Non-static sessions that have not yet received RADIUS attributes. Clears when RADIUS attributes arrive. |
Provisioned-by source stats¶
These counters indicate which protocol or mechanism provisioned each session.
| Field | Description |
|---|---|
sess_prov_by_gx |
Provisioned by a Gx interface (Policy and Charging Rules Function, or PCRF). |
sess_prov_by_sd |
Provisioned by an Sd interface (Traffic Detection Function). |
sess_prov_by_rad_aaa |
Provisioned by RADIUS authentication, authorization, and accounting (AAA). |
sess_prov_by_irule |
Provisioned by an iRule. |
sess_prov_by_static |
Provisioned by a static (pre-configured) subscriber policy. |
Sessions added by source stats¶
These counters show what triggered the creation of each session.
| Field | Description |
|---|---|
sess_added_by_rad |
Created when PEM received a RADIUS Accounting-Start for a subscriber with no existing session. |
sess_added_by_dhcp |
Created when PEM saw a new DHCP lease assigned to a subscriber. |
sess_added_by_dhcp_leasequery |
Created from a DHCP Lease Query response (for example, after a restart to recover state). |
sess_added_by_traff |
Created by data-plane traffic. This is the sum of sess_added_by_clnt_traff and sess_added_by_svr_traff. |
sess_added_by_clnt_traff |
Created when the first packet of a new flow arrived from the subscriber (client) side and no session existed. |
sess_added_by_svr_traff |
Created when the first packet of a new flow arrived from the network (server) side and no session existed. |
sess_added_by_irule |
Created explicitly by an iRule (for example, a PEM::session create call). |
sess_added_by_static |
Loaded from the static subscriber database rather than triggered by a live event. |
Session updates stats¶
| Field | Description | Notes |
|---|---|---|
updates |
Total session-update attempts from all sources. | Increments when the request is received, before the outcome is known. |
updates_ok |
Update attempts that succeeded. | |
updates_from_rad |
Updates triggered by a RADIUS Interim-Update. | |
updates_from_gx |
Updates triggered by a Gx message (Re-Auth-Request or Credit-Control-Answer Update). | |
updates_from_sd |
Updates triggered by an Sd message. | |
updates_from_irule |
Updates triggered by an iRule. | |
updates_from_dhcp_leasequery |
Updates triggered by a DHCP Lease Query response. |
Session deletions stats¶
The sess_del_total counter breaks down by the session’s provisioning state at the time of deletion and by which source requested the deletion.
| Field | Description |
|---|---|
sess_del_provisioned |
Session was provisioned when deleted. |
sess_del_prov_wait |
Session was still waiting for provisioning when deleted. |
sess_del_prov_fail |
Session was in a provisioning-failed state when deleted. |
sess_del_replaced |
Session was deleted because it was replaced (for example, when an IP was reassigned to a new session). |
sess_del_by_rad |
Deleted by a RADIUS Accounting-Stop. |
sess_del_by_gx |
Deleted by a Gx request. |
sess_del_gx_problem |
Deleted because the Gx link or session broke unexpectedly, not because of a normal Gx-initiated delete. |
sess_del_by_sd |
Deleted by an Sd request. |
sess_del_sd_problem |
Deleted because of an Sd link failure (similar to sess_del_gx_problem). |
sess_del_by_dhcp |
Deleted by a DHCP lease-release event. |
sess_del_by_dhcp_leasequery |
Deleted because a DHCP Lease Query indicated the lease no longer exists. |
sess_del_idle |
Deleted because the session reached the idle timeout (no traffic or activity). |
sess_del_by_irule |
Deleted explicitly by an iRule. |
sess_del_by_admin |
Deleted by an administrative action (for example, using tmsh). |
sess_del_static |
A statically provisioned session was deleted. |
sess_del_stat_precnf |
A pre-configured static session that had reached provisioned status was deleted. |
Session IP address stats¶
| Field | Description |
|---|---|
sess_ip_single |
Sessions currently holding exactly one IP address. |
sess_ip_mult |
Sessions currently holding more than one IP address. |
sess_ip_dual |
Sessions currently using both IPv4 and IPv6 (dual stack). |
sess_ip_mult_v4 |
Sessions currently holding more than one IPv4 address. |
sess_ip_mult_v6 |
Sessions currently holding more than one IPv6 address. |
ip_v4_count |
Total IPv4 addresses tracked across all sessions. |
ip_v6_count |
Total IPv6 addresses tracked across all sessions. |
ip_added_after_prov |
IP addresses added to a session after provisioning was already complete. |
ip_rem_no_sess_del |
IP addresses removed from a session without deleting the session itself. |
Session errors and limits stats¶
| Field | Description |
|---|---|
err_prov_attempts |
Provisioning attempts that failed or received no response. |
err_sess_limit |
Session creation attempts rejected because the configured maximum session limit was reached. |
err_sess_ip_limit |
IP address additions rejected because the per-session IP limit was reached. |
err_del_miss_rad |
RADIUS Stop received for a session that PEM could not find. |
err_del_miss_dhcp |
DHCP release or expiration received for a session that PEM could not find. |
err_del_miss_gx |
Gx delete request received for a session that PEM could not find. |
err_del_miss_sd |
Sd delete request received for a session that PEM could not find. |
err_del_miss_irule |
iRule delete request received for a session that PEM could not find. |
no_add_sess_by_svr_traff |
A server-side flow arrived, but the profile is not configured to create sessions from server-side traffic. |
db_errors |
Internal session database errors. |
db_errors_subs |
Subscriber database lookup errors or inconsistencies. |
db_errors_subs_fixup |
Subscriber database inconsistencies that PEM detected and auto-corrected. |
Additional field: sess_activity_log tracks sessions flagged for per-session debug or activity logging.
Key Diagnostics¶
sess_active.currentdoes not equalsess_prov_wait.current + sess_prov_hold.current + sess_provisioned.current + sess_prov_fail.current: A session’s provisioning state is unaccounted for. Report this as a defect.sess_prov_failorerr_prov_attemptsclimbing steadily: Sessions are not being provisioned. Check the relevant protocol’s error stats (for example,pem_gx_stat) and verify PCRF, Sd, or AAA reachability.err_sess_limitorerr_sess_ip_limitis non-zero: PEM is rejecting new sessions or IP addresses because of configured limits. Confirm whether this is expected based on your capacity planning, or adjust the limit.Any
err_del_miss_*counter is non-zero: An external system is trying to delete a session that PEM doesn’t have. This usually means PEM and the external system have different views of active sessions. Possible causes include a missed session creation, a premature local deletion, or a failover gap.db_errorsordb_errors_subsincreasing: The internal session or subscriber database is failing. Checkpem_bin_statsand DSSM connectivity.db_errors_subs_fixupgrowing steadily: Subscriber database inconsistencies are recurring rather than isolated. Investigate the root cause rather than relying on auto-correction.no_add_sess_by_svr_traffunexpectedly high: Verify whether the profile’s server-side session creation setting matches your deployment’s expected traffic pattern.sess_del_gx_problemnon-zero and growing: Sessions are being removed because the Gx link broke, not because of a normal Gx delete. Treat this as a Gx connectivity issue.sess_del_sd_problemnon-zero: Sessions are being removed because of an Sd connectivity problem.updates_okconsistently lower thanupdates: Updates are failing. Check the error stats for the originating protocol (for example,pem_gx_statCCA errors).
pem_gx_stat¶
This table tracks Gx interface activity between PEM and the Policy and Charging Rules Function (PCRF). It includes Gx session states and Diameter message counts.
Columns per Session-state and Diameter messages:¶
| Column | Description |
|---|---|
current |
Number of sessions in this state, or not applicable for message rows. |
max |
Highest value of current since the last reset. |
total |
Cumulative count of sessions entering a state (first entry only) or messages sent/received. |
retries |
Cumulative retransmissions of a Diameter message. |
errors |
Cumulative error outcomes for a message type. |
Rows for Session-state¶
Every live Gx session (sess.current) is in exactly one of sess_prov, sess_prov_no, sess_prov_pend, or sess_prov_err at any time.
| Field | Description |
|---|---|
sess |
Overall Gx session count. current shows live sessions; total shows cumulative sessions created. |
sess_late_binding |
Session held while waiting for subscriber identity to bind (for example, early traffic before RADIUS information arrives). |
sess_prov |
Session is actively provisioned with policy rules from the PCRF. |
sess_prov_pend |
A Credit-Control-Request Initial (CCR-I) or re-provisioning request was sent and PEM is waiting for the answer. |
sess_prov_no |
Session exists but has no active PCRF-provisioned rules. |
sess_prov_err |
Session is in a provisioning-error state (for example, a CCA or Re-Auth-Request failed). |
sess_term_pend |
Session close has started (CCR-Terminate sent) and PEM is waiting for final cleanup. |
sess_deleted |
Session was fully removed. total shows the cumulative count of deletions. |
Rows for Diameter messages — Credit-Control-Request (CCR)¶
| Field | Description |
|---|---|
ccr |
All CCR messages sent (sum of ccr_init, ccr_update, and ccr_term). |
ccr_init |
CCR-Initial sent to bring up a session. |
ccr_update |
CCR-Update sent for mid-session re-provisioning. |
ccr_term |
CCR-Terminate sent to tear down a session. |
ccr_usage |
CCR-Update sent to report usage monitoring data. |
ccr_app_start |
CCR-Update sent to report an application start. |
ccr_app_stop |
CCR-Update sent to report an application stop. |
ccr_init_throttle |
CCR-Initial requests suppressed because the PCRF previously responded "too busy" and the backoff window has not expired. |
ccr_update_throttle |
CCR-Update requests suppressed for the same reason. |
ccr_term_throttle |
CCR-Terminate requests suppressed for the same reason. |
ccr_update_filter |
CCR-Update triggers suppressed locally because they were redundant or duplicates. |
Rows for Diameter messages — Credit-Control-Answer (CCA)¶
| Field | Description |
|---|---|
cca |
All CCA messages received (sum of cca_init, cca_update, and cca_term). |
cca_init |
CCA received in response to a CCR-Initial. |
cca_update |
CCA received in response to a CCR-Update. |
cca_term |
CCA received in response to a CCR-Terminate. |
cca_usage |
CCA received with usage monitoring information. |
cca_unknown_type |
CCA received whose request type PEM could not identify. |
Rows for Diameter messages — Re-Auth-Request (RAR) and Re-Auth-Answer (RAA)¶
| Field | Description |
|---|---|
rar |
Re-Auth-Request messages received from the PCRF (unsolicited policy push). |
raa |
Re-Auth-Answer messages sent back to the PCRF in response to a RAR. |
Key Diagnostics¶
ccr_*_throttle.errorsgreater than zero: This should not happen in normal operation. It indicates an internal bookkeeping issue. Report it as a defect.cca_unknown_typegreater than zero: PEM received a CCA that it could not classify. This points to a PCRF interoperability or parsing issue.sess.currentdoes not equalsess_prov.current + sess_prov_no.current + sess_prov_pend.current + sess_prov_err.current: A session is unaccounted for in the state machine. Report this as a defect.sess_prov_err.currentnon-zero and growing: Sessions cannot be provisioned. Check PCRF reachability and CCA error codes (cca.errors,cca_init.errors).ccr_*_throttle.totalgrowing steadily: The PCRF is repeatedly responding “too busy.” This is a capacity issue on the PCRF side.ccr.retriesorrar.retriesgrowing whilecca.errorsorraa.errorsstay flat: Requests are timing out without receiving any response. Check network connectivity and PCRF reachability.sess_deleted.totalconsistently lower thansess.total: Sessions are being created but not cleanly removed. Check for entries stuck insess_term_pend.
pem_tcpopt_stat¶
This table shows how often each TCP optimization profile was applied to a flow and how often that application failed. When PEM applies a profile, it pushes eight TCP options as a batch to the TCP filter.
The eight options are: early retransmit, retransmit threshold, loss-ignore rate/burst, rate pacing, receive window, send buffer, congestion control algorithm, and proxy buffer (low/high).
Fields¶
| Field | Description |
|---|---|
name |
Name of the TCP optimization profile, applied to the client (subscriber/uplink) or server (network/downlink) side. A row appears the first time a flow tries to apply the profile. |
count |
Number of flows that successfully received all eight TCP options from this profile. |
failed |
Number of flows where the profile could not be applied. Either the profile values were invalid or the TCP filter rejected an option for the connection's current state. |
Key Diagnostics¶
failedcounter increasing: A healthy configuration should not fail to set TCP options. Check the TMM debug logs for TCP optimization error messages to identify the cause.A profile row does not appear: The profile either never matched any traffic or the flow never reached the point where TCP options are applied. Check policy match logs.
countis much lower than expected: TCP options are applied only after the peer flow is established. If peer setup is delayed or failing, the apply step is deferred. Investigate connection setup issues.
pem_bin_stats¶
This table provides visibility into PEM session database and DSSM operations. It shows how the local cache and external DSSM are used and whether create, read, update, and delete (CRUD) operations are succeeding.
Rows per bins¶
| Bin | Description |
|---|---|
pemdb_session_bin_cache |
Local in-memory cache of subscriber session records. |
pemdb_session_ip_bin_cache |
Local cache of session-to-IP mappings. |
pemdb_global_bin_cache |
Local cache of subscriber ID records. |
pemdb_gx_bin_cache |
Local cache of Gx session records. |
pemdb_session_bin |
Primary subscriber session record in the external DSSM. |
pemdb_session_ip_bin |
Session-to-IP mapping table in the external DSSM. |
pemdb_global_bin |
Subscriber ID table in the external DSSM. |
pemdb_gx_bin |
Gx session table in the external DSSM. |
pemdb_local_bin |
Local session state (not replicated to DSSM). |
pemdb_session_reporting_bin |
Usage and reporting records. |
columns per bins¶
| Column | Description |
|---|---|
add_total |
Total create or update operations attempted. |
del_total |
Total delete operations attempted. |
lookup_total |
Total lookup operations attempted. |
add_err_ok |
Create operations that succeeded. |
add_err_timeout |
Create operations that timed out (DSSM was slow to respond). |
add_err_db |
Create operations that received a database error from DSSM. |
add_err_mem |
Create operations that failed because of insufficient memory. |
add_err_inprogress |
Create operations sent to DSSM asynchronously (pending completion). |
del_err_timeout |
Delete operations that timed out. |
del_err_not_found |
Delete operations attempted on a record that does not exist. |
lookup_err_not_found |
Lookups where the session was not in the local cache and must go to DSSM. |
lookup_err_timeout |
Lookups where DSSM did not respond in time. |
lookup_err_db |
Lookups where DSSM returned a database error. |
lookup_err_inprogress |
Lookups sent to DSSM asynchronously (pending completion). |
Key Diagnostics¶
add_err_mem,del_err_mem, orlookup_err_memincreasing: Memory allocation is failing. Check overall TMM memory pressure.*_err_dbor*_err_otherincreasing: An unexpected storage failure occurred. Check DSSM logs at the corresponding timestamps. This should not happen in healthy operation.*_err_timeoutgrowing on non-cache bins (pemdb_session_bin,pemdb_session_ip_bin,pemdb_global_bin,pemdb_gx_bin): The external DSSM is slow or unreachable. Cross-check withpem_sessiondb_rtt_statsandpem_dssm_rtt_stats.*_err_inprogressstaying high without a matching rise in*_err_ok: Asynchronous DSSM callbacks are not completing. Sessions may be stuck.add_err_not_foundincreasing: A create operation reporting “not found” is abnormal. Report this as a defect.Error columns non-zero on
pemdb_local_bin: This bin has no external dependency. Errors here point to a local resource issue (for example, memory), not a DSSM or network problem.
pem_global_stat¶
This table tracks PEM’s internal asynchronous processing and iRule activity. Use it to spot issues such as logging failures or iRule suspend/resume imbalances.
Fields¶
| Field | Description |
|---|---|
spmdb_async_cb |
Total DSSM asynchronous round-trips completed. |
pem_spm_async_cb |
Subscriber Policy Manager (SPM) layer asynchronous completions. |
pem_async_cb |
PEM layer asynchronous completions. |
tmm_cb |
TMM layer callbacks into PEM. |
irule_req |
iRule requests to PEM. |
tcl_susp |
iRule Tcl suspension events. |
tcl_resume |
iRule Tcl resume events. |
tcl_err |
iRule Tcl errors. |
Key Diagnostics¶
spmdb_async_cbgrowing at a much higher rate than session updates: In healthy operation, expect roughly one to two DSSM round-trips per update. If the ratio reaches five to ten, each update is triggering a cascade of DSSM operations. This can indicate cache exhaustion or DSSM pressure.tcl_suspnot roughly matchingtcl_resume: An imbalance between suspensions and resumes suggests iRule processing issues.
pem_radius_stat¶
This table tracks RADIUS accounting messages that PEM processes.
Fields¶
| Field | Description |
|---|---|
start.total |
RADIUS Accounting-Start messages received. |
start.processed |
Accounting-Start messages that successfully created a session. |
start.errors |
Accounting-Start messages that failed. |
start.retrans |
Retransmitted Accounting-Start messages. |
stop.total |
RADIUS Accounting-Stop messages received. |
stop.processed |
Accounting-Stop messages that successfully deleted a session. |
stop.errors |
Accounting-Stop messages that failed. |
interim.total |
RADIUS Interim-Update messages received. |
interim.processed |
Interim-Update messages that successfully updated a session. |
interim.errors |
Interim-Update messages that failed. |
interim.retrans |
Retransmitted Interim-Update messages. |
acct_on.total |
NAS reboot accounting-on messages received. |
acct_off.total |
NAS reboot accounting-off messages received. |
Key Diagnostics¶
For
start,stop, orinterim:processed + errorsdoes not matchtotal: Requests may be stuck and not completing.errorsincreasing on any message type: Check PCRF and session-store connectivity, and review TMM logs for matching error messages.start.retransincreasing: The AAA or NAS system is resending requests faster than the configured retransmit timeout.totalincreasing whileprocessed,retrans, anderrorsstay flat: Messages may be stuck mid-processing. Report this as a possible defect.retransincrementing foracct_on,interim, oracct_off: Retransmission should not occur for these message types. Report this as a defect.
pem_hudnode_opt_stat¶
This table tracks PEM data-path optimization decisions. It shows how often filter nodes (HTTP, GPA, ADAPT) were removed from a flow’s processing chain and how often flows were offloaded to a faster path.
Higher counts in this table mean more flows are bypassing unnecessary processing, which is the desired outcome.
Fields¶
| Field | Description |
|---|---|
http_client |
HTTP filter node removed from the client (subscriber) side of the flow. |
http_server |
HTTP filter node removed from the server (network) side of the flow. |
gpa_client |
GPA filter node removed from the client side. |
gpa_server |
GPA filter node removed from the server side. |
adapt_client |
ADAPT (ICAP content adaptation) filter node removed from the client side. This can also increment automatically when http_client is removed, because ADAPT depends on HTTP. |
adapt_server |
ADAPT filter node removed from the server side. This can also increment automatically when http_server is removed. |
epva_offload |
Flow offloaded to the ePVA hardware acceleration chip, bypassing the software processing chain entirely. |
fastl4_offload |
Flow offloaded to the software FastL4/BigTCP path when ePVA offload was not possible. |
fastl4_switch |
An active flow's listener was switched to an alternate BigTCP-optimized listener mid-stream. |
Key Diagnostics¶
All optimization counters at zero despite high traffic and simple policies: Check for iRules on the virtual server. iRule presence explicitly skips optimization.
fastl4_switchgrowing whileepva_offloadandfastl4_offloadstay flat: Flows are being redirected mid-stream instead of being classified as offload-eligible from the start. Review the alternate-listener configuration.epva_offloadat zero on hardware that supports ePVA whilefastl4_offloadis high: Flows are falling back to the software path. Check for policy actions that exclude ePVA offload and confirm ePVA hardware eligibility on the platform.
pem_sessiondb_rtt_stats¶
This table provides round-trip time (RTT) measurements for PEM session database operations. Use it to identify performance degradation in the local session database layer.
Columns¶
| Column | Description |
|---|---|
count |
Number of transactions completed. |
min_rtt_us |
Minimum RTT in microseconds. |
max_rtt_us |
Maximum RTT in microseconds. |
avg_rtt_us |
Average RTT in microseconds. |
rtt_0_15us |
Transactions completed in 0–15 microseconds. |
rtt_15_250us |
Transactions completed in 15–250 microseconds. |
rtt_250_500us |
Transactions completed in 250–500 microseconds. |
rtt_500_750us |
Transactions completed in 500–750 microseconds. |
rtt_750_1000us |
Transactions completed in 750–1,000 microseconds. |
rtt_1000_2000us |
Transactions completed in 1,000–2,000 microseconds. |
rtt_above_2000 |
Transactions that took more than 2,000 microseconds. |
Rows¶
Each bin and operation type combination has its own row, in the format <bin>/<operation>. For example:
pemdb_session_bin/ADDpemdb_session_bin/LOOKUPpemdb_session_bin/DELETE
Example output¶
tmctl -d blade -w 300 pem_sessiondb_rtt_stats
name count min_rtt_us max_rtt_us avg_rtt_us rtt_0_15us rtt_15_250us ...
--------------------------- ----- ---------- ---------- ---------- ---------- ------------ ...
pemdb_session_bin/ADD 968 11 86 28 625 343 ...
pemdb_session_bin/LOOKUP 64836 0 1259 3 64231 600 ...
pemdb_local_bin/ADD 968 2 60 3 963 5 ...
pemdb_local_bin/LOOKUP 7360 0 177 2 7264 96 ...
Key Diagnostics¶
Any RTT value (minimum, maximum, or average) exceeds 15 microseconds: Treat the session database performance as degraded. Investigate local memory pressure and system load.
pem_dssm_rtt_stats¶
This table provides RTT measurements for PEM interactions with the external Distributed Session State Manager (DSSM). Use it to identify performance degradation in the DSSM communication path.
Columns¶
| Column | Description |
|---|---|
count |
Number of transactions completed. |
min_rtt_us |
Minimum RTT in microseconds. |
max_rtt_us |
Maximum RTT in microseconds. |
avg_rtt_us |
Average RTT in microseconds. |
rtt_0ms_3ms |
Transactions completed in 0–3 milliseconds. |
rtt_3ms_6ms |
Transactions completed in 3–6 milliseconds. |
rtt_6ms_9ms |
Transactions completed in 6–9 milliseconds. |
rtt_9ms_12ms |
Transactions completed in 9–12 milliseconds. |
rtt_above_12ms |
Transactions that took more than 12 milliseconds. |
Rows¶
Like pem_sessiondb_rtt_stats, each row represents a bin and operation combination (for example, pemdb_session_bin/ADD, pemdb_gx_session_bin/LOOKUP).
Example output¶
tmctl -d blade -w 300 pem_dssm_rtt_stats
name count min_rtt_us max_rtt_us avg_rtt_us rtt_0ms_3ms rtt_3ms_6ms ...
--------------------------- ----- ---------- ---------- ---------- ----------- ----------- ...
pemdb_session_bin/ADD 1000 2384 21735 6398 652 278 ...
pemdb_session_bin/LOOKUP 300 3793 15996 5197 266 28 ...
pemdb_gx_session_bin/ADD 300 3129 14073 5573 220 73 ...
Key Diagnostics¶
Any RTT value (minimum, maximum, or average) exceeds 3 milliseconds: Treat DSSM performance as degraded. Check DSSM reachability, network latency, and DSSM resource utilization.
pem_hsl_stat¶
This table tracks High-Speed Logging (HSL) reporting activity for PEM.
Fields¶
| Field | Description |
|---|---|
session_based_records_sent |
Session-level HSL call detail records (CDRs) sent. |
flow_start_records_sent |
Flow-start HSL records sent. |
flow_stop_records_sent |
Flow-stop HSL records sent. |
flow_interim_records_sent |
Flow-interim (periodic) HSL records sent. |
transaction_records_sent |
Per-transaction HSL records sent. |
records_skipped |
HSL records dropped because of congestion or backpressure. |
media_qoe_records_sent |
Quality of Experience (QoE) records sent. |
media_qoe_records_skipped |
QoE records dropped. |
dtos_td_records_sent |
Tethering-detection records sent. |
Key Diagnostics¶
records_skippedincreasing: The HSL receiver is slow or unreachable. HSL backpressure may delay PEM flow reporting.
pem_radius_avp_stat¶
This table tracks RADIUS Attribute-Value Pair (AVP) parsing outcomes. When PEM processes a RADIUS accounting message, it validates each AVP twice: once during subscriber ID construction and again during attribute import.
Fields¶
| Field | Description |
|---|---|
success |
Number of RADIUS accounting messages where parsing succeeded. |
failures |
Number of RADIUS accounting messages where parsing failed (for example, an attribute value exceeded the configured maximum length). |
subs_id_parse_fail |
Number of parsing failures in the subscriber ID construction step. |
parse_failed |
Number of parsing failures in the attribute import step. |
Example output¶
tmctl -d blade -w 300 pem_radius_avp_stat
avp_key failures subs_id_parse_fail parse_failed
------------------------ --------- ------------------ -------------------
USER-NAME 2 2 0
FRAMED-IP-ADDRESS 0 0 0
VENDOR-SPECIFIC [10415:1] 1 0 0
Key Diagnostics¶
failuresorsubs_id_parse_failnon-zero: Review the RADIUS attributes being sent by the AAA or NAS system. Confirm that attribute values don’t exceed the configured AVP length limits.
gpa_dpi_stats¶
This table tracks application classification decisions made by deep packet inspection (DPI).
Fields¶
| Field | Description |
|---|---|
count |
Number of flows classified for a specific application. |
dpi |
Classification decisions made by the DPI engine. |
flbl |
Classification decisions made because of flow bundling. |
srdb |
Classification decisions made by the SRDB cache. |
custom |
Classification decisions from custom categories. |
gpa_urlcat_stats¶
This table tracks URL categorization decisions.
Fields¶
| Field | Description |
|---|---|
count |
Number of flows categorized for a specific application. |
srdb |
Categorization decisions made by the SRDB cache. |
cloud |
Categorization decisions made by the cloud cache. |
Statistics tables not supported in CNF¶
The following statistics tables are not supported in Cloud-Native Network Function (CNF) deployments:
pem_forwarding_endpoint_statspem_persistence_statstmm/content_insertspem_multiple_ip_statpem_tethering_statpem_rancon_statpem_dtos_statpem_sd_statpem_gy_stat