  With the growing constraints on power budget and increasing hardware failure
rates, the operation of future exascale systems faces several challenges.
Towards this, resource awareness and adaptivity by enabling malleable jobs has
been actively researched in the HPC community. Malleable jobs can change their
computing resources at runtime and can significantly improve HPC system
performance. However, due to the rigid nature of popular parallel programming
paradigms such as MPI and lack of support for dynamic resource management in
batch systems, malleable jobs have been largely unrealized. In this paper, we
extend the SLURM batch system to support the execution and batch scheduling of
malleable jobs. The malleable applications are written using a new adaptive
parallel paradigm called Invasive MPI which extends the MPI standard to support
resource-adaptivity at runtime. We propose two malleable job scheduling
strategies to support performance-aware and power-aware dynamic reconfiguration
decisions at runtime. We implement the strategies in SLURM and evaluate them on
a production HPC system. Results for our performance-aware scheduling strategy
show improvements in makespan, average system utilization, average response,
and waiting times as compared to other scheduling strategies. Moreover, we
demonstrate dynamic power corridor management using our power-aware strategy.
