Made of Everything You're Not

Thoughts on programming, people and life
  • Home
  • Projects
  • Portfolio
  • Resume
« Fix for Vista Folder View Fail
How to Own a Mistake »

What does 99.99% mean?

Earlier this month my department was, finally, able to get approval for an upgraded Internet line for the office. Previously we were using a business level DSL line that just SUCKED. Whenever someone was uploading anything the download and upload would just grind to a halt and we’d have to find out who was doing what. This happened everyday and it was just painful.

New Internet Line

New Internet Line

If you’ve never had the pleasure of using business level DSL in an Internet company count yourself lucky.

Anyway, after literally a whole year of research and proposals and meetings and compromises and revisions we finally got the new line approved.

Halle-Fucking-lujah!!

Of course there’s the increased speeds for both up and download, which really can’t be understated in it’s coolness, but there’s also a Service Level Agreement (SLA) which guarantees us an uptime of 99.99%. Having just come from the world of DSL, where the word “reliability” isn’t a part of the vernacular, this was a requirement.

Of course this begged the question of just how much downtime is allowed with a 99.99% SLA. Not really wanting to do the math myself I turned to Google and came across a post on John D. Mitchell’s Blog with the fortuitous title “What does 99.999% reliability really mean?“.

John went to all the trouble of writing a script in Java that quickly outputs the correct time based on the amount of 9s. Since I don’t work in Java I thought I’d take a shot at porting his script to php (what else?).

Here’s my take on it:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
$sp = array();
$sp['min'] = 60;
$sp['hour'] = $sp['min']*60;
$sp['day'] = $sp['hour']*24;
$sp['year'] = $sp['day']*365;
 
function determine_nines($num_nines, $seconds){
	global $sp;
 
	$seconds = (double)$seconds;
	$str =  $num_nines." 9's (";
	for ($i = 0; $i < $num_nines; $i++) {
		if (2 == $i) {
			$str .= '.';
		}
		$str .= '9';
	}
 
	$str .= '%) = up to ';
	$str .= ($seconds / $sp['hour']).'h / ';
	$str .= ($seconds / $sp['min']).'m / ';
	$str .= $seconds.' seconds of downtime per year.';
	$str .= '<br />';
	return $str;
}
 
echo "Nines of Reliability: (Hours / Minutes / Seconds)<br />";
$base = 100.0;
for($i=2;$i<=7;$i++){
	if($i != 2){
		$base = $base*10;
	}
	echo determine_nines ($i, $sp['year'] / $base);
}
?>

So using my SLA of 99.99% I get a maximum downtime of 0.876 hours or 52.56 minutes of downtime per year.

Cool.

For comparison here’s the complete output of the above script (it matches exactly what John had; so that’s nice).


Nines of Reliability: (Hours / Minutes / Seconds)
2 9′s (99%) = up to 87.6h / 5256m / 315360 seconds of downtime per year.
3 9′s (99.9%) = up to 8.76h / 525.6m / 31536 seconds of downtime per year.
4 9′s (99.99%) = up to 0.876h / 52.56m / 3153.6 seconds of downtime per year.
5 9′s (99.999%) = up to 0.0876h / 5.256m / 315.36 seconds of downtime per year.
6 9′s (99.9999%) = up to 0.00876h / 0.5256m / 31.536 seconds of downtime per year.
7 9′s (99.99999%) = up to 0.000876h / 0.05256m / 3.1536 seconds of downtime per year.

Bookmark and Share

Related Posts

Stand Alone ExpressionEngine Authentication
Importing Legacy Users Into ExpressionEngine
CartThrob 2.0 Beta Fun
ExpressionEngine and the Mystery of M00o93H7pQ09L8X1t49cHY01Z5j4TT91fGfr
Custom Routes With Zend Framework

Tags: php, reliability

This entry was written by Eric Lamb and posted on Wednesday, April 22nd, 2009 at 5:21 am and is filed under Brain Dump, IT, Programming. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

One Comment

  1. A LINE FOR THE INTERNET | Find Product says:
    July 3, 2011 at 10:31 am

    [...] a line for the internet blog.ericlamb.net [...]

    Reply

Leave a Reply

Click here to cancel reply.

  • Subscribe: Entries | Comments
  • About Me

    Email Email
    Twitter Twitter
    310.739.3322
  • Categories

    • Brain Dump
    • Business
    • Code
    • IT
    • Programming
    • Rant
    • Servers
  • Archives

    • October 2011
    • August 2011
    • July 2011
    • June 2011
    • May 2011
    • April 2011
    • March 2011
    • February 2011
    • January 2011
    • December 2010
    • November 2010
    • October 2010
    • September 2010
    • August 2010
    • July 2010
    • June 2010
    • May 2010
    • April 2010
    • March 2010
    • February 2010
    • January 2010
    • December 2009
    • November 2009
    • October 2009
    • September 2009
    • August 2009
    • July 2009
    • June 2009
    • May 2009
    • April 2009
    • March 2009
    • February 2009
    • January 2009
    • December 2008
    • November 2008
    • October 2008

Copyright © 2008 - 2012 Eric Lamb - All rights reserved