dotnet-ai evaluation OOM-killed on standard runners
Problem
The dotnet-ai plugin evaluation is consistently being killed by the OOM killer (exit code 137) on ubuntu-latest runners. This was first observed in scheduled run 23070747448.
The single skill in this plugin — technology-selection — has scenarios that build and run ML.NET projects (TicketClassifier, ChurnPredictor). With the scheduled evaluation parallelism settings (--parallel-scenarios 3 --parallel-runs 3), up to 9 concurrent agent runs can each dotnet build + dotnet run these ML.NET projects simultaneously, each loading training data and building models in memory. This exceeds the runner's ~7 GB RAM limit.
At the time of the OOM kill, the orphan process cleanup shows:
- 5x
TicketClassifier processes
- 3x
ChurnPredictor processes
- ~20 bash shells (agent sandboxes)
The scenarios responsible are:
- "ML.NET classification on tabular data" — builds and runs
TicketClassifier
- "Reject LLM for tabular classification" — builds and runs
ChurnPredictor
Impact
Suggested fix
The simplest fix would be to reduce the parallelism for these ML.NET scenarios. Some options (in order of increasing effort):
-
Reduce scenario count in eval.yaml: If some of the 6 scenarios are lower priority, reducing to 3-4 would cut peak memory.
-
Make scenarios lighter: Use smaller training datasets (tickets.csv, customers.csv) so the ML.NET models consume less memory during training/inference.
-
Avoid dotnet run in scenario setup: If the scenarios only need the agent to write the code (not execute it), removing the runtime step would eliminate the ML.NET memory overhead entirely. The agent can still dotnet build to verify compilation.
-
Request lower parallelism for this plugin: The workflow could be extended to support per-plugin parallelism overrides. For example, dotnet-ai could declare "maxParallelScenarios": 1 in its plugin.json.
cc @jeffschwMSFT @luisquintanilla — you authored the technology-selection skill in #177. Would any of the above approaches work for you?
Reproduction
The failure occurs reliably on every scheduled evaluation run since dotnet-ai was added to the repo. See:
- Run 23070747448 —
evaluate (dotnet-ai) killed with exit 137
Environment
- Runner:
ubuntu-latest (standard GitHub-hosted, ~7 GB RAM)
- Job timeout: 90 minutes
- Parallelism:
--parallel-skills 2 --parallel-scenarios 3 --parallel-runs 3
- Exit code: 137 (SIGKILL / OOM)
dotnet-aievaluation OOM-killed on standard runnersProblem
The
dotnet-aiplugin evaluation is consistently being killed by the OOM killer (exit code 137) onubuntu-latestrunners. This was first observed in scheduled run 23070747448.The single skill in this plugin —
technology-selection— has scenarios that build and run ML.NET projects (TicketClassifier,ChurnPredictor). With the scheduled evaluation parallelism settings (--parallel-scenarios 3 --parallel-runs 3), up to 9 concurrent agent runs can eachdotnet build+dotnet runthese ML.NET projects simultaneously, each loading training data and building models in memory. This exceeds the runner's ~7 GB RAM limit.At the time of the OOM kill, the orphan process cleanup shows:
TicketClassifierprocessesChurnPredictorprocessesThe scenarios responsible are:
TicketClassifierChurnPredictorImpact
dotnet-aievaluation never completes successfullypublish-benchmarkfor all plugins, preventing any dashboard updates since March 11dotnet-aiappears on the dashboardSuggested fix
The simplest fix would be to reduce the parallelism for these ML.NET scenarios. Some options (in order of increasing effort):
Reduce scenario count in eval.yaml: If some of the 6 scenarios are lower priority, reducing to 3-4 would cut peak memory.
Make scenarios lighter: Use smaller training datasets (
tickets.csv,customers.csv) so the ML.NET models consume less memory during training/inference.Avoid
dotnet runin scenario setup: If the scenarios only need the agent to write the code (not execute it), removing the runtime step would eliminate the ML.NET memory overhead entirely. The agent can stilldotnet buildto verify compilation.Request lower parallelism for this plugin: The workflow could be extended to support per-plugin parallelism overrides. For example,
dotnet-aicould declare"maxParallelScenarios": 1in itsplugin.json.cc @jeffschwMSFT @luisquintanilla — you authored the
technology-selectionskill in #177. Would any of the above approaches work for you?Reproduction
The failure occurs reliably on every scheduled evaluation run since
dotnet-aiwas added to the repo. See:evaluate (dotnet-ai)killed with exit 137Environment
ubuntu-latest(standard GitHub-hosted, ~7 GB RAM)--parallel-skills 2 --parallel-scenarios 3 --parallel-runs 3