Packet processing systems (e.g., routers, virus scanners, intrusion detectors, SSL accelerators, etc.) provision sufficient number of processors to handle the expected maximum workload. The observed load at any instant, however, is often substantially lower; further, the load fluctuates significantly over time. These properties offer an opportunity to conserve energy (e.g., by deactivating idle processors or running them in low-power mode). In this paper, we present an on-line algorithm for adapting the number of activated processors such that (1) the total energy consumption of the system across a packet trace is minimized and (2) the additional delay suffered by packets as a result of adaptation is deterministically bounded. The resulting Power Management Algorithm (PMA) is simple, but it accounts for system reconfiguration overheads, copes with the unpredictability of packet arrival patterns, and consumes nearly the same energy as an optimal off-line strategy. A conservative version of the algorithm (CPMA), turns off processors less aggressively than is optimal but still provides good energy savings while reducing the additional packet latency introduced by power management. We demonstrate that for a set of trace workloads both algorithms can reduce the core power consumption by 60-70% while increasing the average packet processing delay by less than 560µs (PMA) and less than 170µs (CPMA).