Files
pss/docs/metrics.en.md
T
Lucas RayanandClaude Sonnet 4.6 22925578b1 chore: final pre-submission polish for JOSS
- Add CITATION.cff for GitHub citation support and Zenodo/JOSS integration
- Fix ossim reference URL in references.bib (was pointing to unrelated repo)
- Remove broken favicon reference from index.html (no public/ directory exists)
- Add meta description to index.html
- Fix sidebar title inconsistency: "Process Simulator" → "Process Scheduler Simulator"
- Rebuild dist.tar.gz with production assets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 19:50:45 -03:00

117 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Metrics
*Também disponível em: [🇧🇷 Português](./metrics.md)*
PSS automatically computes a set of metrics at the end (or during) the simulation. This document explains each metric, its formula, what it represents, and how to read it in the charts.
---
## Per-Process Metrics
These metrics are computed individually for each simulated process.
| Metric | Formula | What it means |
|--------|---------|----------------|
| **Arrival Time** | `arrivalTime` | Tick at which the process first entered the Ready queue |
| **First CPU Tick** | `startTick` | Tick at which the process first used the CPU |
| **Finish Time** | `finishTick` | Tick at which the process completed its execution |
| **Response Time** | `startTick − arrivalTime` | How long the process waited before receiving the CPU for the first time |
| **Turnaround Time** | `finishTick − arrivalTime` | Total lifetime of the process (arrival → completion) |
| **Waiting Time** | `turnaround − cpuTime − ioTime` | Total time spent in the Ready queue (doing nothing useful) |
| **CPU Time** | Σ ticks in Running state | Total CPU actually consumed |
| **I/O Time** | Σ ticks in Waiting state | Total time waiting for I/O devices |
| **CPU Utilization** | `cpuTime / turnaround × 100` | Percentage of the turnaround time the process was actually using the CPU |
| **Bound Type** | see below | Classification of the process as CPU Bound, I/O Bound, or Balanced |
### Table visualization
In the **Per Process** tab, each row displays inline horizontal mini progress bars next to the numeric values. The bars are proportional to the **largest value of the same metric among all processes**, enabling immediate visual comparison:
| Column | Bar color |
|--------|-----------|
| Response Time | Amber |
| Turnaround Time | Blue |
| Waiting Time | Orange |
| CPU Time | Emerald |
| I/O Time | Cyan |
| CPU Utilization | Violet → Blue gradient |
---
## Global Metrics
Computed over the complete set of processes in the simulation.
| Metric | Formula |
|--------|---------|
| **Avg Response Time** | Average of all processes' response times |
| **Avg Turnaround Time** | Average of all turnaround times |
| **Avg Waiting Time** | Average of all waiting times |
| **CPU Throughput** | `completed processes / total simulation time` |
| **CPU Utilization (global)** | `Σ Running ticks / total time × 100` |
| **Total Simulation Time** | Tick of the last completion event |
In the **Global** tab, each time card (Response, Turnaround, Waiting) displays a bar proportional to the **total simulation time**, indicating "how much of that total time the average process spends in that state". The CPU Utilization bar uses an amber → green gradient to indicate utilization health.
---
## CPU Bound vs. I/O Bound Classification
At the end of the simulation, each process is automatically classified based on the proportion of time spent on CPU and I/O:
```
cpuRatio = cpuTime / (cpuTime + ioTime)
ioRatio = ioTime / (cpuTime + ioTime)
cpuRatio ≥ 0.65 → CPU Bound
ioRatio ≥ 0.65 → I/O Bound
otherwise → Balanced
```
- **CPU Bound:** the process spends most of its time using the processor.
- **I/O Bound:** the process spends most of its time waiting for I/O devices.
- **Balanced:** the process uses CPU and I/O in a balanced way.
> **In the process list:** estimate computed from the declared bursts (before simulation).
> **In the metrics table:** classification computed from the actual recorded times.
---
## Charts ("Chart" tab)
### Comparative Profile (Radar Chart)
Displayed when there are **2 or more processes**. Each axis represents a time dimension, normalized from 0–100% relative to the largest value in that dimension among all processes:
| Axis | Meaning |
|------|---------|
| **Turnaround** | Relative total lifetime |
| **Response** | Relative time to first CPU |
| **Waiting** | Relative time in the Ready queue |
| **CPU Time** | Relative CPU usage |
| **I/O Time** | Relative I/O usage |
Each process is drawn as a colored polygon (the color configured for the process). Wider polygons indicate processes with larger times in the corresponding dimensions. The radar chart is ideal for identifying **profile differences** between processes (for example, a CPU Bound process will have a much larger CPU Time axis than I/O Time).
### Per-Process Breakdown (Stacked Bar Chart)
Always displayed. Each bar represents a process, with stacked segments:
- **Amber**: Waiting Time
- **Green**: CPU Time
- **Cyan**: I/O Time
The total height of each bar equals the **Turnaround Time** of the process.
---
## Example
Consider three processes with the following bursts:
| Process | Bursts | cpuTime | ioTime | cpuRatio | Classification |
|---------|--------|:-------:|:------:|:--------:|:--------------:|
| P1 | CPU:8, IO:1, CPU:1 | 9 | 1 | 90% | CPU Bound |
| P2 | CPU:1, IO:8, CPU:1 | 2 | 8 | 20% | I/O Bound |
| P3 | CPU:4, IO:2, CPU:4 | 8 | 2 | 80% | CPU Bound |