Cloud infrastructure performance
I read with interest a post about measuring disk I/O performance on EC2.
http://stu.mp/2009/12/disk-io-and-throughput-benchmarks-on-amazons-ec2.html
It is a good test however results were not unexpected. The problem with shared infrastructure is not that it provides subpar performance but the fact that in any infrastructure which can be "modified" by a customer you will run into "abuse" where one or couple customers will use infrastructure unevenly and will affect other customers. I have blogged about virtualization stress points before ie.
http://vuksan.com/blog/2009/12/04/cloud-cartography-load-co-residence-detection/
http://vuksan.com/blog/2009/09/01/cloud_computings_achilles_heel/
I have also in the past been in charge of a operations for an e-commerce SaaS startup and we would see this issue quite often. For instance we had two customers that did about the same amount of yearly sales yet one of the customers' infrastructure utilization (number of disk ops, DB bandwidth etc.) was 3-4 times higher than the other customer. At times they would "abuse" a shared database so much that it affected everyone else. We resolved it when a collegue figured out that we could QoS traffic to the database. That way only the abusing customer would be affected if they did anything crazy. It also helped that we ran the infrastructure and the application so we could quickly determine what is normal and what is not. I suspect this problem becomes much trickier in clouds since you have very little idea what applications are running and what is normal.
One other thing to point out is that some of the "abuse" may be inadvertent. Coders are sloppy and occasionally (more often than one would hope) things start leaking memory and machine will start thrashing on the disk. Add to that impromper monitoring and if you are on the lucky duckies to be on the same piece of physical hardware as them your performance will go down the drain. I recall a tweet some time ago where the person was scratching his head that untarring a tarball on one EC2 instance took 15 minutes and on another 45 minutes.
There are certainly solutions to these problems however they require a lot more work. I think clouds are great
and use them extensively however you should be aware of some of the drawbacks. It also helps if you are designing your app in such a way that it doesn't rely on a centralized relational database (often a bottleneck).