The HUGE power of SSD’s while developing HUGE projects

A friend of mine (Jose Formiga, check out his blog) sent me the link to this article on the Coding Horror blog and i thought it was a nice opportunity to share the experience that we had while working with SSD’s.

Our development team uses a Dell Latitude E6510 Pentium core I7 4gb RAM with an HDD with 7200 RPM and we are working on a HUGE .NET 4.0 Application. Here are some stats:

  • Over 180 projects
  • Over 6 millions LOC’s (lines of code)
  • 8 Databases
  • Over 5 Gbs of source code

We have everything: ASP.NET MVC Front-Ends, Windows Services, WCF Services, JAVA Tools, you name it.

We also have our build and deploy processes fully automated. The steps are:

  1. Get the latest version from repository
  2. Execute the code-generation tool that we use
  3. Build all the projects that we have
  4. Create the database schema for all the databases
  5. Load the databases with some initial data
  6. Execute the unit tests
  7. Execute UI(Web) functional tests with another tool that we use
  8. Create the Deploy Package

The FULL execution (non-incremental, cleaning all compilation outputs, data, etc) of this build process takes about 25 minutes on the HDD.

When we bought a SSD (OCZ VERTEX 2) the same execution got down to less than 10 minutes.

I mean…. UOW!!! 😀

And not only that… Since most of the time we are using a LOT of programs simultaneously (Visual Studio 2010, Eclipse, SQL Management Studio, Web browsers, etc) we noticed that while on the HDD, even with a lot of free RAM memory, the computer would hang a few seconds from time to time (while changing between files on Visual Studio, creating a new tab on Chrome, etc.). With the SSD the response time of these applications dropped dramatically, and we all noticed a lot of improvement.

This build process its executed on average 5 times a day by every developer before they commit code because we don’t want to rely only on the CI server to detect possible problems but also encourage a more proactive error check. We believe this creates a better mood between the developers and reduce the time of instable code on the repository. With this in mind, here is some math:

WITHOUT SDD -> 5 * 25 = 125 minutes lost on build time by day.

WITH SSD -> 5 * 10 = 50 minutes lost on build time by day.

Again… UOW!!!

I just gained an extra hour a day to actually do something and not wait for the build process to finish.

No more excuses… (at least not that often)

I’m really sure that my Project Manager got quite happy about that.

If i consider that a month has 20 working days average, we could say that for each developer, we would gain around 20 hours a month. We have 20 developers so that makes 400 hours a month as a whole.

We spent around 2000 € to buy the same SSD (OCZ VERTEX 2) to everyone. Some would say that the speed of SSDs are not worth because of the lower life time, reliability, etc.

One developer of ours had his SSD completely burned (not literally, it just went dead and did not wake up :D). And other two that lost the MBR (Master Boot Record) while returning the laptop from hibernate. The hibernate problem can also happens to HDD’s, so we all just disabled it to prevent future loss and now only use the Sleep mode. There is a bunch of forums talking about that, just google it. We also disabled a lot of now unused services like Defrag, Indexing, etc. (Also, there are a lot of forums and articles about this because they lower the life time of an SSD because of unnecessary writes). On the other hand, the complete fail could not be explained and we had to send the SSD back. Thank god it was still on warranty. With this we have lost 3 days of those 3 developers total (1 day each) due to software installation on the new/reinstalled ones. We do have in mind that we have a READ and WRITE super intensive modus operandi and also always try to make commits as frequently as possible to avoid data loss.

We have been using the SSDs for almost 3 months. Again some more math:

3(Months) * 400(hours saved by the development team) = 1200

3(days of software installation because of the failed SSDs) * 8 (work hours per day) = 24

1200 – 24 = 1176 hours saved by the development team in 3 months.

20 (hours per month and per developer wasted on build time without SSD) * 20 (Average developer price per hour) = 400
SSD unit price = 200

Even if we bought two SSDs for developer each month, it would be cheaper for the employer!

Now you can imaginage how happy our Project Manager is :D.

We are not happy yet with the build time, and we are making some optimizations on it.



7 comments so far

  1. Sam C on

    First let me state I am a great SSD advocate. Looking at your development system specs however, I think they are grossly under par in more than just disk speed. Our company has a solution that is approximately half the size and we halved our build time by upping the specs of the dev machines from Core 2 Q6600’s, 7200RPM drives with 4GB of ram to i7 930’s with 12GB ram and 300GB WD velociraptors.

    That also greatly improved productivity as many more applications can be opened at the same time. 4GB of ram is certainly not enough, in my opinion, for your project scale.

    But I am still keen to see what improvements are gained by throwing some Sandforce SF-2200 drives in!

    • Rafael Ribeiro on

      Hi Sam, thanks for your comment.

      I totally agree with you, in fact, we have three machines with 8 GB of RAM but only one of them has a good SSD in it. Thr performance of the one wih the good SSD its much greater than the other two.

      Im not saying that RAM does not matter, hell yeah i would like to have 12 GB in my computer too, but it depends on the greater bottleneck you have and the bugdet you have also. Our biggest problem untill a few months ago, when we changed to SSD’s was clearly I/O so we tried to correct this first. But recently, the developers started having problem with lack of free memory, but its too hard for us mere mortals convince our bosses to fix this problem too. Maybe next time :(. You problably know this too: “money its not the problem, ita the solution” hehehhe.

      Thanks again.

  2. sketchy00 on

    Would love to hear your feedback on our situation. Dual socket, quad core Core i7 systems with 24GB of RAM on 7200 RPM SATA drives compile full builds at nearly the exact same speed as the entire system living on a Crucial M4 SSD (SATAIII). The SSD checks out in Iometer at 2,500 IOPS and 22MBps, compared to the 90 IOPS and 1.5MBPS for the SATA. The SSDs are amazing for everything but code compiling. Block size issues? Any thoughts?

    • Rafael Ribeiro on

      Hello there, thanks for your comment. 🙂

      Without any more information, I would say that it may be one of the following:

      – Too many writes / reads: There is no miracle, and the SSDs will give a boost but not make it instantaneously
      – As you sad, block size issues: Try to confirm witch is the default/optimum value for your SSD and OS. You may also need to align your partition (depending also on the OS). Here is an example with windows 7:

      – CPU or memory high consumption or any other resource contention: If the problem is not the disk IO, it may be related to another resource.

      I would love to help more, but it would be great if you could give me more information about the scenario. For example:
      – Witch programming language
      – build tool
      – OS
      – etc

      Of course if you don’t want to give this information in public we can talk through e-mail/skype whatever is more easy.

      Thanks again.

  3. C.F. Lee on

    How about using RAM Disk?? After a day working, write back to SSD or HDD.

  4. Zlatko Alomerovic on

    I wonder how long did those SSDs last, since you did a heavy usage? I am considering making my X25-M Intel starting point for development (Web DEV / Rails etc.) And I was asking my self how long would it last…

    • Rafael Ribeiro on

      Hello Zlatko, so sorry about the late reply. I’ve lost access to this account and only got it back :).

      Well, I can say that I have a 120 GB Patriot Inferno SSD on my personal laptop, for about 3 years now under REALLY HEAVY usage. I have worked in probably 8 huge projects with it, many many compilations and still runs like a breeze :).

      I know for sure that SSD nowadays are much better than the ones at that time, so I think life time is not a real problem anymore.

      Hope it helps :).

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: