FAPOLICYD.METRICS(5)
π¦ fapolicyd.metrics β NAME π¦
okay so bestie, welcome to fapolicyd.metrics(5) β the manual page for the fapolicyd runtime metrics report file π
it lives in the File Formats section and it's basically the group chat receipts of everything your daemon's been up to π«Ά
β¨ DESCRIPTION β¨
The /run/fapolicyd/fapolicyd.metrics file contains the most recent daemon metrics report, the one you asked for via fapolicyd-cli --check-metrics, fapolicyd-cli --reset-metrics, or the periodic interval reporting. π
The metrics report answers where are the runtime hot paths and cache effects at? The state report β that one's written to /run/fapolicyd/fapolicyd.state β answers is the daemon healthy and configured as expected? Two different reports, two different jobs, no crossover π
Every field is printed as a name: value line. Section headers end in a colon. Worker-specific drill-down fields are indented by two spaces under the related aggregate section. π§
π HEADER π
Last metrics resetβ the wall-clock time of the last successful metrics reset, orneverwhen metrics have not been reset since daemon start. Reset reports show the counter window that is about to be reset; later metrics reports show the new reset time. β°Config generationβ the active decision configuration generation at report time. The counters may span earlier generations when configuration was reloaded after the last metrics reset.Ruleset generationβ the active ruleset generation that the counters and rule hit table apply to.Trust database generationβ the active trust database generation used by new decision reads at report time. This is a daemon-runtime generation that starts at1during startup. The counters may span earlier trust database generations when reloads occurred after the last metrics reset.LMDB environment generationβ the active physical LMDB environment generation at report time. This increments only when fapolicyd closes the live environment and publishes a validated replacement environment for compaction or high-water reset. It complements the trust database generation: trust generations publish logical content inside an environment, while LMDB environment generations identify the storage file currently backing those logical generations. ποΈTrust database entriesβ the number of records in the active trust database generation at report time.
π Decision outcomes π
Allowed accessesβ the number of policy decisions that allowed access. βDenied accessesβ the number of policy decisions that denied access. π«Allowed by ruleβ the number of allow decisions produced by a matching rule.Allowed by fallthroughβ the number of allow decisions produced when no rule had an opinion and the daemon used the default allow behavior. Detailed fallthrough dimensions are printed when this value is non-zero. π
π Inter-thread queue & defer activity π
Inter-thread current queue depthβ the number of fanotify permission events currently waiting in internal worker queues.Inter-thread max queue depthβ the highest per-worker internal event queue depth observed since the last metrics reset.Inter-thread queue full countβ the number of failed enqueue attempts across all worker queues since the last metrics reset.Inter-thread oldest queued ageβ the oldest currently queued event age across all worker queues.Decision worker N current queue depthβ the number of fanotify permission events currently waiting in that worker's queue.Decision worker N max queue depthβ the highest queue depth observed for that worker since the last metrics reset.Decision worker N queue full countβ the number of failed enqueue attempts for that worker since the last metrics reset.Decision worker N oldest queued ageβ the age of the oldest event currently waiting in that worker's queue. The value is formatted with a human-readable unit such asmsors. β³Subject deferred eventsβ the cumulative number of fanotify permission events deferred since the last metrics reset because another process was still building subject pattern state in the same cache slot.Subject defer max depthβ the highest number of concurrently deferred subject events observed since the last metrics reset.Subject defer fallbacksβ the cumulative number of defer-array-full fallbacks since the last metrics reset. This field also appears in the state report because non-zero values are health indicators. π©ΊDecision worker N Subject deferred eventsβ the number of subject-slot deferrals owned by one decision worker since the last metrics reset.Decision worker N Subject defer max depthβ the highest number of concurrently deferred subject events observed in one decision worker since the last metrics reset.Decision worker N Subject defer fallbacksβ the number of defer-array-full fallbacks in one decision worker since the last metrics reset.Decision worker N Subject defer current depthβ the number of subject events currently parked in one decision worker's defer array.Decision worker N Subject defer oldest ageβ the age of the oldest currently deferred event in one decision worker's defer array.
π Subject cache effectiveness π
Subject hitsβ the number of subject cache hits. πSubject missesβ the number of subject cache misses.Subject collisionsβ the number of populated subject cache slots whose full process identity did not match the current event and therefore had to be evicted before reuse.Subject evictionsβ the number of subject cache evictions and the eviction percentage relative to subject cache hits.Early subject cache evictionsβ the number of subject cache entries evicted before process startup state was complete. This field also appears in the state report because non-zero values are health indicators.Subject BUILDING tracer evictionsβ the number ofBUILDINGsubject cache entries evicted because the owning process was traced and could hold the slot indefinitely. This field also appears in the state report because non-zero values are health indicators.Subject BUILDING stale evictionsβ the number ofBUILDINGsubject cache entries evicted because their startup state stayed incomplete past the bounded stale window. This field also appears in the state report because non-zero values are health indicators.Decision worker N Subject hitsβ the number of subject cache hits in one decision worker.Decision worker N Subject missesβ the number of subject cache misses in one decision worker.Decision worker N Subject collisionsβ the number of subject cache collisions in one decision worker.Decision worker N Subject evictionsβ the number of subject cache evictions in one decision worker.Decision worker N Early subject cache evictionsβ the number of early subject cache evictions in one decision worker.Decision worker N Subject BUILDING tracer evictionsβ the number of tracedBUILDINGsubject evictions in one decision worker.Decision worker N Subject BUILDING stale evictionsβ the number of staleBUILDINGsubject evictions in one decision worker.
π¦ Object cache effectiveness π¦
Object hitsβ the number of object cache hits.Object missesβ the number of object cache misses.Object collisionsβ the number of populated object cache slots whose full file identity did not match the current event and therefore had to be evicted before reuse.Object evictionsβ the number of object cache evictions and the eviction percentage relative to object cache hits.Decision worker N Object hitsβ the number of object cache hits in one decision worker.Decision worker N Object missesβ the number of object cache misses in one decision worker.Decision worker N Object collisionsβ the number of object cache collisions in one decision worker.Decision worker N Object evictionsβ the number of object cache evictions in one decision worker.
π Trust database lookups π
Trust DB lookupsβ the number of trust database lookup attempts since the last metrics reset.Trust DB reader slots fullβ the number of lookup attempts that could not open an LMDB read transaction because all LMDB reader slots were in use. π
Trust database lookup latency is reported by fapolicyd.timing(5) only while manual timing collection is armed, so normal metrics collection does not add per-lookup clock reads. β±οΈ
π Rule hit counts π
Hits/ruleβ one line per configured rule, in rule order. The line includes the one-based rule number, hit count, and rule text. Rule hit counters are naturally scoped to the active ruleset generation and start at zero when a new ruleset is loaded. A metrics reset also clears the counters after reporting them, which allows focused tests against the currently loaded rules without forcing a rule reload. π₯
πΈ Subject attribute lookups πΈ
Subject attrβ one line is printed for each counted subject attribute in the formname requests=count lookups=count. Therequestscount increments when policy evaluation or syslog formatting asks for the attribute. Thelookupscount increments only when that attribute was absent from the event subject cache and fapolicyd had to compute or fetch it.
π Object attribute lookups π
Object attrβ one line is printed for each counted object attribute in the formname requests=count lookups=count. Therequestscount increments when policy evaluation or syslog formatting asks for the attribute. Thelookupscount increments only when that attribute was absent from the event object cache and fapolicyd had to compute or fetch it.
β NOTES β
Metrics resets affect counters in this report. Static configuration, current utilization snapshots, watched mounts, and health indicators are reported in fapolicyd.state(5) and are not reset by fapolicyd-cli --reset-metrics. π
π FILES π
/run/fapolicyd/fapolicyd.metricsβ okay so this is the runtime metrics report file, bestie. The one where all the numbers from this whole page actually live when fapolicyd is out there doing its thing. It's giving main character of the report world. β¨/run/fapolicyd/fapolicyd.stateβ the runtime state report file. Different file, different job, but same iconic/run/fapolicyd/address. π/run/fapolicyd/fapolicyd.timingβ and this one is the manual decision timing report. When does it get written? Okay so, three (3) scenarios, no cap:- when a privileged stop request ends an armed timing run π
- when a stop request finds timing unarmed (like, nothing was running, so here's your empty-ish report I guess) π
- when timing collection stops specifically to avoid counter overflow (aka the counters said "we cannot hold all this" and timing said "bet, shutting down" π)
It's literally/run/for all three, so if you're out here looking in/var/or somewhere else, that's not it bestie. The path is the path. π
π SEE ALSO π
Go read these next, fr fr β they're the rest of the fapolicyd cinematic universe:
fapolicyd(8)fapolicyd-cli(8)fapolicyd.conf(5)fapolicyd.rules(5)fapolicyd.state(5)fapolicyd.timing(5)- and
fapolicyd.trust(5)
and that's a wrap on the metrics page, bestie π«Ά go forth and vibe check your counters, you absolute icon π
shoutout to Red Hat for this one, dated May 2026, and yes the page tag is FAPOLICYD.METRICS(5) β remember it, cite it, slay it π
π¦ where this page comes from
- centos-stream 10: fapolicyd 2.0.1-1.el10 Β· GPL-3.0-or-later
- centos-stream 9: fapolicyd 2.0.1-1.el9 Β· GPL-3.0-or-later
- fedora 43: fapolicyd 2.0-1.fc43 Β· GPL-3.0-or-later
- fedora 44: fapolicyd 2.0.1-1.fc44 Β· GPL-3.0-or-later
- ubuntu stonking: fapolicyd 2.0-1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms