En informàtica, es diu que una operació o un procés està limitat per la CPU (en anglès, CPU-bound) quan la seva durada depèn sobretot de la potència i la velocitat del processador. És a dir, el factor limitant que impedeix que l’operació s’executi més de pressa és la capacitat de càlcul de la CPU: si es disposés d’un processador més potent, per exemple augmentant-ne la freqüència de rellotge de 2 a 3 GHz, l’operació es completaria en menys temps.

Descripció El concepte de “factor limitant” permet classificar les operacions segons allò que en condiciona el temps d’execució. Una operació limitada per la CPU es completaria més ràpidament si el processador fos més potent, mentre que una operació limitada per l’entrada/sortida (I/O-bound) ho faria si els dispositius d’entrada i sortida poguessin gestionar més dades en menys temps, com ara amb més ample de banda de xarxa o un disc més ràpid.

Les operacions limitades per la CPU acostumen a ser càlculs i processament de dades. Alguns exemples típics són el càlcul dels dígits del nombre π, el recorregut dels elements d’una estructura de dades per aplicar-hi lògica de negoci, o operacions matemàtiques intensives. En canvi, en una operació limitada per l’entrada/sortida la major part del temps es dedica a esperar una resposta de la xarxa o d’un altre dispositiu, com en una petició a un servidor web o la lectura d’un fitxer del disc.

Relació amb la concurrència La distinció entre treball limitat per la CPU i treball limitat per l’entrada/sortida és fonamental a l’hora d’escollir el model de concurrència més adequat. Tots dos tipus d’operacions solen conviure en una mateixa aplicació; per exemple, en descarregar el contingut d’una pàgina web (operació limitada per l’E/S) i tot seguit donar-li format (operació limitada per la CPU).

En el llenguatge Python, el bloqueig global de l’intèrpret (global interpreter lock, GIL) impedeix que s’executi més d’una instrucció de codi Python en paral·lel, de manera que el multithreading no acostuma a aportar millores de rendiment per al treball limitat per la CPU. Per paral·lelitzar aquest tipus de feina i aprofitar diversos nuclis del processador se sol recórrer al multiprocessament, que crea diversos subprocessos, cadascun amb el seu propi intèrpret de Python.

Referències

Categoria:Informàtica