Ya has aprendido la regla tres veces y desde tres ángulos: el rendimiento (throughput) es el mínimo, los cinco pasos de Goldratt son el procedimiento para gobernar al más lento, y pulir un no-cuello-de-botella aporta exactamente cero a lo que el sistema entrega. Todo cierto, todo cualitativo. Esta lección te da el número. Cuando alguien diga «hagamos la base de datos el doble de rápida», podrás responder, en una servilleta, «estupendo — eso nos compra una aceleración global de 1,43x, y ni una gota más». La fórmula que hace esto es la ley de Amdahl (Amdahl’s law), y una vez la tengas en la cabeza nunca más te dejarás engañar por una optimización de nombre impresionante apuntada al sitio equivocado.
Antes de leer — adivina
Una tarea pasa el 90 % de su tiempo en el paso A y el 10 % en el paso B. Haces el paso B infinitamente rápido — instantáneo, tiempo cero, magia. ¿Cuánto más rápida corre ahora la tarea entera?
El planteamiento: todo sistema es parte-mejorable, parte-fija
En 1967 un arquitecto de ordenadores llamado Gene Amdahl se levantó en una conferencia para argumentar en contra del bombo en torno a los ordenadores masivamente paralelos. Su argumento era aritmético, no de opinión: un programa nunca es enteramente paralelizable. Alguna fracción de él es tercamente secuencial — tiene que correr de principio a fin en un solo procesador por muchos que le eches al problema. Y esa fracción fija, demostró, pone un tope infranqueable a lo mucho que todos tus procesadores extra podrán jamás comprarte. El argumento iba sobre computación paralela, pero las matemáticas son universales — se aplican a cualquier cosa que puedas dividir en «la parte que puedo acelerar» y «la parte que no».
Así que plantéalo en general. Coge cualquier tarea y divide su tiempo total en dos cubos:
- La fracción del trabajo que sí puedes acelerar — la etapa paralelizable, la consulta lenta, el paso manual que puedes automatizar. ( está entre 0 y 1; si el 80 % del tiempo es mejorable, .)
- La fracción que no puedes — la sobrecarga fija, el trozo irreduciblemente secuencial, la parte de la tarea que está atascada a su velocidad actual.
Ahora supón que aceleras la parte mejorable por un factor . Hazla el doble de rápida, ; diez veces más rápida, ; infinitamente rápida, . La pregunta que responde Amdahl es la única que importa: ¿cuánto más rápida se vuelve la tarea entera? No la parte que afinaste — el conjunto entero, de principio a fin, que es lo que de verdad le importa a cualquiera.
La versión de una frase
Divide una tarea en la parte que puedes acelerar () y la parte que no (). Por mucho que aprietes sobre , la parte fija se queda exactamente donde estaba — y fija un muro que nunca podrás cruzar.
La fórmula
Aquí la tienes, toda la ley de Amdahl en una línea:
«Aceleración» significa tiempo viejo dividido entre tiempo nuevo — una aceleración de 2 significa que la tarea corre ahora en la mitad del tiempo. Lee el denominador como «el nuevo tiempo total, medido como fracción del tiempo total viejo», y se desmonta en dos piezas honestas:
- — la parte fija, que tarda lo mismo que antes. No la tocaste, así que aporta su cuota original completa al nuevo total.
- — la parte mejorable, que solía tardar del tiempo y ahora, acelerada por un factor , tarda solo . Acelérala 4x y se encoge a una cuarta parte de su cuota antigua.
Suma esas dos y tienes el nuevo tiempo total como fracción del viejo; dale la vuelta (el de arriba) y tienes la aceleración. Eso es todo. Sin cálculo, sin supuestos ocultos — solo «la parte que arreglaste se hizo más pequeña, la parte que no se quedó igual, súmalas e invierte».
Compruébalo contra el pretest. Allí, (solo el paso B, el 10 %, era mejorable) y lo hicimos infinito, así que :
Exactamente las 1,11x que resultaron tan decepcionantes. La fórmula no te miente — es la misma decepción, hecha precisa.
Un informe tarda 200 segundos en generarse: 50 segundos de preparación fija y 150 segundos de cálculo numérico que puedes acelerar. Haces el cálculo 3x más rápido. Usando la ley de Amdahl, ¿cuál es la aceleración global?
El techo infranqueable
Ahora empuja hasta el infinito — acelera la parte mejorable perfectamente, hazla instantánea, lo mejor que podrías hacer jamás. El término se desvanece, y la fórmula colapsa en algo bello y brutal:
Ese es el techo. El hecho más importante de toda la lección. Por mucho dinero, talento o magia que viertas en la parte mejorable, la aceleración global nunca puede superar , porque la parte que no arreglaste todavía tiene que correr. Si el 25 % del trabajo es no-mejorable, entonces y tu techo es x — podrías hacer el otro 75 % literalmente instantáneo y la tarea entera seguiría corriendo solo 4x más rápido. La parte fija se ha convertido en el nuevo cuello de botella, exactamente en el sentido que las lecciones 1 a 3 te entrenaron a ver. La ley de Amdahl es la idea del cuello de botella escrita como aritmética continua: alivia todo salvo una parte terca, y esa parte se convierte en la restricción y te pone tope.
Aquí está el techo en unas cuantas fracciones que merece la pena memorizar:
| Fracción no-mejorable | Fracción mejorable | Aceleración máxima posible |
|---|---|---|
| 10 % | 90 % | 10x |
| 25 % | 75 % | 4x |
| 50 % | 50 % | 2x |
| 90 % | 10 % | 1,11x |
Lee la fila de abajo y siéntela: cuando el 90 % del trabajo está atascado, lo mejor que podrás hacer jamás — aceleración perfecta e infinita del otro 10 % — es unas miserables 1,11x. Eso es el pretest, ahí sentado en la tabla. Y fíjate en que la tabla responde a una pregunta antes de que hayas gastado un céntimo: te dice lo máximo que una optimización podría llegar a valer, lo cual suele ser razón suficiente para no molestarte.
El techo lo fija lo que NO arreglas
Tu aceleración máxima es — un número que depende enteramente de la fracción que estás dejando en paz, y nada en absoluto de lo ingeniosa que sea tu optimización. No puedes superar este muro a base de ingeniería. La única manera de subir el techo es hacer más del trabajo mejorable (encoger ) — lo que equivale a ir a atacar una parte mayor del problema.
Un ejemplo resuelto completo
Hagámoslo concreto con un pipeline de datos. Tiempo total de ejecución: 100 minutos. De eso, 80 minutos son una etapa de transformación paralelizable (este es tu — el 80 % del trabajo, así que ) y 20 minutos son sobrecarga fija: leer la fuente, escribir el resultado, el pegamento secuencial que no puedes paralelizar (). Tu jefe lo quiere más rápido y pregunta cuánto ayudará acelerar la etapa de transformación. Calculémoslo para un rango de esfuerzos y veamos qué pasa.
Para cada , el tiempo nuevo es minutos, y la aceleración es dividido entre eso:
| Factor de aceleración de la transformación | Nuevo tiempo de transformación | Nuevo tiempo total | Aceleración global |
|---|---|---|---|
| 1 (no hacer nada) | 80 min | 100 min | 1,00x |
| 2 | 40 min | 60 min | 1,67x |
| 4 | 20 min | 40 min | 2,5x |
| 8 | 10 min | 30 min | 3,33x |
| (instantáneo) | 0 min | 20 min | 5x |
Recorre esa última columna. Duplicar la velocidad de la transformación () te da 1,67x. Ir a 4x te da 2,5x. Ir a 8x — ocho veces más rápido, un esfuerzo de ingeniería serio — te da solo 3,33x. Y hacerla infinitamente rápida, el máximo teórico, topa en 5x (, directo de la fórmula del techo). Esos 20 minutos de sobrecarga fija son el muro: incluso con la transformación desaparecida por completo, el pipeline no puede correr en menos de 20 minutos, así que no puede superar una aceleración de 5x. Jamás.
En ese mismo pipeline de 100 minutos (80 min mejorables, 20 min fijos), tu equipo pasa un mes haciendo la etapa de transformación 8x más rápida, y luego propone otro mes para empujarla de 8x a 16x. ¿Cuánta aceleración global *adicional* compra, a grandes rasgos, ese segundo mes?
Rendimientos decrecientes, y dónde gastar de verdad
Mira fijamente ese ejemplo resuelto y salta un patrón a la vista: cada duplicación de compra menos que la anterior. La primera duplicación (1x → 2x) compró 0,67x de aceleración global. La siguiente (2x → 4x) compró 0,83x. Para cuando vas de 8x → 16x estás rascando fracciones de una fracción. Esto es la ley de los rendimientos decrecientes (diminishing returns), y Amdahl te dice exactamente por qué muerde: a medida que aceleras la parte mejorable, esta se encoge hacia cero, así que la parte fija toma el relevo como el coste dominante — y la parte fija no la puedes tocar, por definición. Estás estampándote asintóticamente contra el techo.
Entonces, ¿dónde deberías gastar? La fórmula responde limpiamente: para obtener la mayor aceleración global, apunta a la más grande — la parte que se come más tiempo total. Una parte con una grande tiene un techo generoso ( es alto) y recompensa cada pizca de aceleración que le des. Una parte con una pequeña tiene un techo apenas por encima de 1x; incluso una astucia infinita ahí se desperdicia. Y «encuentra la parte que domina el tiempo total, y empuja ahí» es precisamente rendimiento = mínimo y el primer paso de enfoque de Goldratt — identifica la restricción — vestido de álgebra. La ley de Amdahl no contradice las lecciones anteriores; las cuantifica. El cuello de botella es la etapa con la mayor cuota del tiempo, la única optimización con margen real, y las matemáticas te lo dicen.
Empareja cada pieza de la ley de Amdahl con lo que significa.
Elige un término y luego haz clic en su definición.
Una petición web tarda 1000 ms: 950 ms en una consulta lenta a base de datos y 50 ms en todo lo demás. Ordena cada optimización propuesta según si merece la pena hacerla.
Coloca cada elemento en su grupo.
- Reescribir el serializador JSON (parte de los 50 ms) para rascar 10 ms
- Microoptimizar el registrador de peticiones (unos pocos ms de los 50)
- Añadir un índice que recorte la consulta de 950 ms aproximadamente a la mitad
- Optimizar a mano los 50 ms de código de pegamento hasta los 25 ms
- Mover la consulta a la base de datos a una máquina más rápida (domina el tiempo)
- Cachear la consulta a la base de datos para que devuelva en 50 ms en lugar de 950 ms
Cuándo usarlo
Cuándo usarlo
Echa mano de la ley de Amdahl en el momento en que alguien proponga una optimización y quieras saber — antes de construirla — si merece el esfuerzo. Necesitas dos números: (¿qué fracción del tiempo total se lleva esta parte?) y una estimación de (¿cuánto más rápida puedo hacerla de forma realista?). Mételos. Si la respuesta es «1,1x por tres semanas de trabajo», acabas de ahorrarte tres semanas. Es un filtro de cinco segundos que atrapa el error más caro de la ingeniería: verter esfuerzo en una parte demasiado pequeña para importar. Perfila primero para encontrar la grande, luego apunta ahí — Amdahl convierte «¿dónde deberíamos optimizar?» de un debate en un problema de aritmética.
La trampa: optimizar una pequeña rebanada del tiempo
No puedes recuperar más de lo que vale una parte. Si algo es solo el 10 % del tiempo total, perfeccionarlo — aceleración infinita — te compra como mucho 1,11x, y cualquier aceleración realista compra mucho menos. La versión más seductora de esta trampa es optimizar la parte que mejor entiendes o que te parece más divertida, en lugar de la parte que de verdad es grande. Mide la rebanada antes de afilar el cuchillo: un arreglo brillante a una rebanada del 5 % sigue siendo un error de redondeo.
Enuncia la regla del techo de memoria.
Elige la opción correcta para cada hueco y comprueba.
Por mucho que aceleres una parte de un sistema, tu aceleración global nunca puede superar , un muro fijado enteramente por la fracción del trabajo que mejorar. Para subir ese techo, debes .
Ponte a prueba: las matemáticas de la aceleración
La ley de Amdahl dice que la aceleración global = 1 / ((1−p) + p/s). ¿Qué representa el término p/s?
Comprueba tu respuesta para continuar.
Repaso
Visión de conjunto
La ley de Amdahl — las matemáticas de la aceleración
- Ley de Amdahl
- El planteamiento
- Divide una tarea: p = fracción mejorable, 1−p = fija
- Acelera la parte mejorable por un factor s
- Gene Amdahl, 1967 — computación paralela, pero universal
- La fórmula
- Aceleración = 1 / ((1−p) + p/s)
- (1−p): parte fija, mismo tiempo que antes
- p/s: parte mejorable, ahora encogida
- El techo infranqueable
- Cuando s → ∞, aceleración → 1/(1−p)
- Lo fija la parte que NO arreglas, no tu astucia
- 25 % fijo → 4x máx.; 90 % fijo → 1,11x máx.
- La parte fija se vuelve el nuevo cuello de botella
- Rendimientos decrecientes
- Cada duplicación de s compra menos que la anterior
- La parte fija domina al encogerse la parte mejorable
- Dónde gastar
- Apunta a la p MÁS GRANDE — la parte que domina el tiempo
- = rendimiento es mínimo = identifica la restricción
- Las optimizaciones de p pequeña tienen tope cerca de 1x — sáltalas
- El planteamiento
Adónde va esto a continuación
Ahora tienes la llave cuantitativa de todo el curso: el rendimiento es el mínimo, la restricción es la parte que tiene la más grande, y la ley de Amdahl te dice por adelantado exactamente cuánto vale un arreglo — techo incluido. Puedes mirar cualquier optimización propuesta y decir, antes de construirla, «eso vale 2x» o «eso no vale nada», lo cual es un superpoder genuino.
Pero hay un giro que las matemáticas han estado insinuando en voz baja. Acelera la parte de grande lo suficiente y deja de ser la más grande — alguna otra parte domina ahora el tiempo, con su propia , su propio techo. La restricción no desapareció; se movió. La última lección didáctica, La restricción siempre se mueve, va sobre cabalgar ese juego sin fin — por qué arreglar un cuello de botella siempre revela el siguiente, cómo ciclar por ellos deliberadamente (el quinto paso de Goldratt: vuelve al principio), y dónde se esconde esta cacería interminable en tu tráfico, tu equipo, tus consultas y tus mañanas.