PatchworkOS  28a9544
A non-POSIX operating system.
Loading...
Searching...
No Matches
performance

Performance driver. More...

Data Structures

struct  perf_cpu_ctx_t
 Per-CPU performance context. More...
 
struct  perf_process_ctx_t
 
struct  perf_thread_ctx_t
 Per-Thread performance context. More...
 
struct  stat_process_ctx_t
 Per-Process performance context. More...
 

Functions

void perf_cpu_ctx_init (perf_cpu_ctx_t *ctx)
 Initializes a per-CPU performance context, must be called on the CPU that owns the context.
 
void perf_process_ctx_init (perf_process_ctx_t *ctx)
 Initializes a per-process performance context.
 
void perf_thread_ctx_init (perf_thread_ctx_t *ctx)
 Initializes a per-thread performance context.
 
void perf_init (void)
 Initializes the performance driver.
 
void perf_interrupt_begin (cpu_t *self)
 Called at the beginning of an interrupt to update cpu performance data.
 
void perf_interrupt_end (cpu_t *self)
 Called at the end of an interrupt to update cpu performance data.
 
void perf_syscall_begin (void)
 Called at the beginning of a syscall to update process performance data.
 
void perf_syscall_end (void)
 Called at the end of a syscall to update process performance data.
 

Detailed Description

Performance driver.

The Performance driver is exposed in the /dev/perf directory. Below is an overview of the files in this directory.

Cpu performance

The /dev/perf/cpu file contains per-CPU performance data in the following format:

cpu idle_clocks active_clocks interrupt_clocks
%lu %lu %lu %lu
%lu %lu %lu %lu
...
%lu %lu %lu %lu

Memory performance

The /dev/perf/mem file contains memory performance data in the following format:

total_pages %lu
free_pages %lu
used_pages %lu
See also
Process for per-process performance data.

Function Documentation

◆ perf_cpu_ctx_init()

void perf_cpu_ctx_init ( perf_cpu_ctx_t ctx)

Initializes a per-CPU performance context, must be called on the CPU that owns the context.

Parameters
ctxThe context to initialize.

Definition at line 108 of file perf.c.

References perf_cpu_ctx_t::activeClocks, perf_cpu_ctx_t::idleClocks, perf_cpu_ctx_t::interruptBegin, perf_cpu_ctx_t::interruptClocks, perf_cpu_ctx_t::interruptEnd, perf_cpu_ctx_t::lock, and lock_init().

Referenced by cpu_init().

◆ perf_init()

void perf_init ( void  )

Initializes the performance driver.

Definition at line 131 of file perf.c.

References cpuFile, cpuOps, memFile, memOps, NULL, panic(), perfDir, sysfs_dir_new(), and sysfs_file_new().

Referenced by init_finalize().

◆ perf_interrupt_begin()

void perf_interrupt_begin ( cpu_t self)

◆ perf_interrupt_end()

void perf_interrupt_end ( cpu_t self)

Called at the end of an interrupt to update cpu performance data.

Must be called with interrupts disabled.

Parameters
selfThe current CPU.

Definition at line 187 of file perf.c.

References perf_cpu_ctx_t::interruptBegin, perf_cpu_ctx_t::interruptClocks, perf_cpu_ctx_t::interruptEnd, perf_cpu_ctx_t::lock, LOCK_SCOPE, cpu_t::perf, thread_t::perf, sched_thread_unsafe(), sys_time_uptime(), perf_thread_ctx_t::syscallBegin, and perf_thread_ctx_t::syscallEnd.

Referenced by interrupt_handler().

◆ perf_process_ctx_init()

void perf_process_ctx_init ( perf_process_ctx_t ctx)

Initializes a per-process performance context.

Parameters
ctxThe context to initialize.

Definition at line 118 of file perf.c.

References atomic_init, perf_process_ctx_t::startTime, and sys_time_uptime().

Referenced by process_init().

◆ perf_syscall_begin()

void perf_syscall_begin ( void  )

Called at the beginning of a syscall to update process performance data.

Must be called with interrupts disabled.

Definition at line 205 of file perf.c.

References atomic_fetch_add, NULL, panic(), process_t::perf, thread_t::perf, thread_t::process, sched_thread_unsafe(), sys_time_uptime(), perf_thread_ctx_t::syscallBegin, perf_thread_ctx_t::syscallEnd, and uptime().

Referenced by syscall_handler().

◆ perf_syscall_end()

void perf_syscall_end ( void  )

Called at the end of a syscall to update process performance data.

Must be called with interrupts disabled.

Definition at line 225 of file perf.c.

References atomic_fetch_add, process_t::perf, thread_t::perf, thread_t::process, sched_thread_unsafe(), sys_time_uptime(), perf_thread_ctx_t::syscallBegin, and perf_thread_ctx_t::syscallEnd.

Referenced by syscall_handler().

◆ perf_thread_ctx_init()

void perf_thread_ctx_init ( perf_thread_ctx_t ctx)

Initializes a per-thread performance context.

Parameters
ctxThe context to initialize.

Definition at line 125 of file perf.c.

References perf_thread_ctx_t::syscallBegin, and perf_thread_ctx_t::syscallEnd.

Referenced by thread_init().