This document proposes a resource-aware scheduling mechanism for distributed computing frameworks. It suggests:
1. Periodically profiling tasks and jobs to quantify their resource demands and the capacities of machines.
2. Assigning a score to each possible task-machine placement based on resource profiles to determine best placements.
3. Measuring machine availability by subtracting current resource usage from capacity, and picking placements that minimize imbalance of CPU and IO usage across machines.