GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
PMC.CMN-600(3) FreeBSD Library Functions Manual PMC.CMN-600(3)

pmc.cmn-600Library for accessing the Arm CoreLink CMN-600 Coherent Mesh Network Controller performance counter events

Performance Counters Library (libpmc, -lpmc)

#include <pmc.h>

CMN-600 PMU counters may be configured to count any one of a defined set of hardware events. Unlike other performance counters, counters for the CMN-600 require the node ID to set up.

Node ID information currently can be obtained one of two ways. Using bootverbose, for example set sysctl debug.bootverbose=1 and then load the hwpmc(4) KLD module. The cmn600 module will be loaded automatically as a dependency:

$ sysctl debug.bootverbose=1
$ kldload hwpmc
Another way is to use sysctl to trigger dump of nodes tree to system console:
$ sysctl dev.cmn600.0.dump_nodes=1

Some BIOS versions of dual-socket machines have no NUMA domain information in ACPI. In such cases, to get more accurate events statistics, set the kernel environment variable hint.cmn600.{unit}.domain={value}. Where {unit} is a cmn600 device unit number and {value} is the NUMA domain of the CPU package containing that CMN-600 controller. Example:

$ kenv hint.cmn600.0.domain=0
$ kenv hint.cmn600.1.domain=1
$ kldunload hwpmc cmn600
$ kldload hwpmc

Arm CoreLink CMN-600 Coherent Mesh Network Controller performance counters are documented in Revision: r3p2, Arm CoreLink CMN-600 Coherent Mesh Network Technical Reference Manual, ARM Limited, 2020.

CMN-600 PMU counters support the following capabilities:

PMC_CAP_CASCADE No
PMC_CAP_EDGE No
PMC_CAP_INTERRUPT Yes
PMC_CAP_INVERT No
PMC_CAP_READ Yes
PMC_CAP_PRECISE No
PMC_CAP_SYSTEM Yes
PMC_CAP_TAGGING No
PMC_CAP_THRESHOLD Yes
PMC_CAP_USER No
PMC_CAP_WRITE Yes

Event specifiers for these PMCs support the following common qualifiers:

nodeid
Request counting for specific event at node nodeid.
value
Filtering by occupancy type.
port
Count only events matched by port. (East, West, North, South, devport0, devport1 or numeric 0 to 5)
channel
Filter events by XP node channel. (REQ, RSP, SNP, DAT or 0, 1, 2, 3)

These PMCs are named using a class name prefix of “CMN600_PMU_”.

The following list of PMC events are available:

Number of DVMOP requests received. This includes all the sub-types include TLB invalidate, Branch predictor invalidate, instruction cache (physical and virtual) invalidate.
Number of DVM Sync requests received.
Number of incoming DVMOP requests that are subject to VMID based filtering. This is a measure of the effectiveness of VMID based filtering and potential reduction in DVM snoops.
Number of incoming requests that are retried. This is a measure of the retry rate.
Counts the tracker occupancy in DN. "occupancy": All, dvmop, dvmsync
Number of DVMOP TLB invalidate requests received.
Number of DVMOP Branch predictor invalidate requests received.
Number of DVMOP physical instruction cache invalidate requests received.
Number of DVMOP virtual instruction cache invalidate requests received.
Number of DVM op requests to RNDs, BPI or PICI/VICI, that were filtered
Number of SNPs sent to RNs
Number of SNPs stalled to RNs due to lack of Crds
DVM tracker full counter

Counts total cache misses in first lookup result (high priority)
Counts number of cache accesses in first access (high priority)
Counts total allocations in HN SLC (all cache line allocations to SLC)
Counts number of retried requests
Counts number of requests received by HN
Counts number of SF hits
Counts number of SF eviction cache invalidations initiated
Counts number of directed snoops sent (not including SF back invalidation)
Counts number of multicast snoops sent (not including SF back invalidation)
Counts number of SLC evictions (dirty only)
Counts number of SLC fills to an invalid way
Counts number of retried transactions by the MC
Counts number of requests sent to MC
Counts number of times a HighHigh priority request is protocol-retried at the HN-F
Counts the POCQ occupancy in HN-F. Support argument "occupancy". Accept: All, Read, Write, Atomic, Stash. Default: All.
Counts number of POCQ address hazards upon allocation
Counts number of POCQ address hazards upon allocation for atomic operations
Counts number of times ADQ is full for Ld/St/SWP type atomic operations while POCQ has pending operations
Counts number of times ADQ is full for CMP type atomic operations while POCQ has pending operations
Counts number of times HN-F has a pending TXDAT flit but no credits to upload
Counts number of times HN-F has a pending TXRSP flit but no credits to upload
Counts number of times requests are replayed in SLC pipe due to SEQ being full
Counts number of times a request in SLC hit a pending SF eviction in SEQ
Counts number of snoops sent including directed, multicast, and SF back invalidation
Counts number of times directed snoops were sent due to SF back invalidation
Counts number of times multicast snoops were sent due to SF back invalidation
Counts number of times snooped were sent due to untracked RNF's
Counts number of times SF back invalidation resulted in dirty line intervention from the RN
Counts number of times stash snoops were sent
Counts number of times stash snoops resulted in data pull from the RN
Counts number of times data forward snoops were sent

RRT read occupancy count overflow
RRT write occupancy count overflow
RDT read occupancy count overflow
RDT write occupancy count overflow
WDB occupancy count overflow
RRT read allocation
RRT write allocation
RDT read allocation
RDT write allocation
WDB allocation
RETRYACK TXRSP flit sent
ARVALID set without ARREADY event
ARREADY set without ARVALID event
AWVALID set without AWREADY event
AWREADY set without AWVALID event
WVALID set without WREADY event
TXDAT stall (TXDAT valid but no link credit available)
Non-PCIe serialization event
PCIe serialization event

Number of flits transmitted on a specified port and CHI channel. This is a measure of the flit transfer bandwidth from an XP. Note: On device ports, this event also includes link flit transfers.
Number of cycles when a flit is stalled at an XP waiting for link credits at a specified port and CHI channel. This is a measure of the flit traffic congestion on the mesh and at the flit download ports.
Number of times when a partial DAT flit is uploaded onto the mesh from a RN-F_CHIA port. Partial DAT flit transmission occurs when XP is not able to combine two 128b DAT flits and send them over the 256b DAT channel. This can happen under 2 circumstances: 1. Only one 128b DAT flit is received within a transmission time window. 2. Two 128b DAT flits are received but they are not two halves of a
single 256b word.

Read request
Write request
CMO request
RETRYACK TXRSP flit sent
TXDAT flit seen
TXRSP flit seen
Read request tracker occupancy count overflow
Write request tracker occupancy count overflow
CMO request tracker occupancy count overflow
WDB occupancy count overflow
Read AXI pending tracker occupancy count overflow
CMO AXI pending tracker occupancy count overflow
ARVALID set without ARREADY
AWVALID set without AWREADY
WVALID set without WREADY
TXDAT stall (TXDAT valid but no link credit available)
TXRSP stall (TXRSP valid but no link credit available)

Number of RData beats, RVALID and RREADY, dispatched on port 0. This is a measure of the read bandwidth, including CMO responses.
Number of RData beats, RVALID and RREADY, dispatched on port 1. This is a measure of the read bandwidth, including CMO responses.
Number of RData beats, RVALID and RREADY, dispatched on port 2. This is a measure of the read bandwidth, including CMO responses.
Number of RXDAT flits received. This is a measure of the true read data bandwidth, excluding CMOs.
Number of TXDAT flits dispatched. This is a measure of the write bandwidth.
Number of TXREQ flits dispatched. This is a measure of the total request bandwidth.
Number of retried TXREQ flits dispatched. This is a measure of the retry rate.
All entries in the read request tracker are occupied. This is a measure of oversubscription in the read request tracker.
All entries in the write request tracker are occupied. This is a measure of oversubscription in the write request tracker.
Number of replayed TXREQ flits. This is the measure of replay rate.
Number of write data cancels sent. This is the measure of write cancel rate.
Number of WData beats, WVALID and WREADY, dispatched on port 0. This is a measure of write bandwidth on AXI port 0.
Number of WData beats, WVALID and WREADY, dispatched on port 1. This is a measure of write bandwidth on AXI port 1.
Number of WData beats, WVALID and WREADY, dispatched on port 2. This is a measure of write bandwidth on AXI port 2.
Number of allocations in the read request tracker. This is a measure of read transaction count.
Number of allocations in the write request tracker. This is a measure of write transaction count.
Number of cycles for which Read Data Buffer state machine is in Unordered Mode.
Number of cycles for which Read Data Buffer state machine is in Replay mode
Number of cycles for which Read Data Buffer state machine is in hybrid mode. Hybrid mode is where there is mix of ordered/unordered traffic.
Number of cycles for which Read Data Buffer state machine is in ordered Mode.

Number of RData beats, RVALID and RREADY, dispatched on port 0. This is a measure of the read bandwidth, including CMO responses.
Number of RData beats, RVALID and RREADY, dispatched on port 1. This is a measure of the read bandwidth, including CMO responses.
Number of RData beats, RVALID and RREADY, dispatched on port 2. This is a measure of the read bandwidth, including CMO responses.
Number of RXDAT flits received. This is a measure of the true read data bandwidth, excluding CMOs.
Number of TXDAT flits dispatched. This is a measure of the write bandwidth.
Number of TXREQ flits dispatched. This is a measure of the total request bandwidth.
Number of retried TXREQ flits dispatched. This is a measure of the retry rate.
All entries in the read request tracker are occupied. This is a measure of oversubscription in the read request tracker.
All entries in the write request tracker are occupied. This is a measure of oversubscription in the write request tracker.
Number of replayed TXREQ flits. This is the measure of replay rate.
Number of write data cancels sent. This is the measure of write cancel rate
Number of WData beats, WVALID and WREADY, dispatched on port 0. This is a measure of write bandwidth on AXI port 0.
Number of WData beats, WVALID and WREADY, dispatched on port 1. This is a measure of write bandwidth on AXI port 1.
Number of WData beats, WVALID and WREADY, dispatched on port 2. This is a measure of write bandwidth on AXI port 2.
Number of allocations in the read request tracker. This is a measure of read transaction count.
Number of allocations in the write request tracker. This is a measure of write transaction count
Number of cycles for which Read Data Buffer state machine is in Unordered Mode.
Number of cycles for which Read Data Buffer state machine is in Replay mode
Number of cycles for which Read Data Buffer state machine is in hybrid mode. Hybrid mode is where there is mix of ordered/unordered traffic.
Number of cycles for which Read Data Buffer state machine is in ordered Mode.

(Note: CXHA events descriptions are guessed)

Number of Read DAT Bypass
Number of CHI RSP up Stall
Number of CHI DAT up Stall
Number of Snoop Pcrd Stall on Link 0
Number of Snoop Pcrd Stall on Link 1
Number of Snoop Pcrd Stall on Link 2
Request Tracker Occupancy
Read Data Buffer Occupancy
Read Data Buffer Bypass Occupancy
Write Data Buffer Occupancy
Snoop Tracker Occupancy
SDB Occupancy
Snoop Hazard Occupancy

Request tracker occupancy
Snoop tracker occupancy
Read data buffer occupancy
Write data buffer occupancy
Snoop sink buffer occupancy
Snoop broadcasts
Number of request chains formed larger than one
Average size of request chains, only for chain sizes larger than one
Local RA upload stalls to CHI because of contention with HA
Local RA upload stalls to CHI because of contention with HA
Memory Data Request available, but no DAT Pcrd to send over CCIX per LinkEnd 0
Memory Data Request available, but no DAT Pcrd to send over CCIX per LinkEnd 1
Memory Data Request available, but no DAT Pcrd to send over CCIX per LinkEnd 2
Memory Data Request available but no Req Pcrd to send over CCIX per LinkEnd 0
Memory Data Request available but no Req Pcrd to send over CCIX per LinkEnd 1
Memory Data Request available but no Req Pcrd to send over CCIX per LinkEnd 2
CHI external RSP stall
CHI external DAT stall

RX TLP for Link 0
RX TLP for Link 1
RX TLP for Link 2
TX TLP for Link 0
TX TLP for Link 1
TX TLP for Link 2
RX CXS for Link 0
RX CXS for Link 1
RX CXS for Link 2
TX CXS for Link 0
TX CXS for Link 1
TX CXS for Link 2
Average RX TLP size in DWs
Average TX TLP size in DWs
Average RX TLP size in CCIX messages
Average TX TLP size in CCIX messages
Average size of RX CXS in DWs within a beat
Average size of TX CXS in DWs within a beat
TX CXS link credit backpressure
RX TLP buffer full and backpressured
TX TLP buffer full and backpressured
Average latency to process an RX TLP
Average latency to form a TX TLP

pmc(3), pmc.atom(3), pmc.core(3), pmc.core2(3), pmc.corei7(3), pmc.corei7uc(3), pmc.iaf(3), pmc.iaf(3), pmc.k7(3), pmc.k8(3), pmc.soft(3), pmc.tsc(3), pmc.westmere(3), pmc.westmereuc(3), pmc_cpuinfo(3), pmclog(3), hwpmc(4)

The pmc library first appeared in FreeBSD 6.0.
The pmc.cmn-600 driver was added in FreeBSD 14.0.

The Performance Counters Library (libpmc, -lpmc) library was written by Joseph Koshy <jkoshy@FreeBSD.org>, Oleksandr Rybalko <ray@FreeBSD.org>.
The CMN-600 PMU driver was sponsored by ARM Ltd. This manual page was written by Oleksandr Rybalko <ray@FreeBSD.org>.

December 19, 2021 FreeBSD 14.3-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.