Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I forgot to benchmark the disk before I upgraded but here are some simple disk benchmarks on an upgraded linode (the $20 plan, now with SSD)

  $ dd bs=1M count=1024 if=/dev/zero of=test conv=fdatasync
  1024+0 records in
  1024+0 records out
  1073741824 bytes (1.1 GB) copied, 1.31593 s, 816 MB/s

  $ hdparm -tT /dev/xvda
  /dev/xvda:
   Timing cached reads:   19872 MB in  1.98 seconds = 10020.63 MB/sec
   Timing buffered disk reads: 2558 MB in  3.00 seconds = 852.57 MB/sec

Upgraded cpuinfo model: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz

Old cpuinfo model: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz

CPUs compared: http://ark.intel.com/compare/75277,40201



Here is my $5 digitalocean slice (created a few months ago):

  # dd bs=1M count=1024 if=/dev/zero of=test conv=fdatasync
  1024+0 records in
  1024+0 records out
  1073741824 bytes (1.1 GB) copied, 3.7375 s, 287 MB/s

  # hdparm -tT /dev/disk/by-label/DOROOT

  /dev/disk/by-label/DOROOT:
  Timing cached reads:   16394 MB in  2.00 seconds = 8205.62 MB/sec
  Timing buffered disk reads: 868 MB in  3.00 seconds = 289.17 MB/sec


287 MB/s vs 816 MB/s is huge. Linode is really doing a good job here. I have 4 VMs with them and am very happy. Can't wait to make this move.


I think these new nodes are still pretty lightly used, give it a few months and then do a comparison. Benchmarking VPS/cloud instances can be tricky since you might be on a quite node or a heavily utilized node. You really need to provision many machines and run the checks at random times over a period and then average the scores out.

I upgraded some of my VMs and they all failed to boot on their own and I had to manually boot each one after the migration.


Here's my DO results (AMS1). This server was busy and we're actively using it for 4+ months

  [root@server ~]# dd bs=1M count=1024 if=/dev/zero of=test conv=fdatasync
  1024+0 records in
  1024+0 records out
  1073741824 bytes (1.1 GB) copied, 6.29244 s, 171 MB/s


Parallelizability isnt always possible, but you should normalize the speed you get per dollar.

    287 MB/sec / $5  ~ 57 MB/sec/dollar 
    816 MB/sec / $20 ~ 40 MB/sec/dollar


    287 MB/sec / $20 ~ 14 MB/sec/dollar
I don't think MB/sec/dollar makes sense simply because disk speed does not scale. If you need a (very) fast disk, Linode is obviously the better choice.


That's only when comparing $5 to $20. Does the $20 DO model also have 287MB/s?


If the difference matters, a $5 DO node likely isn't cutting it.


Thats not the issue. The issue is if (and only if) you have a perfectly parallelizable task, you would be better off getting 4 x $5 DO servers with a rate of (4 x 287) 1148 MB/sec which is much better than 816 MB/sec for the same price. Or you could even get 3 $5 servers and have a rate of (3 x 287) 861 MB/sec which is still better and also cheaper.


It's not like the $20 DO instance is going to be faster


And here's a run I did on a shared host at A Small Orange for fun:

1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 62.9023 s, 17.1 MB/s


Just ran this on my 1GB droplet at Digital Ocean:

$ dd bs=1M count=1024 if=/dev/zero of=test conv=fdatasync 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 5.83509 s, 184 MB/s


This is mine old $20 located in London, doing exactly nothing, I just created it last week, it seems very slow in comparison:

  dd bs=1M count=1024 if=/dev/zero of=test conv=fdatasync
  1024+0 records in
  1024+0 records out
  1073741824 bytes (1,1 GB) copied, 13,6791 s, 78,5 MB/s

  hdparm -tT /dev/xvda
  /dev/xvda:
  Timing cached reads:   3580 MB in  2.00 seconds = 1794.00 MB/sec
  Timing buffered disk reads: 336 MB in  3.01 seconds = 111.75 MB/sec


Dallas data center, not upgraded, faster than London, slower than upgrade. ;)

  $> dd bs=1M count=1024 if=/dev/zero of=test conv=fdatasync
  1024+0 records in
  1024+0 records out
  1073741824 bytes (1.1 GB) copied, 2.19598 s, 489 MB/s

  $> hdparm -tT /dev/xvda
  /dev/xvda:
  Timing cached reads:   12446 MB in  1.98 seconds = 6273.29 MB/sec
  Timing buffered disk reads: 1768 MB in  3.00 seconds = 589.00 MB/sec


Here's mine, with SSD upgrade:

  dd bs=1M count=1024 if=/dev/zero of=test conv=fdatasync
  1024+0 records in
  1024+0 records out
  1073741824 bytes (1.1 GB) copied, 2.17496 s, 494 MB/s

  hdparm -tT /dev/xvda
  /dev/xvda:
   Timing cached reads:   18560 MB in  1.98 seconds = 9358.78   MB/sec
   Timing buffered disk reads: 2510 MB in  3.00 seconds =   836.61 MB/sec`


Those benchmarks are pointless on VM because of the memory caching...


You're probably right. Do you think it's cache at the VM level before writing to disk. Would writing more data out help at all?

  $ dd bs=1M count=40960 if=/dev/zero of=test conv=fdatasync
  40960+0 records in
  40960+0 records out
  42949672960 bytes (43 GB) copied, 48.455 s, 886 MB/s


The VM should always pass through proper fsync() semantics, so probably not that layer. But they mention battery-backed raid controllers, and it would be appropriate for fsync() to complete after the data has gotten into battery-backed memory, but before it gets to the actual disks.

(Okay Linode, you've finally done it. I'll get rid of my oddball $30/mo plan sometime soon. That extra $10 used to get me a necessary 180MB of extra RAM!)


Throughput speed is not everything, in many situations latency is more important. Can you give results for this?

dd if=/dev/zero of=test bs=512 count=1500 oflag=dsync

I'm getting "6.40264 s, 120 kB/s" on my laptop's SSD, but on a proper server with a RAID card and cache enabled I get "0.187033 s, 4.1 MB/s".


I did 7 runs of your test and the average time is: 0.424795s. Example run:

  $ dd if=/dev/zero of=test bs=512 count=1500 oflag=dsync
  1500+0 records in
  1500+0 records out
  768000 bytes (768 kB) copied, 0.427272 s, 1.8 MB/s


DO @5$/mo:

    $ dd if=/dev/zero of=test bs=512 count=1500 oflag=dsync         
    1500+0 records in
    1500+0 records out
    768000 bytes (768 kB) copied, 1.64471 s, 467 kB/s


DO @$40-AMS1

  1500+0 records in
  1500+0 records out
  768000 bytes (768 kB) copied, 1.17399 s, 654 kB/s


dd if=/dev/zero of=test bs=512 count=1500 oflag=dsync 768000 bytes (768 kB) copied, 0.3325 s, 2.3 MB/s


dd if=/dev/zero of=test bs=512 count=1500 oflag=dsync

768000 bytes (768 kB) copied, 0.45329 s, 1.7 MB/s


Not a scientific benchmark, but I have a linode that has 8 cores before and after that just finished its upgrade. Previously it was consistently using just under 5/8 CPUs and is now using a ~2/8 CPUs with the same in/out traffic.


How did you upgrade? I can't find any upgrade link, even after switching to a 64-bit kernel.


If your machines are eligible, there will be an upgrade button in the right nav when looking at one of your linodes.




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: