I would agree with both @JakeSkinner and @berniejconnors - our Federated site is a 2 machine cluster, 8 cores each. So for the site, I have the dynamic mapping service pooling set to 8 number of instances, giving me 16. But you shouldn't set the number of instances it can use to more than the number of cores you have.
So as a rule of thumb for the dynamic service, I would publish no more than 30 simple map services services to the shared instance. In practice, I have about the same as Bernie, 15 -20 or so simple map image services.
As for the warning about the dynamic service crashing, I do not see that very often and since there is not much I can do about it, I just ignore it. The service recovers and I move on.
I use Monitor, and for my any of my shared or dedicated instances, I can see the % saturation. If I were to see one of my shared instances using up to like 75%, I would consider moving that instance to dedicated. Otherwise, that might be or maybe could be the cause of the dynamic map service instance crashing. . .