1 votos

¿Puede la memoria baja en una computadora causar más uso de la CPU?

Desde mi última pregunta, otra pregunta surgió en mi mente. Como se mencionó, después de haber poca memoria hace que el sistema operativo que utilice el archivo de paginación en Windows, además de tener poca memoria causas servicios como superfetch y... a trabajar más. Así que mi pregunta es que:

Pueden poca memoria causar más uso de CPU (incluso un poco más) debido a la necesidad de la gestión de la memoria en la baja condición del recurso? y si la respuesta es sí, es Sensato?

2voto

Leo King Puntos 151

Baja la memoria hace que el sistema operativo empuje de memoria de menos las aplicaciones usadas recientemente en el archivo de paginación. Esto cuesta un poco de sobrecarga de la CPU para manejar el acto de escribir datos en el disco.

Más tarde cuando la aplicación lee o escribe en la memoria que se ha paginado en el disco un "error de página" se provoca la excepción. La tarea es entonces suspendido, el sistema operativo figuras, donde la memoria se almacena en el disco, se lee en la memoria RAM física, se modifica la tabla de la página de la aplicación para que apunte a la nueva ubicación de memoria física y, a continuación, unsuspends la tarea.

Todos los que trabajo cuesta a algunos cantidad de tiempo de CPU que no habría sido necesaria si hay suficiente memoria física disponible. Es probable que sea relativamente pequeña en comparación con otras operaciones, pero es todavía una cantidad apreciable.

Así que sí, la baja de memoria puede causar mayor uso de la CPU.

El problema es que muy poca memoria puede causar la falta de memoria hasta el punto de que el sistema de paginación y salir tal cantidad de datos que el disco de entrada y salida de veces dominan sobre todo lo demás.

2voto

Jamie Hanrahan Puntos 8474

Respuesta rápida: Sí... um, tipo de... pero en casos extremos se tendrá el efecto contrario, al menos en términos de porcentaje de uso de CPU.

En los casos típicos de "no hay suficiente memoria RAM" en estos días, usted no va a ver un gran aumento de página duro tasa de errores, pero usted verá una mayor tasa de fallos de página (el adicional errores suave fallas). Un suave fallo no implica e / s de disco. Pero el código no tiene que ejecutar en el administrador de memoria para resolver la falla.

Calculo que el tiempo para resolver un suave culpa a unos cientos de instrucción veces. Así que si cada instrucción que su carga de trabajo trató de ejecutar levantado una suave culpa, su trabajo tomaría alrededor de 300 veces más que hacer! Suponiendo que el trabajo era todo CPU-bound. (Afortunadamente, el porcentaje de instrucciones que elevar suave fallas es en ninguna parte cerca tan alto).

Pero esto no va a aumentar la medida del porcentaje de uso de CPU! Un hilo está ejecutándose o no lo es, y mirando en el uso de CPU de los contadores, no hay... bueno, casi* no... diferencia visible entre el tiempo empleado en la ejecución de tu aplicación del código, vs tiempo de permanencia en el administrador de memoria para resolver un suave culpa en nombre de su aplicación. El Mm se ejecuta en el fallamiento proceso del contexto, por lo que su tiempo de CPU sólo se convierte en parte de su proceso.

*La diferencia se mostrará en el tiempo de permanencia en el kernel vs modo de usuario, ya que el Mm de curso se ejecuta en modo kernel.

Por supuesto, si tu aplicación tiene que gastar un montón de tiempo en el administrador de memoria, va a estar recibiendo mucho menos real de trabajo realizado! Pero medido el % de uso de CPU no va a cambiar.

Lo que va a cambiar es la cantidad total de tiempo de CPU (en segundos, no en %) de su hilo o sus necesidades de proceso para hacer el mismo trabajo real.

El caso más radical es que estás de paginación del disco son un montón. es decir, estás incurriendo en errores graves en la página.

Esto va a reducir la medida del porcentaje de uso de CPU, debido a que el tiempo de espera para una paginación de I/O (o cualquier otro de e/S) para completar no es el tiempo empleado en la ejecución de código en la CPU. Durante un I/O requirente, el hilo está a la Espera, o como *nix, a "bloqueado". El tiempo que tarda el dispositivo de almacenamiento (disco o incluso un disco SSD) para realizar una e/S completamente pantanos de la CPU tiempo de permanencia en el administrador de memoria para configurar la e/S; por lo que el último se convierte en insignificante. Esto se aplica a un menor grado, incluso para un M. 2 SSD.

Así, en situaciones de alto de disco duro falla tasas verá su uso de la CPU, como un porcentaje reducido. (es decir, la unidad es el cuello de botella de la CPU.) Al igual que si tu aplicación pasamos un montón de tiempo a la lectura de los archivos de datos.

Pero, por supuesto, usted verá su aplicación a tomar mucho más tiempo para completar el trabajo que usted quiere que haga. Como los suaves en caso de avería, sólo que mucho peor.

n.b.: El archivo de paginación no es el único archivo que se utiliza para la paginación! Cada archivo asignado en el sistema - que incluye todos los archivos exe y dll que cada proceso está utilizando, además de ntoskrnel sí mismo - es, en esencia, un archivo de paginación. Para deshacerse de el archivo de paginación no se podrá eliminar duro fallos ni de paginación del disco.

1voto

tommy61157 Puntos 13

Me imagino que el intercambio en el disco para el uso de la memoria sería hacer que el CPU tiene más de e/S de los ciclos causando más estancamiento general en que la CPU/memoria RAM es esencialmente ser alimentados de datos a un ritmo más lento. Especialmente si usted tiene una CPU como Ryzen Cpu que son siempre el ansia de más ancho de banda en términos de su memoria RAM, sí, lo que realmente puede empezar a tener un efecto negativo en la CPU. Me imagino que depende de lo que exactamente está consiguiendo página presentado, pero fundamentalmente, va a hacer que la CPU esperar más tiempo en algunas de las llamadas, hacer que funcione más lento. Espero que esto responda tu pregunta :)

Edit: Es también cuestión de donde es la página de presentación, que me imagino un M. 2 SSD (o cualquier SSD) podría ayudar a la CPU más de un disco duro SATA por ejemplo.

Edit 2: por Favor, lea Jamie Comentarios debajo de este post.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: