Denote the marginal delay cost and (instantaneous) service rate functions of class k by c_k = C_k' and m_k, and let a_k(t) be the ``age'' or time that the oldest class k job has been waiting at time t. We call the scheduling policy that at time t serves the oldest waiting job of that class k with the highest index m_k(t)c_k(a_k(t)), the Generalized cm Rule. As a dynamic priority rule that depends on very little data, the Generalized cm Rule is attractive to implement. We show that with non-decreasing convex delay costs, the Generalized cm Rule is asymptotically optimal if the system operates in heavy traffic, and give explicit expressions for the associated performance characteristics: the delay (throughput time) process and the minimum cumulative delay cost. The optimality result is robust in that it holds for a countable number of classes and several homogeneous servers in a non-stationary, deterministic or stochastic environment where arrival and service processes can be general and interdependent.