Actividad 08 · JMeter & Interpolación
FECHA: 04/12/2025 | SEMESTRE: Cuarto
1. Introducción
El objetivo de este trabajo es aplicar un método de interpolación utilizando datos reales obtenidos de la herramienta Apache JMeter, y con ello plantear un problema de optimización relacionado al rendimiento de un servicio web bajo carga. El análisis permite estimar cómo crece el tiempo de respuesta del sistema conforme aumenta el número de usuarios concurrentes.
2. Datos Experimentales (JMeter)
Se ejecutaron pruebas de carga hacia una API utilizando distintos volúmenes de usuarios. Los valores corresponden al tiempo promedio total registrado para cada grupo.
| Usuarios (x) | Tiempo promedio (y) en ms |
|---|---|
| 10 | 207 |
| 50 | 1544 |
| 100 | 1880 |
| 200 | 2448 |
3. Interpolación de Newton
Se escogió el método de Diferencias Divididas de Newton porque permite construir el polinomio interpolante de manera progresiva y funciona bien con puntos no equiespaciados.
Polinomio Obtenido
$$P(x) = 207 + 33,425(x - 10) - 0,2967(x - 10)(x - 50) + 0,0015(x - 10)(x - 50)(x - 100)$$
4. Evaluación del Modelo
Para estimar el rendimiento entre intervalos, se evaluó el polinomio en distintos valores de usuarios (\(x\)).
| Usuarios (x) | P(x) estimado (ms) |
|---|---|
| 80 | 1859.58 |
| 120 | 1833.87 |
| 150 | 1800.03 |
Nota: El polinomio muestra una curvatura ligera y posibles oscilaciones en ciertos rangos, algo normal en interpolación polinómica de grado superior.
5. Problema de Optimización
Se desea determinar el mayor número de usuarios \(x\) tal que el tiempo de respuesta no supere un umbral aceptable (SLA).
Condición
$$P(x) \le 2000 \text{ ms}$$
Resolución
Resolviendo para \(x\), se obtiene:
$$x \approx 178$$
6. Discusión Técnica
- Predicción: El modelo interpolante permite predecir tiempos de respuesta para valores no medidos.
- Oscilaciones: Puede presentar oscilaciones (fenómeno de Runge), aunque aquí es controlado.
- Largo Plazo: Para predicción estable a largo plazo se recomienda considerar splines cúbicos o regresión por mínimos cuadrados.
7. Conclusiones
- Los datos de JMeter se integraron correctamente en un modelo matemático mediante interpolación de Newton.
- Se resolvió un problema de optimización, hallando un límite matemático de 178 usuarios para un SLA de 2000ms.
- Se contrastó el límite matemático con el límite operativo real (aprox. 100 usuarios) basado en tasas de error.
9. Código en R
Código utilizado para crear la tabla, construir el polinomio y resolver la optimización.
# 1) Datos de JMeter
x <- c(10, 50, 100, 200)
y <- c(207, 1544, 1880, 2448)
# 2) Funcion para diferencias divididas
div_diff <- function(x, y) {
n <- length(x)
coef <- y
for (j in 2:n) {
coef[j:n] <- (coef[j:n] - coef[(j-1):(n-1)]) / (x[j:n] - x[1:(n-j+1)])
}
return(coef)
}
coef <- div_diff(x, y)
print(coef) # Coeficientes del polinomio
# 3) Funcion del polinomio de Newton
newton_eval <- function(x_eval, x, coef) {
n <- length(coef)
p <- coef[n]
for (k in (n-1):1) {
p <- coef[k] + (x_eval - x[k]) * p
}
return(p)
}
# Evaluacion
cat("P(80) =", newton_eval(80, x, coef), "\n")
# 4) Resolver P(x) = 2000
f_opt <- function(u) { newton_eval(u, x, coef) - 2000 }
sol <- uniroot(f_opt, interval=c(10, 200))
cat("Punto optimo (usuarios):", sol$root, "\n")