Ya hay respuestas para la carcasa de la máquina 2.
Supongo que los 128 GB de datos que se ordenarán se almacenan como un único archivo en un único disco duro (o cualquier dispositivo externo). No importa cuántas máquinas o discos duros se utilicen, el tiempo que lleva leer el archivo original de 128GB y escribir el archivo ordenado de 128GB sigue siendo el mismo. El único ahorro se produce durante los géneros basados en RAM internas para crear fragmentos de datos ordenados. El tiempo que lleva fusionarse con n + 1 discos duros para hacer una fusión de n vías en un único archivo ordenado de 128 GB en el disco duro restante sigue siendo el mismo, limitado por el tiempo que lleva escribir el archivo ordenado de 128 GB en el restante disco duro.
Para n máquinas, los datos se dividirían en trozos de 128 GB/n. Cada una de las máquinas podría alternar la lectura de subunidades, tal vez 64 MB a la vez, para reducir la sobrecarga de acceso aleatorio, de modo que la "última" máquina no esté esperando que todas las máquinas anteriores lean todos sus fragmentos antes incluso de que comience .
Para n máquinas (64GB ram cada una) y n + 1 discos duros con n> = 4, cada máquina puede usar una ordenación de radix con O (n) complejidad de tiempo para crear fragmentos de 32 GB o menores en n discos duros al mismo tiempo, seguidos de una combinación de n vías en el disco duro de destino.
Hay un punto de rendimientos decrecientes que limita el beneficio de n mayor. En algún lugar más allá de n> 16, el rendimiento de fusión interna podría ser mayor que el ancho de banda de E/S del disco.Si el proceso de fusión está vinculado a la CPU en lugar de a la E/S, existe una compensación en la sobrecarga de la CPU durante el tiempo que lleva crear fragmentos en paralelo frente a la sobrecarga de fusión mayor que el tiempo de E/S.
Dividir, volver a abrir. ¿Es posible evitar una sola máquina para la fusión final? Sí: tipo de raíz. – wildplasser
@wildplasser - no importa. La fusión es más rápida que la E/S externa, por lo que el proceso de fusión se limita al tiempo que lleva escribir 128 GB de datos en la unidad de destino. Con n + 1 dispositivos, se podría usar una combinación de n vías para escribir en la unidad restante. Esto permitiría que n máquinas creen n pedazos de datos en las n unidades en funcionamiento en paralelo, pero la fusión final está limitada por la velocidad de E/S de la unidad de destino. – rcgldr
Usted * podría * considerar que el sistema de archivos compartido es una máquina (única). Que aún sería un bloqueo de canalización. – wildplasser