438 votes

En CPU et I/O bound?

Que signifient les termes "CPU" et "I/O bound"?

576voto

unwind Points 181987

C'est assez intuitif:

Un programme est en CPU, si ça irait plus vite si le CPU ont été les plus rapides, c'est à dire qu'il passe la majorité de son temps en utilisant simplement le CPU (faire des calculs). Un programme qui calcule les nouveaux chiffres de π sera généralement lié au PROCESSEUR, il est juste à croquer des nombres.

Un programme d'I/O bound si ça irait plus vite si le I/O sous-système a été plus rapide. Qui exactement les e/S du système est destiné peut varier, en général, je l'associe avec le disque. Un programme que l'on regarde à travers un énorme fichier de certaines données seront souvent I/O bound, depuis le goulot d'étranglement est alors la lecture des données à partir du disque.

333voto

Sanjaya R Points 2280

CPU, signifie que le taux de progression du processus est limité par la vitesse de la CPU. Une tâche qui effectue des calculs sur un petit ensemble de nombres, par exemple en multipliant les petites matrices, est susceptible d'être liée à l'UC.

I/O Bound désigne la vitesse à laquelle un processus de progrès est limité par la vitesse de l'I/O sous-système. Une tâche qui traite des données à partir du disque, par exemple, compter le nombre de lignes dans un fichier est susceptible d'être I/O bound.

Lié à la mémoire désigne la vitesse à laquelle un processus de progrès est limité par la quantité de mémoire disponible et la vitesse de l'accès à la mémoire. Une tâche qui traite de grandes quantités de données de la mémoire, par exemple la multiplication de matrices de grande taille, est susceptible d'être Lié à la Mémoire.

Cache lié désigne la vitesse à laquelle un processus de progression est limitée par la quantité et la vitesse de la mémoire cache disponible. Une tâche qui traite simplement plus de données que ce qui s'inscrit dans le cache sera cache lié.

I/O Bound serait plus lente que la Mémoire serait plus lent que Cache Lié serait plus lent qu'en CPU.

La solution d'être dépendant des e/S n'est pas nécessairement à obtenir plus de Mémoire. Dans certaines situations, l'accès de l'algorithme pourrait être conçus autour de l'I/O, la Mémoire Cache ou de limitations. Voir Cache Inconscient Algorithmes.

49voto

Chris W. Rea Points 3194

CPU, signifie que le programme est un goulot d'étranglement par le PROCESSEUR ou unité centrale de traitement, tandis que les I/O bound signifie que le programme est un goulot d'étranglement par I/O, ou d'entrée/de sortie, telles que la lecture ou l'écriture sur le disque, réseau, etc.

En général, lors de l'optimisation des programmes d'ordinateur, on essaie de chercher le goulot de la bouteille et de l'éliminer. Sachant que votre programme est en CPU, aide, de sorte que l'on ne doit pas inutilement optimiser quelque chose d'autre.

[Et par le "goulot d'étranglement", je veux dire la chose qui rend votre programme d'y aller plus lentement qu'il ne l'aurait autrement.]

34voto

gimel Points 30150

Une autre façon de formuler la même idée:

  • Si l'excès de vitesse, le CPU n'est pas la vitesse de votre programme, il peut être I/O bound.

  • Si l'accélération de la I/O (p. ex. à l'aide d'un disque plus rapide) n'aide pas, votre programme peut être liée à l'UC.

(J'ai utilisé "peut-être" parce que vous avez besoin de prendre l'autre en compte des ressources. La mémoire en est un exemple.)

14voto

Paul Tomblin Points 83687

Lorsque votre programme est en attente pour les I/O (ie. un disque en lecture/écriture ou en lecture/écriture réseau etc), le PROCESSEUR est libre de faire d'autres tâches, même si votre programme est arrêté. La vitesse de votre programme dépendra essentiellement de la façon dont rapidement que IO peut arriver, et si vous voulez accélérer, vous aurez besoin pour accélérer l'I/O.

Si votre programme est en cours d'exécution beaucoup d'instructions d'un programme et de ne pas attendre pour les I/O, alors on dit qu'elle est liée à l'UC. L'accélération de la CPU le programme courir plus vite.

Dans les deux cas, la clé pour accélérer le programme peut ne pas être d'accélérer le matériel, mais pour optimiser le programme de réduction de la quantité d'e / s ou le CPU il a besoin, ou n'en dois-je/O si elle ne l'UC choses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X