We're using cloud hosting for some of our backend servers and we noticed that performance on the disks (which as confirmed by the provider are shared with other customers) vary depending on the time/day of the week. We would like to find out how performance evolves throughout the day/week to decide whether it's worth moving to another provider (that we would benchmark too).

Here is what we've been doing so far:
-use munin for the graphing.
-create a munin plugin with hdparm -t /dev/sda1 to test read speed.
-create a munin plugin with dd if=/dev/sda1 of=/tmp/test bs=512k count=512 oflag=direct to test write speed.

Both hdparm and dd run for less than 10 seconds, which means that the server is kept busy for 0.6% of the time which we find acceptable (10+10 seconds / 300 seconds (that's how frequently munin runs) * 100).

The problem is that we're getting around 250MB/s for read speed and 200MB/s for write whereas I would expect the former to be much higher than the latter (FYI we're using 15K rpm SAS drives).

Q: Are there other ways of measuring read/write speed ? (we need things that can be executed in 10 seconds or less)

  • Saying that you are using 15k sas disks doesn't really mean much, How many are there would be more appropriate, a single 15k sas is about 100Mb/s. Not sure if xen can qos storage, did the cloud provider mention this possiblity? – tony roth Mar 22 '12 at 13:43

I wouldn't have thought it necessary to repeatedly run a benchmark/speedtest. Simply observing the I/O Wait, I/O in/out and I/O activity graphs in Munin would give you a solid overview.

Plus, a 10 second benchmark will do no more than showing you how effective the disk buffer/caches are. Which would then lead you to flushing your caches prior to each test, which would further degrade server performance.

Unfortunately, shared I/O is just one of the limitations of "Cloud hosting" (VPS hosting) and there isn't much you can do about it.

I would suggest going dedicated if you want uncontended I/O

  • My understanding is that system stats (we could use iostat for that) are only going to reflect on our usage of the disk, and not that of other customers (because they run a separate OS), am I correct? If so we can't rely on this because our usage of the servers is too sporadic to have consistent enough data that would allow us to indirectly work out usage from other customers (if you continuously do the same operations and at some point it gets slower you can assume it's because of other people using your disk). – Max Mar 22 '12 at 11:58
  • I guess that would depend on the virtualisation platform. Usually, even if the hardware is virtualised to the point of not being able to see common/host usage, the interrupts still usually show activity. Eg. on Xen, you'll find BLK_IF is particularly active if other users are abusing I/O. What virtualisation platform are you on? – Ben Lessani - Sonassi Mar 22 '12 at 12:00
  • the virtualisation platform is Xen. I've googled for BLK_IF and I got very little info: what is it? – Max Mar 22 '12 at 12:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.