But I wonder if we wouldn't be better off coming up with a little more user-friendly API. Instead of exposing a cost delay, a cost limit, and various charges, perhaps we should just provide limits measured in KB/s, like dirty_rate_limit = <amount of data you can dirty per second, in kB> and read_rate_limit = <amount of data you can read into shared buffers per second, in kB>.
I already made and lost the argument for doing vacuum in KB/s units, so I wasn't planning on putting that in the way of this one.
I think the problem is that making that change would force people to relearn something that was already long established, and it was far from clear that the improvement, though real, was big enough to justify forcing people to do that. That objection would not apply to a new feature, as there would be nothing to re-learn. The other objection was that (at that time) we had some hope that the entire workings would be redone for 9.3, and it seemed unfriendly to re-name things in 9.2 without much change in functionality, and then redo them completely in 9.3.