Lines Matching +full:cpu +full:- +full:driver

1 .\" Copyright (c) 2003-2008 Joseph Koshy
39 .Bd -ragged -offset indent
44 .Bd -ragged -offset indent
48 To load the driver as a module at boot time:
49 .Bd -literal -offset indent
53 Alternatively, to compile the driver into the kernel:
54 .Bd -ragged -offset indent
62 .Bd -ragged -offset indent
71 driver virtualizes the hardware performance monitoring facilities in
75 The driver supports multi-processor systems.
89 .Bl -tag -width ".Em Process-scope"
90 .It Em "Process-scope"
92 to a process it is attached to is scheduled on a CPU.
93 .It Em "System-scope"
99 .Bl -tag -width ".Em Counting"
107 In sampling modes, the PMCs are configured to sample the CPU
117 .Bl -tag -width indent
118 .It Process-scope, counting
120 scheduled on a CPU.
128 .It Process-scope, sampling
139 .It System-scope, counting
149 .It System-scope, sampling
150 These PMCs will periodically sample the instruction pointer of the CPU
160 System-wide statistical sampling can only be enabled by a process with
161 super-user privileges.
166 Processes may mix allocations of system-wide and process-private
178 Process-private PMCs need to be attached to a target process before
193 .Bl -bullet -compact
195 A non-jailed process with super-user privileges is allowed to attach
213 .Bl -tag -width indent
222 This modifier is valid only for a PMC being allocated in process-private
227 This modifier is valid only for a PMC being allocated in process-private
232 seen by the target process when it was scheduled on the CPU.
234 This modifier is valid only for a PMC being allocated in process-private
238 will maintain per-process counts for each target process attached to
241 the accumulated per-process count for that process will be written to the
260 driver may deliver signals to processes that have allocated PMCs:
261 .Bl -tag -width ".Dv SIGBUS"
265 operation was attempted on a process-private PMC that does not have
270 driver is being unloaded from the kernel.
279 .Bl -tag -width ".Dv PMC_DISP_STANDALONE" -compact
289 Non-disabled hardware counters in such a row may be used
304 driver operates using a system call number that is dynamically
309 driver supports the following operations:
310 .Bl -tag -width indent
315 driver will write log data to this file asynchronously.
329 Retrieve information about the highest possible CPU number for the system,
330 and the number of hardware performance monitoring counters available per CPU.
339 given CPU.
344 driver.
355 scheduled on a CPU.
387 .Bl -tag -width indent
392 The PMC needs to be in process-private mode and allocated without the
406 .Bl -tag -width indent
411 The PMC needs to be in process-private mode and allocated without the
424 .Bl -tag -width indent
425 .It Va kern.hwpmc.callchaindepth Pq integer, read-only
428 .It Va kern.hwpmc.debugflags Pq string, read-write
431 driver was compiled with
435 driver.
436 .It Va kern.hwpmc.hashsize Pq integer, read-only
440 .It Va kern.hwpmc.logbuffersize Pq integer, read-only
445 .It Va kern.hwpmc.mincount Pq integer, read-write
448 .It Va kern.hwpmc.mtxpoolsize Pq integer, read-only
449 The size of the spin mutex pool used by the PMC driver.
451 .It Va kern.hwpmc.nbuffers_pcpu Pq integer, read-only
456 .It Va kern.hwpmc.nsamples Pq integer, read-only
457 The number of entries in the per-CPU ring buffer used during sampling.
459 .It Va security.bsd.unprivileged_syspmcs Pq boolean, read-write
460 If set to non-zero, allow unprivileged processes to allocate system-wide
463 .It Va security.bsd.unprivileged_proc_debug Pq boolean, read-write
466 driver will only allow privileged processes to attach PMCs to other
477 The kernel driver requires all physical CPUs in an SMP system to have
479 .Ss Sparse CPU Numbering
480 On platforms that sparsely number CPUs and which support hot-plugging
481 of CPUs, requests that specify non-existent or disabled CPUs will fail
483 Applications allocating system-scope PMCs need to be aware of
492 driver preserves this behavior.
495 only a subset of hardware events on a per-logical CPU basis.
499 driver will reject allocation requests for process-private PMCs that
501 for each logical CPU.
503 .Bl -diag
538 This is useful for debugging the driver's functionality, primarily during
544 .Bd -literal -offset indent
554 variable, which provides fine-grained control over which types of events are
561 .Bl -tag -width "sampling" -compact -offset indent
562 .It cpu
569 Machine-dependent/class-dependent events
584 .Bd -ragged -offset indent
622 The string should contain a space-separated list of event specifiers.
624 (=), followed by a comma-separated list of minor event types.
631 .Bd -literal -offset indent
636 .Bd -literal -offset indent
641 .Bd -literal -offset indent
647 and can be inspected at run-time using the
655 driver may fail with the following errors:
656 .Bl -tag -width Er
669 process-private PMCs.
699 operation was requested on a system-wide sampling PMC without a log
707 A bad address was passed in to the driver.
711 An invalid CPU number was passed in for a
723 request to de-configure a log file was issued without a log file
730 An invalid CPU number was passed in for a
750 An invalid CPU number was specified during a
754 A CPU other than
758 request for a process-private PMC.
760 A CPU number of
764 request for a system-wide PMC.
775 request for a process-private PMC was issued for an event that does
776 not support counting on a per-logical CPU basis.
778 A PMC allocated for system-wide operation was specified with a
804 operation was requested for a PMC not in process-virtual mode, or
824 operation was requested for an absent or disabled CPU.
828 operation specified allocation of a system-wide PMC on an absent or
829 disabled CPU.
835 request was issued for a system-wide PMC that was allocated on a CPU
844 A sampling mode PMC was requested on a CPU lacking an APIC.
848 request was issued by a process without super-user
849 privilege or by a jailed super-user process.
872 request specified a non-existent process ID.
895 driver first appeared in
900 driver was written by
903 The driver samples the state of the kernel's logical processor support
905 On CPUs supporting logical processors, the driver could misbehave if
907 driver is active.
909 On the i386 architecture, the driver requires that the local APIC on the
911 Many single-processor motherboards keep the APIC disabled in BIOS; on
919 .Bl -enum
926 This ensures that unprivileged processes cannot allocate system-wide
935 driver into the kernel.
947 System administrators should note that on IA-32 platforms
949 makes the content of the IA-32 TSC counter available to all processes