Come limitare la velocità di scrittura dell'HDD per i programmi scelti


23

Il mio HDD è lento a 5400 giri / min e quando si lavora con file di dimensioni di 10 GB è impossibile utilizzare il computer fino a quando quel file di grandi dimensioni non ha finito di ricreare una nuova copia / muxing / scrittura / ecc. dipende dal processo, il fatto è che consuma tutta la velocità dell'HDD e nessun altro programma può essere utilizzato mentre questo processo è in esecuzione.

Quindi stavo pensando che potrei limitare la velocità di scrittura dell'HDD per i programmi con cui lavoro, quindi mi riserverei la velocità rimanente dell'HDD da usare per navigare in Internet o riprodurre mp3 mentre i file di grandi dimensioni vengono elaborati.


2
Non ho mai sentito parlare di un IO dell'HDD strozzato in Windows, almeno in modo nativo. Hai provato a impostare la priorità del processo ?:wmic process where name="calc.exe" CALL setpriority "idle"
Marcelo,

@Marcelo Priority determina il tempo della CPU, non il disco. Quando si elabora un file di grandi dimensioni, il disco rallenta il computer, non la CPU.
Keltari,


@Keltari Sì, lo so. Ho solo pensato che forse la modifica della priorità per la CPU avrebbe potuto avere un impatto sull'obiettivo finale della domanda.
Marcelo,

2
Se il computer è "inutilizzabile" durante la copia di file di grandi dimensioni, è possibile che hai dimenticato di abilitare DMA? Normalmente, il fatto che il disco sia occupato o meno fa poca o nessuna differenza poiché ciò accade senza molto (o alcuno) intervento della CPU.
Damon,

Risposte:


13

Sfortunatamente, non puoi farlo. L'hardware viene estratto dalle applicazioni e persino da parti del sistema operativo. In sostanza, l'applicazione dice "scrivi questo su disco" e il sistema operativo lo gestisce. L'applicazione non gestisce come o anche quando viene scritta. Tutto questo è gestito a livello di driver e kernel e non esiste un modo reale per cambiarlo.

Anche se tu potessi farlo, il fatto è che stai usando un disco magnetico rotante - e molto lento - non vedresti molto guadagno. L'unità gira costantemente e le testine si muovono lungo il disco. Anche se hai scritto meno sul tuo file, il disco cercherà costantemente le aree giuste sul disco su cui leggere / scrivere.

La tua migliore opzione sarebbe quella di ottenere un'altra unità e fare il tuo lavoro su quell'unità, lasciando la tua prima unità per Internet, MP3, ecc.

PS Non hai menzionato quanta RAM hai. Lo scambio potrebbe essere un fattore nella bassa velocità. A seconda della quantità di RAM che hai, l'aggiunta di più aiuterà solo.


2
Una versione di Linux di Windows non ionicesi avvicinerebbe alla risposta?
Daniel Beck

@DanielBeck Potrebbe esserci del software là fuori che potrebbe funzionare. Tuttavia, chi sa quali complicazioni potrebbero derivare dal suo utilizzo? Sarebbe così molto più facile da solo schiaffo in un'altra unità e da fare con la questione.
Keltari,


1
Non vedo alcun argomento di principio sul perché un'applicazione non possa essere limitata. Ecco un comando molto semplice: sospendi il processo per 1 secondo al secondo. Ciò limita l'IO di circa il 50% e consente ad altri processi di utilizzare il disco. I tempi di ricerca sono dell'ordine di 10 ms.
usr

@usr: dipende dal tipo e dalla frequenza di I / O. Il tuo approccio funziona in alcuni casi, ma non in altri, ad esempio se l'I / O avviene interamente in modalità kernel, non penso che puoi sempre metterlo in pausa mettendo in pausa il processo in modalità utente.
Mehrdad,

9

Process Lasso consente di stabilire la priorità degli I / O. Dalle loro FAQ:

Novità in v4.1 (v4.09 beta), Process Lasso ha esplicite impostazioni di priorità I / O correnti e predefinite disponibili per coloro che le richiedono. Questo vale solo per NT6 + (Vista, Win7, ...).

TUTTAVIA, la definizione delle priorità di I / O di Vista si basa sulla priorità del thread che esegue l'I / O, che dipende dalla classe di priorità del processo che esegue l'I / O. Esistono in realtà solo due livelli di priorità utilizzabili dalle applicazioni, Normale e Molto bassa. Sebbene ci siano tecnicamente 5, solo questi due sono implementati o utilizzabili dai processi.

Pertanto, l'adeguamento delle priorità del thread si propagherà all'I / O di quel thread. In questo modo, Process Lasso ha già la priorità di I / O. Microsoft consiglia alle applicazioni di adattare la loro priorità di I / O in base all'impostazione della priorità del thread di chiamata (direttamente o mediante l'adattamento della classe base di priorità del processo).

Vedi anche l'articolo sulla prioritizzazione I / O di Microsoft .


1

Quello che faccio quando ho un processo che continua a consumare tutto il mio I / O su disco su Windows è aprire Process Explorer e mettere in pausa il processo offensivo. Dopo aver finito i miei affari e sono pronto ad aspettare un po ', lo riprendo. Non è sicuramente il modo più produttivo di farlo poiché è un modo tutto o niente di controllare l'I / O del disco e il tuo processo dovrà aspettare mentre usi il tuo computer, ma finora non ho visto alternative migliori.

D'altra parte, se riesci a eseguire il tuo processo su Cygwin, puoi installarlo pvsul tuo computer e usarlo come primo o ultimo passaggio con un'opzione (penso che sia -r) per limitare la velocità di output del pv.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.