Algunos resultados estadı́sticos sobre el acceso a los datos en dispositivos de almacenamiento informáticos F. Javier Gil Chica junio, 2010 Resumen En este pequeño artı́culo se reúnen algunos resultados estadı́sticos en relación con el acceso a datos informáticos. Unos dependen de la geometrı́a que subyace a los datos (ej. discos duros divididos en pistas y sectores) y otros son más generales. 1. Parámetros dinámicos de un disco duro En relación con los discos duros, introduciremos tres parámetros dinámicos: tiempo de búsqueda, latencia rotacional y tiempo de transferencia. Un disco duro es un medio de almacenamiento popular donde sobre la superficie de un disco de material plástico, aluminio u otro material no magnético, se deposita una capa de material ferromagnético. Un cabezal se sitúa a una distancia variable del centro del disco. Cuando éste gira, el cabezal ((dibuja)) un cı́rculo sobre el sustrato. Este cı́rculo se denomina ((pista)), a su vez dividida en un número de partes iguales llamadas ((sectores)). Cuando hay más de una superficie ferromagnética (ej. un conjunto de discos montados coaxialmente) al conjunto de pistas situadas a la misma distancia del centro se le llama ((cilindro)). Nosotros supondremos que existe una sola superficie ferromagnética y un sólo cabezal. Nuestro análisis es independiente del método fı́sico usado para grabar o leer los datos. Se llama ((tiempo de búsqueda)), τb , al tiempo empleado por el cabezal en desplazarse hasta la pista donde se encuentra el sector que quiere leerse o escribirse. ((Tiempo de latencia rotacional)), τl , es el tiempo necesario para que, una vez colocado el cabezal sobre la 1 pista correcta, el sector buscado comience a pasar bajo él. Por término medio, el tiempo de latencia rotacional es igual al tiempo necesario para que el disco complete media vuelta. Finalmente, el tiempo de transferencia, τt , es el tiempo que tarda el sector en pasar bajo el cabezal. Depende del número de sectores por pista y de la velocidad angular de rotación del disco. 2. Tiempos de transferencia y latencia El tiempo de transferencia es el tiempo que invierte un sector en pasar bajo el cabezal de lectura, pues no tiene sentido que sea preciso hacer más de una pasada para leer un sector. Los datos contenidos en el sector han de ser leı́dos ”al vuelo”. Si el disco gira a una velocidad de ω rad s−1 , quiere decir que completa un número de vueltas por segundo igual a ω/2π, o lo que es igual, que invierte en cada vuelta un tiempo de 2π/ω. Si una pista contiene n sectores, entonces el tiempo que se tarda en leer un sector es τt = 2π/(nω). En los discos actuales, el número de sectores por pista no es constante, luego la expresión para el tiempo de transferencia anterior hemos de entenderla como función de n. Si el rango de sectores por pista se extiende desde na hasta nb , entonces el tiempo medio de transferencia es τ̄t = 1 nb − na Z nb 1 2π dn 2π nb = ln ω n ω nb − na na na (1) Respecto al tiempo de latencia, es el tiempo medio que ha de esperar el cabezal hasta que el sector buscado pasa por debajo. Este tiempo será de media, el tiempo que invierte el disco en girar media vuelta, luego τl = π/ω. Hay medios de almacenamiento que no giran a velocidad angular constante, sino de forma que la velocidad lineal de los datos que pasan bajo el cabezal es constante. Consideremos 1 un disco cuyas pistas se extienden entre un radio interior a y un radio exterior b, de forma que la velocidad lineal es constante. La velocidad angular a una distancia r del centro del disco es entonces ω = v/r, y el tiempo de latencia a esa distancia es τl (r) = πr/v. El tiempo medio de latencia se calcula entonces como τ̄l = 1 1 b−a Z b a τl (r)dr = π (b + a) 2v Este problema fue propuesto en un examen de la asignatura Periféricos 2 (2) 3. Tiempo medio de búsqueda. Caso discreto Supongamos un disco compuesto de un gran número, N , de pistas. Calcularemos el tiempo medio de búsqueda. Para ello introduciremos un nuevo parámetro, τpp , que es el tiempo que tarda el cabezal en desplazarse de una pista a otra contigua. El tiempo necesario para que el cabezal se mueva i pistas es t(i) = iτpp . El tiempo medio que buscamos es entonces: τ̄ = N −1 X t(i)p(i) (3) i=0 donde p(i) es la probabilidad de que se produzca un salto de i pistas y el mayor salto posible es de N − 1 pistas. Supondremos que los saltos del cabezal son aleatorios. No existe correlación entre la posición actual del cabezal y la posición siguiente. El número total de saltos posibles del cabezal, incluyendo el salto ((nulo)), es N 2 , y el número de formas posibles de saltar i pistas es 2(N − i), donde el factor 2 da cuenta de las dos direcciones en que pueden efectuarse los saltos. Por otro lado, al ser t(0) = 0, la sumatoria se reduce a τ̄ = N −1 X iτpp i=1 −1 2(N − i) 2τpp NX (N i − i2 ) = N2 N 2 i=1 (4) Del hecho de que N X 1 i = N (N + 1) 2 i=1 (5) 1 i2 = N (N + 1)(2N + 1) 6 i=1 (6) y que se sigue que τ̄ = N X 2τpp 1 1 (N − 1)N 2 − (N − 1)N (2N − 1) N2 2 6 (7) Cuando N 2 >> N , la expresión anterior tiende a 1 τ̄ = N τpp (8) 3 Es decir, el tiempo medio de búsqueda es el tiempo preciso para que el cabezal recorra un tercio del disco. 3 4. Desplazamiento medio, caso continuo Una forma distinta de llegar al mismo resultado consiste en calcular la distancia media que recorrerá el cabezal. El cálculo puede hacerse discreto pero, para no repetir razonamientos anteriores, razonaremos sobre el continuo. En efecto, considérese un segmento de recta de longitud unidad y sea sobre ese segmento un punto situado a una distancia x del origen. La distancia media del resto de puntos de la recta a x viene dada por η(x) = Z x (x − y)dy + 0 Z 1 (y − x)dy = x2 − x + x 1 2 (9) Esta función no es monótona, sino que tiene un mı́nimo cuando dη(x) = 2x − 1 = 0 dx (10) de donde, cuando x = 21 , la distancia media a x es mı́nima. Ası́, en un disco con ((poco trabajo)) es rentable después de cada operación desplazar el cabezal al punto medio. El caso es similar al de un jugador de tenis: entre resto y resto vuelve al centro de la pista, porque desde allı́ la distancia media a recorrer para alcanzar el siguiente resto es mı́nima. La distancia media que ha de moverse el cabezal se puede calcular entonces como la ((media de las medias)): η̄ = Z 1 η(x)dx = 0 Z 1 0 1 1 (x2 − x + )dx = 2 3 (11) Como segundo ejemplo, consideremos el caso de un disco de dos cabezales. Pongámonos en antecedentes. Los sistemas RAID son un concepto que proviene de principios de los años 80. En aquella época, los discos tenı́an capacidades de unas pocas decenas de megabytes, y tiempos medios entre fallos de unas 40.000 horas. Tenı́a sentido diseñar, sobre esta base, sistemas más capaces y fiables. Treinta años después los discos tienen capacidades del orden del Terabyte, con tiempos medios entre fallos superiores al millón de horas. De la misma forma, se han reducido los tiempos de latencia y de búsqueda. En estas circunstancias, tiene sentido replantear la utilidad de los RAID, y buscar algún tipo de paralelismo intra-disco. El caso más sencillo consiste en dotar a un disco de dos o más cabezales. Supongamos un disco con dos cabezales. Los cabezales pueden actuar cada uno sobre porciones disjuntas del disco, o bien moverse por toda la extensión del disco. Supondremos que la probabilidad de acceso a las distintas pistas es 4 uniforme. En el caso en que los cabezales acceden a regiones disjuntas del disco, pongamos cada uno de ellos a la mitad del disco, supuesto como un segmento lineal en el intervalo [0, 1], el desplazamiento medio de cada cabezal es un tercio de un medio, es decir, un sexto. Comparemos ahora con el caso en que los dos cabezales pueden moverse en el intervalo [0, 1]. Sea x la posición del primer cabezal e y la posición del segundo. La única restricción es que x <= y. Cada lectura o escritura se realiza por el cabezal más cercano. Ası́, el primer cabezal abarca el intervalo [0, (x + y)/2) y el segundo el intervalo [(x + y)/2, 1]. El desplazamiento medio es entonces Z x=1 dx x=0 Z y=1 y=x dy 1−x "Z z=(x+y)/2 |x − z|dz + z=0 Z z=1 |y − z|dz z=(x+y)/2 # (12) Aquı́ hemos tenido en cuenta de que las distribuciones de probabilidad para x, y y z son uniformes, por tanto las correspondientes densidades de probabilidad son constantes. Para x y z, que varı́an en el intervalo [0, 1], la densidad de probabilidad es la unidad. Para y sin embargo, que varı́a entre x y 1, la densidad de probabilidad es (1−x)−1 . Cada una de las dos últimas integrales se puede descomponer en dos, por ejemplo: Z z=(x+y)/2 |x − z|dz = z=0 Z z=x (x − z)dz + z=0 Z z=(x+y)/2 (z − x)dz (13) z=x el cálcuo es directo y conduce a que el desplazamiento medio es de 0,25, superior al valor 1/6 = 0,1667 que se obtendrı́a restringiendo el movimiento de cada cabezal a un semi-intervalo. 5. El disco duro del hombre pobre Antes de generalizar el resultado de la sección anterior para el caso en que el número de sectores por pista es variable de una pista a otra, consideremos el problema llamado del ((disco duro del hombre pobre)) 2 . Éste es un disco que tiene sólo dos pistas. Una pista A con x sectores y una pista B con y sectores. El tiempo que invierte el cabezal en moverse de una pista a otra es q, y la velocidad de rotación del disco es ω. Calculemos el tiempo medio de acceso a los sectores, que incluye tanto el tiempo de búsqueda como el tiempo de latencia rotacional. 2 Propuesto en un examen de la asignatura Periféricos de la licenciatura en Ingenierı́a Informática en la E.P.S. de la Universidad de Alicante 5 Suponemos que no existe correlación entre los sucesos ((encontrarse el cabezal sobre una pista)) y ((recibir una petición para leer/escribir un sector en esa pista)). El tiempo medio que buscamos es τ= X p(i)t(i) (14) i donde ahora i es sólo un ı́ndice que indica dos posibles sucesos. Si A → B indica que el cabezal se encuentra en A y recibe la orden de dirigirse a B, es claro que τ = p(A → A)t(A → A) +p(A → B)t(A → B) +p(B → B)t(B → B) +p(B → A)t(B → A) (15) pero t(A → A) = t(B → B) = π ω (16) y t(A → B) = t(B → A) = q + π ω (17) mientras que p(A → A) = x x x+yx+y p(A → B) = p(B → A) = x y x+yx+y (18) (19) y p(B → B) = y y x+yx+y (20) de todo lo cual se sigue τ= π 2xy + q ω (x + y)2 (21) (Una variación sobre este problema, propuesta un tiempo después, pedı́a calcular τ si ocurre que el cabezal, que sufre una averı́a, se mueve aleatoriamente entre una pista y la otra entre cada operación y la siguiente. La respuesta no requiere cálculo alguno, sino sólo saber qué está pasando, y es obvia: τ = ωπ + 2q ) 6 6. Número variable de sectores por pista Seguimos considerando que N es el número de pistas (grande), y que no existe correlación entre la posición actual del cabezal y la posición siguiente. Sea ni el número de sectores en la pista i, de tal manera que el número total de sectores es ν= X ni (22) i La probabilidad de que el cabezal se encuentre sobre la pista i es ni (23) ν y la probabilidad de que reciba una petición para la pista j es pi = nj ν La probabilidad de la transición i → j es pj = (24) ni nj ν2 operación en la que se emplea un tiempo (25) pij = tij = |j − i|τpp (26) El tiempo medio que buscamos es entonces τ̄ = X pij tij = ij X j X ni nj i<j ν2 (j − i)τpp + X ni nj i>j ν2 (i − j)τpp (27) El resultado analı́tico que obtengamos dependerá de la forma de la función ni . Puesto que la longitud de las pistas (que enumeramos correlativamente desde el interior al exterior del disco) crece linealmente con el radio, supondremos que ni = a + bi (28) ni nj = a2 + b2 ij + ab(i + j) (29) de donde el álgebra es engorrosa, pero podemos usar algún programa de cálculo simbólico para ayudarnos en los cálculos. Obtenemos ası́ una expresión polinómica en N . Quedándonos con la potencia más alta tenemos finalmente: 7 τ̄ = 7. τpp b2 3 N ν2 4 (30) Matriz bidimensional de datos Desde hace años se encuentran en desarrollo tecnologı́as alternativas a los discos duros. Una de ellas acude a un soporte bidimensional estático para los datos (una matriz de bits) sobre los que un conjunto grande de micro-cabezales efectúan las operaciones de lectura y escritura. En 2005, IBM presentó una versión operativa de su proyecto Milpiés y en la misma lı́nea Nanochip Inc. pretende mostrar sus primeros chips de 100 GB escalables a 1 TB a lo largo de 2009. Las dos ventajas principales son a) que el sustrato para los datos es estático: no es preciso mantenerlo en rotación y por tanto consumiendo energı́a, lo que, aparte de ahorrar ésta, elimina el tiempo de latencia. Esto los hace adecuados para la informática móvil. b) que las operaciones de lectura/escritura se realizan en paralelo, con lo cual es más fácil incrementar el ancho de banda. Si se dispone de una matriz de cabezales sobre el sustrato donde se encuentran almacenados los datos (polı́mero en el caso de IBM), cada cabezal individualmente accede a un área que supondremos rectangular 3 . Consideremos un sustrato cuadrado de lado 1 sobre el que se desplaza un cabezal. Si el desplazamiento del cabezal desde una posición dada a una de coordenadas (x, y) se efectúa en dos movimiento independientes, uno en el eje x y otro en el eje y, entonces es aplicable a cada uno de ellos el resultado encontrado anteriormente para el caso continuo monodimensional, del que sabemos que el desplazamiento medio es de 1/3. Por tanto, si p y q son las velocidades de desplazamiento del cabezal a lo largo de cada eje, el tiempo medio de acceso a los datos será 1 τ̃ = 3 1 1 + p q 3 (31) El dispositivo de IBM es un sustrato cuadrado sobre el que se desplaza una matriz de nanoagujas 8 8. Almacenamiento jerárquico 8.1. Dos niveles Es un hecho que la cantidad de datos que desean almacenarse es siempre mayor o igual que el espacio de almacenamiento disponible. Normalmente, se desea poder recuperar datos en el menor tiempo posible, pero, al mismo tiempo, mantener lo más bajo posible el coste del sistema. Una solución consiste en colocar en un medio de almacenamiento rápido los datos a los que se accede con más frecuencia, y en un medio más lento, pero menos costoso, aquellos datos que con menor probabilidad necesitarán ser recuperados. La cuestión que se plantea en este apartado es la de encontrar la distribución que asegura el equilibrio óptimo entre dos necesidades contrapuestas: velocidad de acceso y coste reducido. Imaginemos que se producen datos a un ritmo medio constante, y que es preciso mantenerlos almacenados durante un periodo de tiempo dado antes de desecharlos. De forma arbitraria, asignaremos el valor 1 a este periodo de tiempo, y de la misma forma asignaremos el valor de 1 al tiempo medio de acceso y coste del primer medio. En un primer cálculo, supondremos la existencia de dos medios distintos, estando caracterizado el segundo de ellos por un tiempo medio de acceso t > 1 y un coste c < 1. Evidentemente, la distribución óptima de los datos dependerá de la probabilidad de acceso a los datos según su antigüedad. Ası́, si esta probabilidad decrece rápidamente con el tiempo tiene sentido mantener en el primer medio una pequeña cantidad de datos, y pasar el resto al segundo medio. A la inversa, si esta probabilidad decrece lentamente tiene sentido mantener mayor cantidad de datos en el primer medio, puesto que será relativamente probable tener que acceder a los mismos. Un modelo plausible para la distribución de probabilidad de acceso a los datos en función de su antigüedad es: p(x) = p(0) [1 − xn ] (32) para cada 0 ≤ x ≤ 1. Aquı́, n es un entero mayor o igual que la unidad, y p(0), la densidad de probabilidad para x = 0, que viene dada por la condición de normalización: Z 1 p(x)dx = 1 (33) 0 de donde se sigue: p(0) = 1 + 9 1 n (34) Nuestro objetivo es minimizar el tiempo medio de acceso sin penalizar el precio del sistema. Sea T el tiempo medio de acceso, y C el coste total. Asignemos arbitrariamente la unidad tanto para el tiempo de acceso como el coste del primer medio, y sean c y t el coste y tiempo medio de acceso para el segundo medio. Finalmente, sea 0 ≤ z ≤ 1 el intervalo de tiempo durante el cual los datos generados suponemos que a ritmo constante son almacenados en el primer medio, antes de ser traspasados al segundo. T = Z z p(x)dx + t 0 Z 1 p(x)dx (35) z Se ve enseguida que, salvo términos constantes: " n+1 z n+1 T = ) (1 − t)(z − n n+1 # (36) Y de la misma forma: C = z + c(1 − z) (37) Ahora, queremos minimizar la cantidad: J = T + αC (38) donde α es un factor de peso. Siguiendo el procedimiento habitual, de: ∂J =0 ∂z (39) encontramos: n α(c − 1) z = 1− n + 1 (1 − t) 1 n (40) que conduce a la condición adicional para α: 0≤α≤ 8.2. n+11−t n c−1 (41) Múltiples niveles Supongamos la partición del intervalo (0, 1) mediante un conjunto de valores intermedios τi , supuesto que τi > τi−1 . Mantenemos las suposiciones previas respecto a la probabilidad de acceso a datos de antigüedad x. Cada uno de los intervalos de tiempo puede almacenar una cierta cantidad de información, que es proporcional al tamaño del intervalo. Sean ti y ci los tiempos de acceso y coste por megaocteto 10 en el intervalo (τi−1 , τi ) 4 . La probabilidad total de acceso en este intervalo viene dada por: pi = Z τi p(0) (1 − xn ) dx (42) τi−1 El tiempo medio de acceso viene dado por: X pi ti (43) γci (τi − τi−1 ) (44) T = i y el coste total del sistema por: C= X i Donde γ es una constante de proporcionalidad que convierte de unidades de tiempo a megaoctetos, suponiendo un ritmo constante en la producción de datos. Queremos minimizar J = T + βC, y esto se consigue eligiendo un conjunto de τj para el cual: ∂J =0 ∂τj (45) β es una constante que abarca tanto γ como el factor de peso deseado para C frente de T . Operando: n+1 (tj − tj+1 )(1 − τjn ) + β(cj − cj+1 ) = 0 n Definiendo: (46) ∆tj = tj+1 − tj (47) ∆cj = cj+1 − cj (48) obtenemos finalmente: τj = n ∆cj 1+β n + 1 ∆tj !1 n (49) Por supuesto, para cada j debe haber un τj > τj−1 que conduzca a: ∆cj−1 ∆cj > ∆tj ∆tj−1 4 (50) Se sobreentiende: en el medio de almacenamiento en que se almacenan los datos con antigüedad entre τi−1 y τi 11 8.3. Dos ejemplos Considérese un disco Ultra Wide SCSI con interfaz de fibra óptica como un primer medio, y un disco ATA como el segundo medio. n se obtiene de forma experimental, y suponemos que vale n = 2. Aproximadamente, t = 2 y c = 0,5, queqconduce al máximo permisible para α de 3. Para estos valores, τ1 = 23 . Como un segundo ejemplo, considérese un disco ATA como el primer medio y una cinta DAT como el segundo. Para la cinta, aproximadamente, c = 0,6 y t = 10, con un valor máximo de α = 33. Manteniendo el valor n = 2 se obtiene τ1 ≃ 0,15 La discusión anterior, si bien retiene su interés teórico, es preciso reconocer que en la práctica queda obsoleta, debido al constante incremento de velocidad en las unidades de disco, al tiempo que aumenta su capacidad y disminuye el precio por MB. 9. Tamaño óptimo del bloque Hemos dicho que la superficie de los discos se divide en pistas, y que cada pista se divide en un número de partes iguales llamadas ((sectores)). Nuestros cálculos han supuesto que las operaciones de lectura/escritura no están correlacionadas, de forma que la probabilidad que tiene el cabezal de ir a una pista j es independiente de la pista actual i. Esto puede ser una buena aproximación cuando se efectúan muchas lecturas independientes de archivos pequeños. En otros casos, por ejemplo cuando se efectúan copias de seguridad, se accede a datos bien localizados en una zona del disco, ya que el propio sistema de archivos se ocupa de mantener baja la fragmentación. En ese caso, las lecturas/escrituras son esencialmente secuenciales. Además, los sectores tienen un tamaño pequeño (durante décadas 512 bytes), por lo que se agrupan en unidades de mayor tamaño llamadas ((bloques)), con tamaños tı́picos que varı́an entre los 4k y los 64k. Comparemos los dos tipos de operaciones: aleatoria y secuencial, en relación con el tamaño del bloque. Si el bloque es muy pequeño y las lecturas son secuenciales, este pequeño tamaño no tiene impacto en la velocidad de acceso a los datos: una vez desplazado el cabezal, encontrará los datos de forma contigüa, si bien repartidos en un número grande de bloques. Por contra, si el tamaño del bloque es grande (imaginémoslo muy grande), esto tiene un impacto negativo sobre el rendimiento en lecturas aleatorias, pues cada bloque contendrá muchos sectores, pero será preciso leer cada bloque completo para extraer una pequeña parte de los datos que contiene, y en una secuencia de lecturas aleatorias será preciso volver varias veces, con el 12 consiguiente desplazamiento del cabezal, a bloques que ya se leyeron antes, pero buscando ahora porciones de datos diferentes. Puesto que en los sistemas reales se usan tanto accesos aleatorios como secuenciales, demostraremos que existe un tamaño óptimo para el bloque que depende de la fracción de accesos aleatorios al sistema en relación al número total de accesos. Consideremos la lectura de n bloques secuenciales sobre una unidad de disco. El tiempo invertido es: τs = τb + τl + nτt (51) Sin embargo, si los bloques se encuentran distribuidos aleatoriamente sobre el disco, el tiempo invertido en su lectura será: τa = n(τb + τl + τt ) (52) y vemos que, cuando n se hace muy grande, la relación entre ambos tiempos tiende a: τs τt = τa τb + τl + τt (53) Imaginemos una base de datos compuesta de P registros, de los cuales una fracción de ellos es actualizada cada dı́a. Supongamos que, al final del dı́a, se hace una copia de seguridad, que supone una lectura secuencial de todos los registros. Si α es la fracción de registros modificados, suponiendo que esos registros están distribuidos aleatoriamente, el tiempo que se invierte en modificarlos es αP (τb + τl + τt ) (54) Cuando se quiere hacer la lectura secuencial para la copia de seguridad, el tiempo invertido es PS τb Q (55) donde S es el número de bytes por cada registro y Q es el tamaño de cada bloque, de forma que P S/Q es el número de bloques. Justifiquemos la ecuación anterior. Cuando el tamaño del registro es muy pequeño en comparación con el tamaño del bloque, basta mover el cabezal al inicio del bloque para leer todos los registros contenidos en él. Ası́, el cabezal deberá invertir τb tantas veces como bloques ocupen los datos. Aquı́ no presuponemos que todos los bloque son contiguos, sino que queremos leerlos secuencialmente, lo que es una cosa distinta. Si el tamaño del registro es superior al tamaño del bloque y los bloques no son contiguos, la fórmula anterior sigue siendo correcta. 13 Finalmente, si el tamaño del registro es superior al del bloque y los bloques ocupados por un registro son contiguos, la expresión anterior sobre-estima el tiempo. En cualquier caso, esto no es más que un modelo, y como tal discutible. El tiempo total invertido entre las actualizaciones aleatorias y la copia de seguridad es la suma de ambas. Ahora bien, el tiempo de transferencia es proporcional al tamaño del bloque, de forma que τt = βQ, ası́ que el tiempo total invertido es una función de Q: T (Q) = PS τb + αP (τb + τl + τt ) Q (56) Esta función tiene un mı́nimo que se alcanza cuando PS dT = αβP − 2 τb = 0 dQ Q (57) de donde se sigue que el tamaño óptimo para el bloque es Q= 10. s Sτb αβ (58) Efecto de la localidad de los datos El efecto de ((localidad)) consiste en que, desde la posición actual del cabezal, la probabilidad de acceder a los datos que se encuentran más cerca es mayor. Es la forma común en que operan las unidades de disco. Un sistema de archivos puede contener decenas de miles de ellos, de los cuales en una sesión son usados una fracción muy pequeña, tı́picamente inferior al 1 %. En estas condiciones, el cabezal trabaja sobre zonas definidas del disco, y es de esperar que el tiempo medio de búsqueda se reduzca. Para modelar este comportamiento buscamos una función densidad de probabilidad p(z). Normalizando a 1 el tamaño del disco, esta densidad ha de cumplir dos condiciones: a) que sea máxima cuando z = 0 y la condición de normalización Z 1 p(z)dz = 1 (59) 0 Una función que cumple estas caracterı́sticas es una del tipo p(z) = (n + 1)(1 − z)n (60) con n >= 1. En estas condiciones, la distancia media que recorre el cabezal se expresa como: 14 η̃ = Z 0 1 Z x p(x − y)(x − y)dy + 0 Z 1 p(y − x)(y − x)dy dx x (61) En nuestro modelo, ésta es una función de n. El cálculo es directo, y proporciona: η̃(n = 4) = 0,238, η̃(n = 6) = 0,194, η̃(n = 8) = 0,164. A medida que aumenta n, se incrementa la pendiente de p(z) en z = 0, es decir, disminuye más rápidamente la probabilidad de acceder a los datos colindantes a la posición actual del cabezal. Por consiguiente, se reduce el desplazamiento medio del cabezal. Ası́, para el caso n = 6 el tiempo medio de búsqueda es 0,194N τpp , un 58 % inferior al valor que obtuvimos sin tener en cuenta la localidad. 11. NOS y tiempo medio de espera Imaginemos una situación en que un disco recibe una gran cantidad de peticiones de lectura/escritura por unidad de tiempo. Si el ritmo media de llegada de peticiones supera al ritmo medio al que el disco puede atenderlas, la teorı́a elemental de colas prevé que el buffer donde se almacenen las peticiones pendientes quedará rápidamente saturado. A partir de ese momento, las peticiones serán rechazadas. Para ver que esto es ası́, consideremos un disco sometido a una carga moderada y continua de trabajo, de tal forma que la cola de peticiones pendientes alternativamente aumentará y disminuirá. A lo largo de un periodo de tiempo significativamente largo (en relación con el tiempo medio entre peticiones), es obvio que se producirán, por término medio, tantos incrementos como disminuciones en el número de peticiones en cola. Si no fuese ası́, la cola tenderı́a a crecer sin lı́mite, o tenderı́a a estar vacı́a. Podemos identificar el estado de la cola simplemente con el número de peticiones pendientes que contiene. Llamemos λ al número medio de peticiones por unidad de tiempo que llegan a la cola, y µ al número medio de peticiones por unidad de tiempo servidas por el disco. Puesto que la cola, a largo plazo, se encuentra en equilibrio (es decir, no tiende ni a quedar vacı́a ni a crecer sin lı́mite) por término medio el número de transiciones desde el estado n al n + 1 (habı́a n elementos en la cola y llega una nueva petición) será igual al número de transiciones entre el estado n + 1 y el estado n (habı́a n + 1 peticiones pendientes y el disco ha atendido a una de ellas). Llamemos pj a la probabilidad de que la cola se encuentre en el estado j. Razonando sobre el número de transiciones 0 → 1 y 1 → 0 podemos escribir que λp(0) = µp(1) 15 (62) y sucesivamente para los estados (1, 2), (2, 3), etc. lo que conduce al sistema de ecuaciones λp(0) = µp(1) λp(1) = µp(2) λp(2) = µp(3) ... = ... λp(j) = µp(j + 1) ... = ... (63) De la primera: p(1) = λ p(0) µ (64) de la segunda: p(2) = 2 λ µ p(0) (65) p(j) = j p(0) (66) y en general λ µ La probabilidad p(0) se obtiene de la condición de normalización X p(j) = 1 (67) j Si consideramos por simplicidad que la cola puede tener longitud infinita, y llamando r = λ/µ: p(0) ∞ X rj = p(0) j=0 1 =1 1−r (68) de donde p(0) = (1 − r) (69) p(j) = (1 − r)rj (70) y finalmente Esto permite calcular el tamaño medio de la cola: 16 Ñ = ∞ X jp(j) = (1 − r) ∞ X jrj = j=0 j=0 r 1−r (71) Contra lo que pudiese parecer, cuando los ritmos medios de llegada y salida son iguales, r = 1, la longitud media de la cola tiende a ∞. Pero precisamente cuando hay un gran número de peticiones en cola es cuando el disco está sirviendolas a su velocidad máxima, pues no tiene intervalos de inactividad. Es por eso que distinguimos entre el ((número de operaciones por segundo)) y el tiempo medio de espera. Pudiera parecer que si el número medio de operaciones por segundo, NOS, es muy alto, será muy bajo el tiempo de espera, y viceversa. La relación es justamente la contraria, como hemos demostrado. Otra forma de ver el problema es centrándonos en uno de los algoritmos de movimiento del cabezal cuando el disco se encuentra cargado de trabajo. Si hay muchas peticiones, siempre habrá alguna cercana a la posición actual del cabezal. Si esto es ası́, lo más rápido será atender a la petición más cercana. Entonces, el disco sirve peticiones a su mayor velocidad. Pero como el cabezal tiende a quedarse siempre cerca de su posición inicial, las peticiones para las pistas alejadas tendrán que esperar mucho, y ası́ se hará inaceptablemente grande el tiempo medio de espera. Trataremos este problema en la sección siguiente, pero antes ilustraremos los conceptos introducidos sobre colas en equilibrio con un par de casos particulares. Sea el caso en que el ritmo de servicio crece con el número de clientes. Por ejemplo, esto puede modelar un sistema de discos que sirven peticiones en paralelo. Supongamos que el ritmo de servicio es (1 + k)µ0 . Llamando r = λ/µ0 y planteando las ecuaciones del equilibrio de la cola, se encuentra enseguida que rk p(0) (k + 1)! (72) p(k) = 1 (73) ∞ rk rk+1 p(0) X =1= (k + 1)! r k=0 (k + 1)! k=0 (74) p(k) = De ∞ X k=0 se sigue que p(0) ∞ X Pero la última sumatoria es er − 1, de donde p(0) = r er − 1 17 (75) A partir de aquı́ podemos calcular el número medio de clientes en cola: N= ∞ X kp(k) = p(0) k=0 Sabiendo que krk (k + 1)! k=0 ∞ X rk er − 1 = (k + 1)! r k=0 ∞ X (76) (77) derivando respecto a r ambos miembros de la ecuación anterior y multiplicando y dividiendo por r2 se encuentra la sumatoria buscada sin dificultad, y finalmente rer −1 (78) er − 1 Tomemos un ejemplo adicional. Lo llamaremos ”cola con botón de pánico”. Es una cola normal, con ritmo medio de llegada λ y ritmo medio de servicio µ, pero con una particularidad: cuando la cola está llena, y eso sucede cuando hay exactamente X clientes, la llegada de un nuevo cliente provoca el descarte de ese nuevo cliente y de todos los demás, con lo que la cola queda vacı́a. Las ecuaciones de equilibrio para una cola ası́ son N= λp(0) = µp(1) + λp(X) λp(1) = µp(2) λp(2) = µp(3) ... = ... λp(X − 1) = µp(X) (79) Tomando desde la segunda en adelante, escribiendo las probabilidades sucesivas en función de p(1) tenemos que, en particular, p(X) = rX−1 p(1), donde r = λ/µ. Sustituyendo esta expresión para p(X) en la primera, despejamos p(1) en función de p(0), e igualmente para las siguientes, teniendo que, en general: rk p(0) (80) 1 + rX que es válida para k > 0. Del hecho de que la suma de todas las probabilidades es la unidad: p(k) = " X X rk p(0) 1 + 1 + rX k=1 18 # =1 (81) De aquı́ se sigue " r 1 − rX p(0) = 1 + 1 − r 1 + rX #−1 (82) y de aquı́, simplificando: p(k) = (1 − r)rk 1 + rX − 2rX+1 (83) Véase que cuando X → ∞, p(k) → (1 − r)rk , de acuerdo con el resultado anterior para colas ilimitadas. Por otro lado, el denominador es una constante que depende sólo del tamaño de la cola, para r dado, ası́ que el número medio de elementos en la cola coincide con el obtenido anteriormente, dividido por 1 + rX − 2rX+1 : N= r (1 − r)(1 + rX − 2rX+1 ) (84) Esta expresión no es válida para cualquier r, sino que lo es sólo en el intervalo en que N < X. 12. Nueva visita a SCAN En la búsqueda de un equilibrio entre el NOS y el tiempo medio de espera, uno de los primeros algoritmos propuestos es SCAN. Consiste simplemente en recorrer el disco desde un extremo al otro, atendiendo todas las peticiones que se encuentren en el camino. Esto presupone que después de cada petición atendida la cola es ordenada, de manera que se atienda a la petición dirigida a la posición más cercana a la actual del cabezal, en la dirección de su movimiento. Una variante de este algoritmo tiene en cuenta que, una vez que el cabezal ha llegado a un extremo del disco, no tiene sentido volver inmediatamente sobre sus pasos, pues lo hará sobre una porción de disco que acaba de ser ((barrida)) y donde es poco probable que haya nuevas peticiones que atender. Entonces, esta variante, llamada C-SCAN, propone saltar de nuevo al principio del disco, que fue la zona visitada hace más tiempo y donde por tanto es más probable que haya peticiones esperando. Otro refinamiento consiste en no mover el cabezal entre los bordes fı́sicos (interior y exterior) del disco, sino entre la petición más interna y la más externa. Calcularemos del NOS y el tiempo medio de espera cuando un disco cargado aplica SCAN. Conceptualmente, el problema es similar al de una máquina quitanieves. La máquina se coloca en el km. 0 mientras nieva uniformemente en todo el recorrido. La máquina comienza a 19 moverse. Mientras llega al km. 1 se ha acumulado una cierta cantidad de nieve. Este extra de nieve ralentiza en cierta medida a la máquina, que de esta forma tarda un poco más de tiempo en recorrer el segundo km. El tercer km. lo recorrerá entonces a ritmo ligeramente más lento, y ası́ sucesivamente. De la misma forma el cabezal, cuando encuentra una petición en su recorrido ha de esperar τl para servirla. En ese intervalo se ha incrementado la cantidad de peticiones sobre la fracción de disco restante, lo que le obligará a gastar más tiempo en servirlas, durante el cual se acumularán más peticiones en el tramo restante, y ası́ sucesivamente. Haremos un razonamiento discreto que después llevaremos al lı́mite. Dividimos el segmento de recta de longitud 1 en N intervalos de longitud x = 1/N . Suponemos un ritmo constante de llegada de peticiones, de tal forma que la densidad de peticiones crece linealmente con el tiempo: ρ = ρ0 +λt. En el primer intervalo, el cabezal encuentra por término medio n1 = xρ0 peticiones, luego invierte en atenderlas t1 = τl n1 . Al inicio del segundo intervalo, la densidad se ha incrementado a ρ2 = ρ0 + λt1 , y en ese intervalo el cabezal encuentra n1 = xρ1 peticiones que le llevan un tiempo t2 = τl n2 . Al inicio del tercer intervalo, la densidad es ρ3 = ρ0 + λ(t1 + t2 ), el número de peticiones promedio en él es de n3 = xρ3 y el tiempo invertido en leerlas es t3 = τl n3 . Si se desarrolla analı́ticamente el razonamiento, pronto se hace evidente que k X λτl λτl nk = ρ0 k j=1 j k! j!(k − j)! (85) k (86) La suma de esta serie es λτl λτl nk = 1 + ρ0 k −1 Haciendo k → ∞ la suma tiende a n= ρ0 λτl e −1 λτl (87) siempre que sea ρ0 6= 0. En caso contrario, nuestro modelo no tiene sentido, o tendrı́amos que corregirlo admitiendo que aún cuando no se produzca ninguna lectura en un intervalo, éste se recorre en un tiempo finito. Podemos razonar de la misma forma con el tiempo transcurrido, y comprobar cómo, tras k intervalos, se ha consumido un tiempo que viene dado por λ λτl tk = 1 + ρ0 k 20 k −1 (88) Si tomamos el lı́mite aquı́ también vemos que el tiempo medio de lectura es t = τl (89) n lo cual es lógico: el cabezal no puede leer más rápido de lo que gira el disco. El número medio de operaciones por unidad de tiempo es 1/τl . Sin embargo, una petición que se encuentre al extremo del disco ha de esperar un tiempo n X ti (90) i Cuando n se hace muy grande, se pueden despreciar los primeros términos de la sumatoria y empezar a contar a partir de uno tal que él y términos sucesivos sean aproximadamente iguales a ρ0 λτl e −1 (91) λ El tiempo de espera es entonces aproximadamente nt, que crece sin lı́mite cuando lo hace n. Esto ilustra analı́ticamente la diferencia entre el NOS y el tiempo medio de espera. t= 13. Distribuciones binomial y de Poisson Desde el punto de vista del procesador, cuyo ciclo es del orden de un nanosegundo, los eventos hardware son muy raros. El estudio probabilı́stico de sucesos raros de los cuales sin embargo se conoce su ocurrencia media (es el caso del estudio de las colas hecho antes) nos lleva a la distribución de Poisson, que nos dice la probabilidad de que, en un intervalo dado, se produzca un número de sucesos (p. ej. llegada en un segundo de un número de paquetes por la interfaz de red, siendo conocido el ritmo medio de llegada). A su vez, la distribución de Poisson se obtiene como lı́mite de la distribución binomial. Ası́ que expondremos ésta en primer lugar y después haremos el paso al lı́mite. La distribución binomial da la probabilidad de que en una serie de experimentos binarios (cuyo resultado sólo ser uno entre dos posibilidades) se produzca un número determinado de éxitos (entendiendo por éxito que se produzca uno de los resultados, y no el otro). Supongamos entonces una secuencia de 3 lanzamiento de moneda al aire. p es la probabilidad de que salga cruz, y lo consideramos ”éxito” y q es la probabilidad de que salga cara. Representaremos por un 1 un 21 éxito (cruz) y por un 0 un fracaso (cara). En una secuencia El éxito puede alcanzar en las tres secuencias 100, 010 y 001. La probabilidad de la primera secuencia es pqq = pq 2 ; la probabilidad de la segunda secuencia es qpq = pq 2 y la probabilidad de la tercera es qqp = pq 2 . Por tanto, la probabilidad de tener un éxito es 3pq 2 . En general, si tenemos una serie de n experimentos, el número de formas en que pueden obtener r éxitos es n! (n − r)!r! (92) y la probabilidad de obtenerlos es entonces P (r|n) = n! pr (1 − p)n−r (n − r)!r! (93) ya que si el experimento sólo admite dos resultados, entonces q = 1 − p. Pasemos ahora a describir la distribución de Poisson. Citando la bibliografı́a: La distribución de Poisson a menudo servirá como una distribución de probabilidad apropiada para variables aleatorias tales como el número de llamadas telefónicas recibidas por una central telefónica durante un periodo de tiempo fijo, el número de partı́culas atómicas emitidas por una fuente radiactiva que golpean un cierto blanco durante un periodo de tiempo fijo o el número de defectos en una longitud especı́fica de una cinta magnética de grabación. 5 Y también, añadimos nosotros, la probabilidad de que un número determinado de clientes ingresen en una cola en un intervalo de tiempo especificado, conocido el número medio de clientes que ingresan por unidad de tiempo. Veamos cómo la distribución de Poisson se obtiene como un caso lı́mite de la distribución binomial. Si llamamos λ al número medio de éxitos en la secuencia de n experimentos, entonces p = λ/n (94) λ = np (95) o lo que es igual de donde podemos poner 5 morris de groot, Probabilidad y Estadı́stica, p. 241; Addison-Wesley Iberoamericana, segunda edición, 1988 22 λr n(n − 1)(n − 2)...(n − r + 1) λ P (r|n) = r 1− n r! n n λ 1− n −r (96) Ahora, hagamos el lı́mite cuando n → ∞, de tal forma que se mantenga λ = np. Vemos que lı́m n→∞ n(n − 1)(n − 2)...(n − r + 1) =1 nr (97) y que lı́m n→∞ λ 1− n −r =1 (98) = e−λ (99) mientras que lı́m n→∞ λ 1− n n y queda entonces que λr −λ e (100) n→∞ r! Como aplicación, consideremos el siguiente problema: una determinada clase de cinta magnética contiene de media tres errores por cada 1000 metros. ¿Cual es la probabilidad de que una unidad de 1200 metros esté libre de errores? El número medio de errores por cada 1200 metros es 3∗1200/1000 = 3,6, por tanto la probabilidad buscada es lı́m P (r|n) = 3,60 −3,6 e = 0,027 (101) 0! Como segundo ejemplo, consideremos una cola con ritmo medio de llegada λ y ritmo medio de servicio µ. ¿Cual es la probabilidad de que en el intervalo 1/µ (que es el intervalo medio que emplea el servidor en atender a un cliente) se presenten dos clientes en la cola? En el intervalo 1/µ llegan de media σ = λ/µ clientes. La probabilidad de que lleguen dos clientes es entonces σ 2 −σ e 2! 23 (102)