È sempre noto che le operazioni su disco sono lente e conosciamo i motivi per cui sono lente. Quindi la domanda qui è perché dobbiamo aspettare l'I / O o perché esiste qualcosa come IOWait, ecc.?
Voglio dire, ho notato che quando si eseguono alcune attività di I / O in background, il computer in pratica diventa molto più lento, in particolare ho notato che quando si utilizza Linux, se si eseguono attività di I / O più lunghe , il sistema operativo diventa quasi inutilizzabile fino al completamento.
In effetti, ho anche trovato questo argomento in un articolo, c'è uno snippet:
L'attesa I / O è del 12,1%. Questo server ha 8 core (via cat / proc / cpuinfo). Questo è molto vicino a (1/8 core = 0.125)
Quindi in pratica significa che sta rallentando MOLTO il computer, perché? Voglio dire OK, ora i normali computer sono almeno 2 core, a volte 4 o a volte ne hanno di più a causa dell'hyperthreading o qualcosa del genere. Ma ora la domanda è: perché la CPU deve effettivamente rimanere lì, praticamente non facendo altro che aspettare semplicemente IO? Intendo l'idea o l'architettura di base della gestione del processo, ora non so se è il sistema operativo a essere responsabile di ciò, o dipende dalla parte hardware, ma dovrebbe essere possibile che la CPU aspetti o controllare regolarmente, mentre in realtà esegue molte altre attività e torna al processo di I / O solo quando è pronto. In effetti, se è un compito così difficile e la CPU dovrebbe aspettare, perché non lo è quello gestito dall'hardware in modo più efficiente allora? Ad esempio, potrebbe esserci una sorta di mini cpu che aspetterebbe e consegnerebbe la piccola parte di dati alla cpu reale non appena tornerà al processo e quindi il processo si ripeterebbe e non avremmo di dedicare praticamente un intero nucleo della CPU per il processo di copia dei dati ... O sarei io quello che dovrebbe inventare questo tipo di cose e ottenere un premio nobel per quello? :S
Ora va bene, lo sto davvero mettendo ora dal punto di vista degli osservatori e non ho davvero approfondito l'argomento, ma non capisco davvero perché la cpu debba lavorare con la velocità dell'HDD, mentre potrebbe semplicemente fai qualcos'altro e torna all'HDD una volta che è pronto. L'idea non è quella di accelerare l'applicazione che ha bisogno di quell'operazione di I / O o del processo di copia o altro, ma l'idea è di influenzare solo minimamente il consumo di CPU durante l'esecuzione di tale operazione, in modo che il sistema operativo possa utilizzarlo per altri processi e l'utente non dovrei avvertire un ritardo generale del computer quando si eseguono alcune operazioni di copia ...