next up previous contents
Siguiente: Acercamiento a una definici'on Subir: Conclusiones y Recomendaciones Anterior: Resultados de la categor'ia   Índice General


Script de medici'on de las m'etricas Capacity Planning y Escalabilidad

 #!/usr/bin/env ruby

 #
 #  escalabilidad_capacityPlanning_cantidadDatos.rb
 #
 # Creado por Daniel Moros y Yannixia Castellanos
 # Proyecto de Grado
 # Tutor Kenyer Dominguez
 # Ultima Fecha Modificacion: Marzo de 2010
 # 
 # Script que permite el ingreso de un conjunto de par'ametros referentes a
 # funciones de estimaci'on y devuelve la ejecuci'on de la funci'on de 
 # medici'on de la Escalabilidad y el Capacity Planning. 
 # Produce c'odigo LaTEX que puede ser copiado directamente con la informaci'on
 # relevante, as'i como la sustituci'on por pasos de las f'ormulas. 
 #

 # Par'ametros de entrada:
 # Constante de demanda: Constante de una recta que estima el crecimiento de la 
 #                       demanda.
 # Pendiente de demanda: Pendiente de la recta que estima el crecimiento de la 
 #                       demanda.
 # Constante de capacidad: Constante de una recta que estima el tiempo
 #                        que tomar'a una transacci'on para una cantidad de datos
 #                        dada.
 # Pendiente de capacidad: Pendiente de una recta que estima el tiempo
 #                        que tomar'a una transacci'on para una cantidad de datos
 #                        dada.
 # N'umero de a~nos:    Cantidad de a~nos futuros, en los que se quiere hacer la
 #                      verificaci'on de la escalabilidad.
 # A~no actual:         A~no actual. En el que si se evalua la funci'on de demanda
 #                      dar'ia un valor cercano a la demanda actual real.

# f 
# Funci'on que evalua una la recta con constante c, pendiente m en el punto x.
def f(c,m,x)

    demanda= (c+m*x)
    puts "    Para el a~no "+x.to_s+" el sistema tendr'a una demanda de" +\
     " aproximadamente "+ demanda.to_s+ " registros."
  return demanda
end


begin
 
#  print(ARGV[0])
  if(ARGV.length!=6)
    puts("    Para ejecutar debe hacer:")
    puts("    "+$0+" <constante_de_demanda> <pendiente_de_demanda> "+  \
         "<constante_de_capacidad> <pendiente_de_capacidad> <anios a evaluar>"+\
         "<anio actual>")
    exit()
  end
  constante_de_demanda=Float(ARGV[0])
  pendiente_de_demanda=Float(ARGV[1])

  constante_de_capacidad=Float(ARGV[2])
  pendiente_de_capacidad=Float(ARGV[3])
  req_de_calidad=1300 # ms.Depende del QoS que se tenga para el sistema.
  capacidad_actual=Integer((1300-constante_de_capacidad)/pendiente_de_capacidad)
  
  anios_escalar=Integer(ARGV[4])
  anio_actual=Integer(ARGV[5])

  puts("  Se estima que bajo esta configuraci'on el sistema podr'a responder" +\
       " en tiempo promedio inferior a " + req_de_calidad.to_s + \
       " ms, hasta una demanda de " + capacidad_actual.to_s + " registros" +\
       " de la BD.\n\n")

  uso_futuro_cinco=
    f(constante_de_demanda,pendiente_de_demanda,(anio_actual+anios_escalar))

  uso_futuro_cuatro= 
    f(constante_de_demanda,pendiente_de_demanda,(anio_actual+(anios_escalar*3/4)))
  
  uso_futuro_tres= 
    f(constante_de_demanda,pendiente_de_demanda,(anio_actual+(anios_escalar*1/2)))
  
  uso_futuro_dos= 
    f(constante_de_demanda,pendiente_de_demanda,(anio_actual+(anios_escalar*1/4)))

  if(uso_futuro_cinco <= capacidad_actual)
         puts   "\nEl sistema satisface el objetivo de escalabilidad."
    puts "La escalabilidad de este sistema es: 5"
    else
        puts    " \nEl sistema NO satisface la caracteristica de escalabilidad"
        puts    "La escalabilidad de este sistema es: 1"
        if(uso_futuro_cuatro <= capacidad_actual)
             puts "        El Capacity Planning de este sistema es 4"
        elsif(uso_futuro_tres <= capacidad_actual)
            puts "        El Capacity Planning de este sistema es 3"
        elsif(uso_futuro_dos <= capacidad_actual)
            puts "        El Capacity Planning de este sistema es 2"
         else
            puts "        El Capacity Planning de este sistema es 1"
         end
    end
 

    puts "\n      Codigo Latex de los resultados de Escalabilidad: \n\n"
    
    puts "Puede ser observado en la F'ormula"
    puts " \\ref{eq:resultadosEscalabilidadUsoFuturo}, "
    puts "como se realizan"
    puts " las sustituciones utilizando el m'etodo propuesto.\n"
    
    puts "\\begin{equation} \\label{eq:resultadosEscalabilidadUsoFuturo} \n" +\
    " \\begin{split}"
    puts "  uso\\_futuro_{cinco} & = f(t+y)\\\\"
    puts "              &   =  f(" + anios_escalar.to_s + "+" +\
     anio_actual.to_s + ") \\\\"
    puts "              & = "+ uso_futuro_cinco.to_s + " \\\\ \n \\\\"    
    puts "  \\end{split} \n\\end{equation} \n \n "


    
   puts "       Codigo Latex de los resultados de Capacity Planning: \n\n"
   
    puts "\\begin{equation} \\label{eq:resultadosCapacityPlanningUsoFuturo} \n"+\
        " \\begin{split}"
    puts "  uso\\_futuro_{cinco} & = f(t+y)\\\\"
    puts "              &   =  f(" + anios_escalar.to_s + "+" + \
        anio_actual.to_s + ") \\\\"
    puts "              & = "+ uso_futuro_cinco.to_s + " \\\\ \n \\\\"
    
    puts "  uso\\_futuro_{cuatro} & = f\\left(\\frac{3}{4}*t+y\\right)  \\\\"
    puts "              &   =  f\\left(\\frac{3}{4}*" + anios_escalar.to_s + \
         "+" + anio_actual.to_s + "\\right) \\\\"
    puts "              & = " +  uso_futuro_cuatro.to_s + " \\\\ \n \\\\"

    puts "  uso\\_futuro_{tres} & = f\\left(\\frac{1}{2}*t+y\\right)  \\\\"
    puts "              &   =  f\\left(\\frac{1}{2}*" + anios_escalar.to_s + \
         "+" + anio_actual.to_s + "\\right) \\\\"
    puts "              & = "+ uso_futuro_tres.to_s + " \\\\ \n \\\\"

    puts "  uso\\_futuro_{dos} & = f\\left(\\frac{1}{4}*t+y\\right)  \\\\"
    puts "              &   =  f\\left(\\frac{1}{4}*" + anios_escalar.to_s + \
        "+" + anio_actual.to_s + "\\right) \\\\"
    puts "              & = "+ uso_futuro_dos.to_s + " \\\\ "

    puts "  \\end{split} \n\\end{equation} \n \n "

  
    
    anio_maximo = (capacidad_actual-constante_de_demanda) / pendiente_de_demanda
    puts "Sustituyendo como se muestra en la f'ormula" +\
        " \\ref{eq:estimacionDeAnio}, se estima que " +\
        "el sistema ser'a capaz de satisfacer la demanda hasta antes del a~no " +\
         anio_maximo.ceil.to_s + ".\n"
    puts "\\begin{equation} \\label{eq:estimacionDeAnio} \n \\begin{split}"
    puts "  \\text{A~no}      & = \\left( \\frac{capacidad\\_actual" +\
        " + constante\\_demanda}{pendiente\\_de\\_demanda" +\
            "} \\right ) \\\\"
    puts "                  & = \\left( \\frac{" + capacidad_actual.to_s + \
         "+" + constante_de_demanda.to_s + \
             "}{" + pendiente_de_demanda.to_s + "} \\right) \\\\" 
    puts "                  &   = " + anio_maximo.to_s + " \\\\"
    
    puts "  \\end{split} \n\\end{equation}  \n \n "

end



Daniel Moros 2010-05-05