As limited power budget is becoming one of the most crucial challenges in developing supercomputer systems, hardware overprovisioning is an attractive way to design exascale HPC systems. Traditionally, a scheduler in HPC systems determines when and where to allocate jobs. For overprovisioned systems, the schedulers also need to care about power allocation to each job. An easy way is to set a fixed power cap for each job so that the total power consumption is within the power constraint of the system. This fixed power capping does not necessarily provide good performance since the effective power usage of jobs changes throughout their execution. Moreover, because each job has its own performance requirement, fixed power cap may not work well for all the jobs. In this talk, we introduce a demand-aware power management framework where the scheduler optimizes power cap of each CPU so that the required performance level of each job is satisfied while improving system throughput by making good use of available power budget.