Comment limiter la vitesse d'écriture du disque dur pour les programmes choisis

23

Mon disque dur est à 5400 tr / min et lorsque vous travaillez avec des fichiers de 10 Go, il est impossible d'utiliser l'ordinateur jusqu'à ce que ce gros fichier ait fini de recréer une nouvelle copie / multiplexage / écriture / etc. dépend du processus, le fait est qu'il consomme toute la vitesse du disque dur et aucun autre programme ne peut être utilisé pendant que ce processus s'exécute.

Je pensais donc que je pourrais peut-être limiter la vitesse d'écriture du disque dur pour les programmes avec lesquels je travaille, alors il réserverait la vitesse restante du disque dur gratuite à utiliser pour naviguer sur Internet ou lire des mp3 pendant le traitement des gros fichiers.

user3108268
la source
2
Je n'ai jamais entendu parler d'E / S HDD étranglé dans Windows, du moins nativement. Avez-vous essayé de définir la priorité du processus ?:wmic process where name="calc.exe" CALL setpriority "idle"
Marcelo
@Marcelo Priority dicte le temps CPU, pas le disque. Lors du traitement d'un fichier volumineux, c'est le disque qui ralentit l'ordinateur, pas le CPU.
Keltari
2
Connexe: superuser.com/questions/462541/…
Cees Timmerman
@Keltari Oui, je suis au courant. Je pensais juste que la modification de la priorité du processeur pourrait avoir un impact sur l'objectif final de la question.
Marcelo
2
Si l'ordinateur est "inutilisable" lors de la copie de fichiers volumineux, est-il possible que vous ayez oublié d'activer DMA? Normalement, le fait que le disque soit occupé ou non fait peu ou pas de différence car cela se produit sans intervention du CPU (ou presque).
Damon

Réponses:

13

Malheureusement, vous ne pouvez pas faire ça. Le matériel est abstrait des applications et même des parties du système d'exploitation. En substance, l'application dit "écrire ceci sur le disque" et le système d'exploitation le gère. L'application ne gère pas comment ni même quand elle est écrite. Tout cela est géré au niveau du pilote et du noyau et il n'y a aucun moyen réel de changer cela.

Même si vous pouviez le faire, le fait est que vous utilisez un disque magnétique en rotation - et très lent à cela - vous ne verriez pas beaucoup de gain. Le lecteur tourne constamment et les têtes se déplacent le long du disque. Même si vous avez moins écrit sur votre fichier, le disque cherchera constamment les bonnes zones du disque pour lire / écrire vers / depuis.

Votre meilleure option serait d'obtenir un autre lecteur et de faire votre travail sur ce lecteur, en laissant votre premier lecteur pour votre Internet, vos MP3, etc.

PS Vous n'avez pas mentionné la quantité de RAM dont vous disposez. L'échange pourrait être un facteur de la vitesse lente. Selon la quantité de RAM dont vous disposez, l'ajout de plus n'aidera que.

Keltari
la source
2
Une version Windows de Linux ne serait-elle pas ionicepresque une réponse?
Daniel Beck
@DanielBeck Il existe peut-être des logiciels qui pourraient fonctionner. Cependant, qui sait quelles complications pourraient découler de son utilisation? Il serait tellement plus facile de simplement claquer dans un autre lecteur et d'en finir avec le problème.
Keltari
1
Tu peux le faire. Voir la réponse du dsulimano à une question similaire
niutech
1
Je ne vois aucun argument de principe expliquant pourquoi une application n'a pas pu être limitée. Voici un accélérateur très simple: suspendez le processus pendant 1 seconde par seconde. Cela réduit les E / S d'environ 50% et permet aux autres processus de se glisser pour utiliser le disque. Les temps de recherche sont de l'ordre de 10 ms.
usr
@usr: Cela dépend du type et de la fréquence des E / S. Votre approche fonctionne dans certains cas mais pas dans d'autres - par exemple, si les E / S se produisent entièrement en mode noyau, je ne pense pas que vous puissiez toujours la suspendre en interrompant le processus en mode utilisateur.
Mehrdad
9

Process Lasso vous permet de hiérarchiser les E / S. De leur FAQ:

Nouveau dans la v4.1 (v4.09 beta), Process Lasso dispose de paramètres de priorité d'E / S explicites actuels et par défaut disponibles pour ceux qui en ont besoin. Cela ne s'applique qu'à NT6 + (Vista, Win7, ...).

TOUTEFOIS, la hiérarchisation des E / S de Vista est basée sur la priorité du thread effectuant les E / S, qui dépend de la classe de priorité du processus effectuant les E / S. Il n'y a en fait que deux niveaux de priorité utilisables par les applications, Normal et Très faible. Bien qu'il y en ait techniquement 5, seuls ces deux sont implémentés ou utilisables par les processus.

Par conséquent, l'ajustement des priorités de thread se propage aux E / S de ce thread. De cette façon, Process Lasso effectue déjà la hiérarchisation des E / S. Microsoft recommande aux applications d'ajuster leur priorité d'E / S en définissant la priorité du thread appelant (directement ou en ajustant la classe de base de priorité de processus).

Voir également le document sur la hiérarchisation des E / S de Microsoft .

niutech
la source
1

Ce que je fais lorsque j'ai un processus qui continue de manger toutes mes E / S de disque sous Windows, c'est d'appeler Process Explorer et de suspendre le processus incriminé. Une fois que j'ai terminé mes affaires et que je suis prêt à attendre un peu, je le reprends. Ce n'est certainement pas la façon la plus productive de le faire car c'est une façon tout ou rien de contrôler les E / S du disque et votre processus devra attendre pendant que vous utilisez votre ordinateur, mais jusqu'à présent, je n'ai pas vu de meilleure alternative.

D'un autre côté, si vous pouvez faire votre processus sur Cygwin, vous pouvez l'installer pvsur votre ordinateur et l'utiliser comme première ou dernière étape avec une option (je pense que c'est -r) pour limiter le taux de sortie de pv.

RAKK
la source