Schedule Pressure - ptweezy/cronstable GitHub Wiki
Schedule load shows when jobs are scheduled to run over the next 24 hours. Use the hour-by-minute grid to find crowded times, such as the start of each hour, before choosing a schedule for another job.
The forecast uses the scheduler’s engine, including each job’s timezone and daylight saving time rules. For schedules with seconds, it counts every scheduled run within each minute.
Disabled jobs and @reboot jobs are excluded because they do not have
upcoming scheduled runs. Workflows are included
under their schedule names, dag:<name>.
GET /schedule/pressure?hours=24&tz=Europe/London
Both parameters are optional: hours is 1 to 168 (default 24), and tz sets the grid’s display timezone (default UTC). Each job still follows its own configured timezone. The payload has these fields:
| Field | Meaning |
|---|---|
grid |
24 rows (hour of day) of 60 scheduled-run counts (minute of hour). |
by_minute_fires / by_minute_jobs
|
The 60-bin histogram: scheduled runs and distinct jobs at each minute of the hour, across the whole window. |
by_hour |
Scheduled runs per hour row. |
busiest_minute |
{minute, jobs, fires}: the "37 jobs are scheduled at :00" headline. |
empty_minutes |
The minutes of the hour with no scheduled runs. |
top_cells |
The six busiest cells (hour, minute, fires), each naming up to ten of its jobs. |
jobs, total_fires
|
Fleet totals: jobs analyzed and scheduled runs in the window. |
excluded |
{"disabled": n, "reboot": n}: how many jobs were excluded as disabled or @reboot. |
start, hours, timezone
|
The window's start in the display timezone, its length after clamping, and the display timezone name. |
See HTTP API for the route table. The same analyzer backs the cron_schedule_pressure MCP tool, so an AI agent can check schedule load directly.
- The web dashboard has a schedule load card (the
▥ schedule loadtoolbar toggle): the 24x60 grid with hot cells highlighted, the minute-of-hour histogram, the duplicate-schedule groups, and the suggest-a-slot buttons, with a UTC/local display-zone switch. Whenever the panel is enabled, the wallboard (TV mode) shows a compact pressure strip above the tile grid, to highlight times when many jobs are scheduled together. - The terminal dashboard has the same panel as an overlay (command palette: "Toggle schedule load"), computed locally from its
/jobssnapshot with the identical shared analyzer, so it works against older daemons too.
Both refresh about once a minute.
A more even grid means runs are spread across the available times. Look for these patterns:
-
A hot
:00column is the classic collision: cron's default minute. Spread it withHhashed schedules, or move individual jobs to minutes suggested from real load. -
Hot columns at
:00/:15/:30/:45mean everyone picked the same round step phases;H/15keeps the cadence and spreads the phase. - A solid row is an hourly window where many daily jobs pile up (backup hour, report hour). Check the row's cells before adding another job there.
- Many identical rows usually mean duplicate schedules: the same expression pasted across jobs.