This was easier than I thought it would be. G1SteadyStateUsed is not actually used in its original role (to be a "hard limit" and when it's reached to have to do an evacuation pause). Instead, G1MinResercePercent (which is being renamed to G1ReservePercent) is used instead (which is a better named parameter anyway). G1SteadyStateUsed was only used for the marking cycle initiation decision, in conjunction with G1SteadyStateUsedDelta. So, these two parameters they were very easily replaced with InitiatingHeapOccupancyPercent.
In CMS, here's the description of CMSInitiatingOccupancyFraction:
product(intx, CMSInitiatingOccupancyFraction, -1, \
"Percentage CMS generation occupancy to start a CMS collection " \
"cycle. A negative value means that CMSTriggerRatio is used") \
In G1 we will simplify that and we will only have InitiatingHeapOccupancyPercent and no parameter equivalent to CMSTriggerRatio (which is not used widely anyway... in fact, in the tuning guide / presentations we only mention CMSInitiatingOccupancyFraction, and no CMSTriggerRatio).
I'm setting the default value for InitiatingHeapOccupancyPercent to 45%. CMS uses around 60%, but this is over the old generation and not over the entire heap. Imagine that the young gen is taking up about 25% of the heap, 60% over the old gen is around 45% over the entire heap.