Ci sono già risposte per il caso di 2 macchine.
Suppongo che il 128 GB di dati da ordinare sia archiviato come singolo file su un singolo disco rigido (o qualsiasi dispositivo esterno). Indipendentemente dal numero di macchine o dischi rigidi utilizzati, il tempo necessario per leggere il file 128 GB originale e scrivere il file 128 GB ordinato rimane lo stesso. L'unico risparmio si verifica durante gli ordinamenti interni basati su ram per creare blocchi di dati ordinati. Il tempo necessario per unire con n + 1 dischi rigidi per unire n-way in un unico file ordinato da 128 GB sul disco rigido rimanente rimane lo stesso, limitato dal tempo necessario per scrivere il file ordinato da 128 GB su quello rimanente disco rigido.
Per n macchine, i dati verrebbero suddivisi in blocchi da 128 GB/n. Ciascuna delle macchine potrebbe alternare la lettura di sotto-blocchi, forse 64 MB alla volta, per ridurre l'overhead di accesso casuale, in modo che la macchina "last" non sia in attesa di tutte le macchine precedenti per leggere tutti i loro blocchi prima ancora che inizi .
Per n macchine (64 GB ciascuna) e n + 1 dischi fissi con n> = 4, un ordinamento digitale con O (n) complessità temporale può essere utilizzato da ciascuna macchina per creare 32 GB o più blocchi sul lavoro n dischi rigidi allo stesso tempo, seguiti da un'unione n-way sul disco fisso di destinazione.
C'è un punto di rendimenti decrescenti che limita il beneficio di più grande n. Da qualche parte oltre n> 16, il throughput di fusione interno potrebbe diventare maggiore della larghezza di banda I/O del disco.Se il processo di unione è legato alla cpu piuttosto che al limite I/O, c'è un compromesso nel sovraccarico della CPU per il tempo necessario a creare blocchi in parallelo rispetto al sovraccarico di unione maggiore del tempo di I/O.
Divide, rimuovi. È possibile evitare una singola macchina per l'unione finale? Sì: radix sort. – wildplasser
@wildplasser: non importa. L'unione è più veloce di I/O esterno, quindi il processo di unione è limitato al tempo necessario per scrivere 128 GB di dati sul disco di destinazione. Con i dispositivi n + 1, è possibile utilizzare un'unione n-way per scrivere sull'unità rimanente. Ciò consentirebbe a n macchine di creare in blocco pezzi di dati sulle n unità di lavoro in parallelo, ma l'unione finale è limitata dalla velocità di I/O dell'unità di destinazione. – rcgldr
Si * potrebbe * considerare il filesystem condiviso come una macchina (singola). Quale sarebbe ancora una serratura a incavo. – wildplasser