#!/bin/bash
# Show resource usage on mixed nodes

echo "====== MIXED NODE ANALYSIS ======"
echo "Mixed nodes have PARTIAL allocation - some resources used, some available"
echo ""

# Count by state
echo "📊 NODE STATE SUMMARY:"
echo "  Allocated: $(sinfo -h -t allocated -N | wc -l) nodes (100% resources used)"
echo "  Mixed:     $(sinfo -h -t mixed -N | wc -l) nodes (partially used, some resources free)"  
echo "  Idle:      $(sinfo -h -t idle -N | wc -l) nodes (0% used, fully available)"
echo ""

echo "🔍 SAMPLE OF MIXED NODES (showing resource allocation):"
echo "--------------------------------------------------------------------------------"
echo "Node                 CPUs (Used/Total)  Memory (Used/Total)    GPUs   Jobs"
echo "--------------------------------------------------------------------------------"

# Get a few mixed nodes and show their allocation
for node in $(sinfo -h -t mixed -N -o "%N" | head -5); do
    # Get node info
    total_cpus=$(scontrol show node $node | grep "CPUTot=" | sed 's/.*CPUTot=//' | cut -d' ' -f1)
    alloc_cpus=$(scontrol show node $node | grep "CPUAlloc=" | sed 's/.*CPUAlloc=//' | cut -d' ' -f1)
    
    # Get memory info (in MB)
    total_mem=$(scontrol show node $node | grep "RealMemory=" | sed 's/.*RealMemory=//' | cut -d' ' -f1)
    alloc_mem=$(scontrol show node $node | grep "AllocMem=" | sed 's/.*AllocMem=//' | cut -d' ' -f1)
    
    # Count jobs on this node
    job_count=$(squeue -h -w $node | wc -l)
    
    # Calculate percentages
    cpu_pct=$(echo "scale=1; $alloc_cpus * 100 / $total_cpus" | bc 2>/dev/null || echo "0")
    mem_pct=$(echo "scale=1; $alloc_mem * 100 / $total_mem" | bc 2>/dev/null || echo "0")
    
    printf "%-20s %3d/%-3d (%.1f%%)   %6d/%-6d (%.1f%%)  8      %d\n" \
           "$node" "$alloc_cpus" "$total_cpus" "$cpu_pct" \
           "$alloc_mem" "$total_mem" "$mem_pct" "$job_count"
done

echo "--------------------------------------------------------------------------------"
echo ""
echo "💡 INSIGHT: Mixed nodes can accept additional jobs if requested resources fit!"
echo "   - Use 'sinfo -t mixed' to see all mixed nodes"
echo "   - Use 'scontrol show node <nodename>' for detailed node info"