← Mithril Interview Insights

Mithril·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
Jun 2026

Summary

System design round at Mithril for a software engineering role. The whole thing was one big question about GPU resource management across hybrid cloud, and it went pretty deep pretty fast.

Questions Asked (1)

Q1

Design a system that manages and allocates GPU resources across a hybrid environment combining on-premises infrastructure and multiple public cloud providers. Your design should address GPU inventory and telemetry, multi-tenant scheduling with quotas, job queueing and preemption, fair-share and priority scheduling, fault tolerance, and cost-aware placement decisions.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

This was basically six questions disguised as one.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a layered architecture: a global control plane for inventory, scheduling, and policy, and per-cluster data planes for execution. Walk through each concern (telemetry, quotas, queueing, preemption, fairness, fault tolerance, cost) and explain how they interact, highlighting trade-offs and failure modes.

Pro tip: Emphasize that cost-aware placement must be balanced with data gravity and job deadlines; propose a scoring function that weights cost, latency, and reliability, and mention using spot instances with checkpointing for fault tolerance.

1. Clarify Requirements and Constraints

Ask about scale (number of GPUs, jobs, tenants), workload types (training vs inference), latency sensitivity, budget constraints, and compliance needs. This shapes the design and shows you avoid over-engineering.

2. Design the Control Plane and Inventory

Propose a centralized control plane that aggregates GPU inventory and telemetry from all clusters (on-prem and cloud) via agents. Use a consistent data model and expose APIs for querying and managing resources.

3. Implement Multi-Tenant Scheduling with Quotas and Fairness

Design a scheduler that enforces quotas, supports priorities, and implements fair-share (e.g., weighted fair queueing or dominant resource fairness). Include job queueing, preemption, and gang scheduling for distributed jobs.

4. Address Fault Tolerance and Cost-Aware Placement

Describe mechanisms for handling node failures, preemption, and cloud outages (e.g., checkpointing, retries, replication). For placement, use a cost model that considers instance pricing, data transfer, and availability, and allow policies to prefer on-prem or cloud based on cost and latency.

5. Discuss Trade-offs and Evolution

Summarize key trade-offs (e.g., centralized vs decentralized scheduling, strict quotas vs burst capacity) and suggest how the system could evolve (e.g., adding ML-based prediction for demand).

Key Points to Mention

  • GPU telemetry: collect utilization, memory, temperature, and health metrics via agents (e.g., DCGM) and stream to a time-series database for monitoring and scheduling decisions.
  • Multi-tenant quotas: enforce per-tenant limits on GPU count, memory, and time, with hierarchical quotas and burst capabilities.
  • Scheduling algorithms: use priority queues, fair-share (e.g., DRF), and preemption with graceful job eviction and checkpointing.
  • Fault tolerance: implement job checkpointing, automatic retries, and replication across clusters; handle cloud provider outages with failover policies.
  • Cost-aware placement: define a cost model including instance price, egress, and storage; use a scoring function to place jobs where cost, latency, and reliability are optimal.
  • API and integrations: expose REST/gRPC APIs for job submission, status, and resource queries; integrate with Kubernetes (e.g., via custom scheduler) and cloud provider APIs.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.