Optimizing usage
Monitor and optimize your GitHub Actions resource usage with Namespace's built-in insights dashboard. Understanding how your workflows consume resources helps you select the right machine shapes and reduce costs while maintaining performance.
Resource Usage Insights
The insights dashboard provides detailed visibility into your workflow resource consumption across all your jobs.

To get the most comprehensive view of your resource usage:
- Navigate to GitHub Actions → Insights
- Change the view to Sequential (to see all job values back to back)
- Set breakdown to Job (should be the default)
- Change display to Max Memory Used per Job (Percentage)
This configuration will show you the peak memory usage for each job, making it easier to identify jobs that are over or under-utilizing their allocated resources.
Finding Optimization Opportunities
If you have too many jobs to go through, you can easily filter them down to the right opportunities.
Step 1: Filter Out High Memory Usage Jobs
- Use Alt+Shift+Cmd (or Alt+Shift+Ctrl on Windows/Linux) to click on jobs that have more than 50% memory usage — this will filter that job type out
- Keep doing this until you're only left with jobs under 50% memory usage
- These are your optimization opportunities
Step 2: Verify CPU Underutilization
- Now switch the display to Max CPU Usage
- Check if the same jobs also under-utilize their CPU
- Jobs that show both low memory and CPU usage are prime candidates for smaller machine shapes
Jobs consistently running under 50% for both CPU and memory usage can likely be moved to smaller, more cost-effective machine shapes without impacting performance.
Generating an over-provisioned report
Over-provisioned jobs run on a machine shape larger than they actually need, paying for CPU and memory that goes unused. To produce a report of these jobs across your workspace, use the nsc instance report command to export a CSV of every runner instance, including the allocated shape and the observed peak CPU and memory usage.
Pair the CSV with your favourite LLM agent to surface candidates for a smaller shape. The following prompt works well as a starting point:
Based on GitHub job historical data over the last 7 days obtained via
nsc instance report, produce a short report of resource optimization opportunities for jobs (for the same job name, consistent low resource usage within a category).
Best Practices
- Regular monitoring: Review insights weekly to identify optimization opportunities
- Baseline performance: Establish performance baselines before making changes
- Gradual optimization: Make incremental changes and measure impact
- Test configurations: Use feature branches to test different machine shapes safely
The insights dashboard updates automatically, providing real-time visibility into how your optimization efforts impact resource usage and costs.
Related Documentation
Caching Solutions → Implement cross-invocation caching for dependencies and build artifacts to reduce execution time and resource usage.
Custom Base Images → Pre-install dependencies in custom runner images to reduce startup time and optimize resource utilization.
High-Performance Docker Builds → Optimize Docker build performance with Remote Builders and caching strategies.
Advanced Configuration → Configure machine shapes and runner settings for optimal performance and cost efficiency.

