3.2. Poder de procesamiento

A menudo conocido como poder de CPU, ciclos de CPU y otros nombres diferentes, el poder de procesamiento es la habilidad de un computador de manejar datos. El poder de procesamiento varía con la arquitectura (y la velocidad del reloj) del CPU — usualmente los CPUs con velocidades del reloj más lentas y aquellos soportando tamaños de palabras más grandes tienen más poder de procesamiento que los CPUs más lentos que soportan tamaños de palabras más pequeños.

3.2.1. Hechos sobre el poder de procesamiento

He aquí los dos principales hechos sobre el poder de procesamiento que debería tener en mente:

El poder de procesamiento es fijo, en el sentido de que el CPU solamente puede ir a cierta velocidad. Por ejemplo, si necesita sumar dos números (una operación que toma solamente una instrucción de máquina en la mayoría de las arquitecturas) un CPU particular lo puede hacer a una velocidad y solamente a una velocidad. Con pocas excepciones, ni siquiera es posible reducir la velocidad en la que el CPU procesa las instrucciones, mucho menos incrementarla.

El poder de procesamiento también es fijo en otro sentido: es finito. Esto es, hay límites para los tipos de CPUs que se pueden conectar a un computador determinado. Algunos sistemas son capaces de soportar un amplio rango de CPUs de diferentes velocidades, mientras que otros quizás no se puedan actualizar para nada[1].

El poder de procesamiento no se puede almacenar para usarse más tarde. En otras palabras, si un CPU puede procesar 100 millones de instrucciones en un segundo, un segundo de tiempo ocioso equivale a gastar 100 millones de instrucciones de poder de procesamiento.

Si tomamos estos hechos y los examinamos desde una perspectiva ligeramente diferente, un CPU "produce" una corriente de instrucciones ejecutadas a una rata fija. Si el CPU "produce" instrucciones ejecutadas, esto significa que otra cosa debe "consumir" las mismas. La próxima sección define a estos consumidores.

3.2.2. Consumidores de poder de procesamiento

He aquí los dos principales consumidores de poder de procesamiento:

3.2.2.1. Aplicaciones

Los consumidores más obvios de poder de procesamiento son las aplicaciones y los programas que usted desea que el computador ejecute por usted. Desde una hoja de cálculo hasta una base de datos, las aplicaciones son la razón por las que usted tiene un computador.

Un único CPU puede solamente ejecutar una cosa en un momento dado. Por lo tanto, si su aplicación se está ejecutando, el resto de las cosas en el sistema no. Lo contrario, por supuesto, también es cierto — si algo diferente a su aplicación se está ejecutando, entonces su aplicación no está haciendo nada.

Pero como es que muchas aplicaciones diferentes pueden parecer que se estan ejecutando al mismo tiempo bajo un sistema operativo moderno? La respuesta es que estos son sistemas operativos multiproceso. En otras palabras, estos crean la ilusión de que muchas están sucediendo simultáneamente cuando en realidad es que esto no es posible. El truco es darle a cada proceso una fracción de segundo de ejecución en el CPU antes de darle el CPU a otro proceso para la próxima fracción de segundo. Si estos switches de contexto ocurren con la frecuencia necesaria, se logra la ilusión de que múltiples aplicaciones se ejecutan simultáneamente.

Por supuesto, las aplicaciones hacen otras cosas que manipular datos usando el CPU. Pueden también esperar por entradas del usuario así como también realizar E/S a dispositivos tales como discos duros y visualizaciones gráficas. Cuando ocurren estos eventos, la aplicación ya no necesita el CPU. En estos momentos, el CPU se puede utilizar para otros procesos ejecutando aplicaciones sin hacer más lento la aplicación en espera.

Además, el CPU puede ser utilizado por otro consumidor de poder de procesamiento: el sistema operativo mismo.

3.2.2.2. El Sistema Operativo

Es difícil determinar cuanto poder de procesamiento consume el sistema operativo. La razón de esto es que el sistema operativo utiliza una mezcla de código a nivel de procesos y a nivel del sistema para realizar su trabajo. Mientras que, por ejemplo, es fácil utilizar un supervisor de procesos para determinar qué está haciendo un proceso ejecutando un demonio o servicio, no es tan fácil determinar cuánto poder de procesamiento el sistema operativo consume por procesamiento a nivel del sistema relacionado con E/S (lo cual usualmente se hace dentro del contexto del proceso ejecutando la E/S).

En general, es posible dividir este tipo de sobrecarga de sistema operativo en dos tipos:

  • Mantenimiento del sistema operativo

  • Actividades relacionadas a procesos

El mantenimiento del sistema operativo incluye actividades tales como planificación de procesos y administración de memoria, mientras que las actividades relacionadas a procesos incluyen cualquier proceso que soporta al sistema operativo mismo, tales como procesos que manejan el registro de eventos globales al sistema o el vaciado de E/S de caché.

3.2.3. Mejorando la escasez de CPU

Cuando no hay suficiente poder de procesamiento para la carga de trabajo, tiene dos opciones:

3.2.3.1. Reducir la carga

Reducir la carga de CPU es algo que se puede hacer sin el gasto monetario. El truco es identificar aquellos aspectos de la carga del sistema bajo su control que se pueden reducir. Hay tres áreas en las que enfocarse:

  • Reducir la sobrecarga del sistema operativo

  • Reducir la sobrecarga de las aplicaciones

  • Eliminar aplicaciones completas

3.2.3.1.1. Reducir la sobrecarga del sistema operativo

Para reducir la sobrecarga del sistema operativo, debe examinar su carga actual del sistema y determinar los aspectos del mismo que resultan en cantidades de sobrecarga excesivas. Estas áreas incluyen:

  • Reducir la necesidad de planificación frecuente de procesos

  • Reducir la cantidad de E/S realizada

No espere milagros, en un sistema razonablemente bien configurado, es poco probable notar un incremento del rendimiento sustancial al tratar de reducir la carga del sistema operativo. Esto se debe al hecho de que un sistema razonablemente bien configurado, por definición, resulta en una cantidad de sobrecarga mínima. Sin embargo, si su sistema está ejecutándose con poca RAM, por ejemplo, quizás pueda reducir la sobrecarga al mejorar la escasez de memoria.

3.2.3.1.2. Reducir la sobrecarga de aplicaciones

El reducir la sobrecarga de aplicaciones significa asegurarse de que la aplicación tiene todo lo que necesita para ejecutarse bien. Algunas aplicaciones presentan comportamientos diferentes bajo ambientes diferentes — una aplicación puede volverse muy comprometida en términos de computación cuando procesa ciertos tipos de datos, pero no para otros, por ejemplo.

El punto a tener en cuenta aquí es que debe entender las aplicaciones ejecutándose en su sistema si es que quiere que se ejecuten lo más eficientemente posible. A menudo esto implica trabajar con sus usuarios y/o los desarrolladores, para ayudar a descubrir en que formas se pueden hacer las aplicaciones para que se ejecuten más eficientemente.

3.2.3.1.3. Eliminar aplicaciones completas

Dependiendo de su organización, este enfoque puede que no esté disponible para usted, pues a menudo no es la responsabilidad del administrador del sistema dictar cuales aplicaciones se ejecutaran y cuales no. Sin embargo, si puede identificar cualquier aplicación conocida como "CPU hogs", quizás pueda influenciar para eliminarlas.

Hacer esto quizás implicará más de una persona. Los usuarios afectados definitivamente deben ser parte de este proceso; en muchos casos pueden tener el conocimiento y el poder político para llevar a cabo los cambios necesarios en las aplicaciones disponibles.

SugerenciaSugerencia
 

Tenga en mente que una aplicación puede que no requiera ser eliminada de todos los sistemas de su organización. Probablemente pueda mover una aplicación hambrienta de CPU desde un sistema sobrecargado a otro sistema que esté prácticamente ocioso.

3.2.3.2. Incrementar la capacidad

Por supuesto, si no es posible reducir la demanda de poder de procesamiento, debe buscar formas de incrementar el poder de procesamiento disponible. Hacer esto cuesta dinero, pero se puede hacer.

3.2.3.2.1. Actualizar el CPU

El enfoque más directo es determinar si el CPU de su sistema puede ser actualizado. El primer paso es determinar si el CPU actual se puede eliminar. Algunos sistemas (principalmente portátiles) tienen CPUs que están soldados en un lugar, haciendo imposible una actualización. El resto, sin embargo, tienen CPUs en bancos, lo que hace posible su actualización — al menos en teoría.

Luego, debe investigar para determinar si existe un CPU más rápido para la configuración de su sistema. Por ejemplo, si su sistema actual tiene un CPU de 1GHz y existe una unidad de 2GHz del mismo tipo, entonces es posible hacer una actualización.

Finalmente, debe determinar la velocidad máxima del CPU soportada por su sistema. Continuando con el ejemplo anterior, aún si existe un CPU de 2GHz del mismo tipo, un intercambio simple de CPU no es una opción si su sistema solamente soporta procesadores ejecutándose a 1GHz o menos.

Si encuentra que no puede instalar un CPU más rápido en su sistema, sus opciones pueden estar limitadas a cambiar las tarjeta madre o hasta una actualización más costosa como la de tipo carretilla mencionada anteriormente.

Sin embargo, algunas configuraciones de sistemas permiten un enfoque ligeramente diferente. En vez de reemplazar el CPU existente, por que no añadir otro?

3.2.3.2.2. ¿Es el multiprocesamiento simétrico adecuado para Usted?

El multiprocesamiento simétrico (también conocido como SMP) hace posible que un sistema computacional tenga más de un CPU compartiendo todos los recursos del sistema. Esto significa, que a diferencia de un sistema uniprocesador, un sistema SMP puede en realidad tener más de un procesador ejecutándose al mismo tiempo.

A primera vista, pareciera el sueño de un administrador de sistemas. Primero que nada, SMP hace posible incrementar el poder de procesamiento de un CPU aún si no esta disponible un CPU con velocidades de reloj más rápidas — simplemente añadiendo otro CPU. Sin embargo, esta flexibilidad viene con algunas advertencias.

La primera advertencia es que no todos los sistemas son capaces de operar con SMP. Su sistema debe tener una tarjeta madre diseñada para soportar multiprocesamiento. Si no lo tiene, se necesitará (al menos) una actualización de la tarjeta madre.

La segunda advertencia es que SMP incrementa la sobrecarga del sistema. Esto tiene sentido si lo piensa un poco; con más CPUs para los cuales planificar trabajo, el sistema operativo requiere más ciclos de CPU para la sobrecarga. Otro aspecto de esto es que con múltiples CPUs, puede haber más competencia por los recursos del sistema. Debido a estos factores, la actualización de un sistema de procesadores dual a un sistema con cuatro procesadores, no significa un incremento de 100% de poder de CPU disponible. De hecho, dependiendo del hardware actual, la carga de trabajo y la arquitectura del procesador, es posible alcanzar un punto en el que la adición de otro procesador podría más bien reducir el rendimiento del sistema.

Otro punto a tener en mente es que SMP no ayuda a las cargas de trabajo consistentes de una aplicación monolítica con una sola corriente de ejecución. En otras palabras, si un programa grande, vinculado computacionalmente, se ejecuta como un único proceso sin hilos, no se ejecutará más rápido en un sistema SMP que en una máquina de un sólo procesador. De hecho, se podría ejecutar aún más lento debido al incremento de la sobrecarga que SMP trae consigo. Por estas razones, muchos administradores de sistemas sienten que cuando se trata de poder de procesamiento, una sola corriente de procesamiento es la mejor opción. Esto proporciona el máximo de poder de CPU con las menores restricciones sobre su uso.

Mientras que esta discusión pareciera indicar que SMP nunca es una buena idea, hay circunstancias en las que tiene sentido. Por ejemplo, los entornos ejecutando múltiples aplicaciones con gran demanda computacional son buenas candidatas para SMP. La razón de esto es que las aplicaciones que no hacen nada pero computar por largos períodos de tiempo mantienen la contienda entre los procesos activos (y por lo tanto, la sobrecarga del sistema operativo) a un mínimo, mientras que los procesos mismos mantienen cada CPU ocupado.

Otra cosa a tener en mente sobre SMP es que el rendimiento de un sistema SMP tiende a degradarse de forma más graciosa a medida que la carga del sistema se incrementa. Esto hace a los sistemas SMP populares en entornos de servidor y multiusuario, pues la mezcla de procesos siempre cambiantes pueden impactar menos la carga global del sistema en una máquina con múltiples procesadores.

Notas

[1]

Esta situación lleva a que se llame de forma jocosa actualización con carretilla, lo que significa un reemplazo completo de un computador.