2 votos

Windows XP actúa de forma extraña cuando el disco duro se utiliza mucho

Esto sucede en dos situaciones hasta ahora: cuando uso sabnzbd, después de que haya terminado de descargar un archivo y esté usando par2.exe para unirlo, y justo ahora, cuando estoy desfragmentando un disco duro desde una VM que estoy ejecutando.

Este uso del disco duro hace que XP no responda realmente. Muchos elementos de la interfaz gráfica de usuario no hacen clic, o tienen clics muy retrasados. En Chrome, cada vez que voy a una pestaña que acabo de abrir hace unos minutos, toda la página se recarga con extrema lentitud - puedo ver los gráficos de la página cargándose línea por línea. Una cosa a tener en cuenta es que en el 1er caso, mi archivo de página está en un disco duro completamente separado del que estoy ejecutando estas operaciones, mientras que en el 2º caso, está en una partición separada pero en el mismo disco duro. Sin embargo, el comportamiento es el mismo.

¿Alguna explicación de por qué ocurre esto? ¿Alguna sugerencia para que no ocurra?

Tengo 4 GB de RAM y un procesador de doble núcleo, y mi CPU no está ni siquiera cerca del 25% cuando estas actividades están en marcha, así que no parece un caso de falta de recursos. ¿Es que XP no es eficiente en el manejo de esta situación?

3voto

RedFilter Puntos 333

Desfragmentar el disco duro de una máquina hará que cualquier máquina se ralentice. Está moviendo muchos datos por todas partes.

¿Qué tipo de ordenador tienes? ¿Tiene un procesador de uno o dos núcleos? ¿Cuánta ram? Hay muchos factores que pueden entrar en juego.

Lo más probable es que se trate de un proceso de colgado o algo parecido. Has dicho que estás ejecutando una VM. Estos pueden tomar una gran cantidad de recursos si usted está realizando el trabajo en la VM y el sistema operativo anfitrión. Las VM's son operaciones muy intensivas en cpu. Se está ejecutando otro sistema operativo completo bajo su sistema operativo principal.

2voto

alastairs Puntos 585

El problema podría deberse a que la actividad en cuestión (por ejemplo, la desfragmentación) ocupa un porcentaje muy elevado de la CPU. Esto deja muy poco para la interfaz de usuario, de ahí la falta de respuesta.

Podrías intentar bajar la prioridad de par2.exe o la desfragmentación. Vaya al Administrador de Tareas > Procesos, haga clic con el botón derecho sobre el proceso infractor y seleccione Establecer prioridad > Baja.

¿Tienes un procesador de un solo núcleo? Tener 2 o más procesadores (o núcleos) permitirá que la interfaz de usuario se ejecute en el que no se está asignando la tarea.

2voto

Jared Harley Puntos 9880

Sinceramente, parece que estás haciendo demasiadas cosas a la vez. Lo que ves es un cuello de botella: se le pide al disco duro que haga varias cosas a la vez (algunas con más prioridad que otras), por lo que cosas como los clics de la interfaz gráfica están "esperando" su turno para ser procesadas.

2voto

brandall Puntos 1

Nota: Estoy asumiendo que tienes una unidad de disco giratorio aquí. Las métricas de rendimiento en estas áreas difieren en gran medida para el almacenamiento de estado sólido.

Mientras que una unidad moderna puede sostener muchas decenas de Mbytes por segundo al realizar lecturas y escrituras masivas, las dos operaciones que describes implican al menos dos ubicaciones en el disco, por lo que hay muchos movimientos de cabeza involucrados. La latencia de los movimientos de los cabezales tiene un efecto enorme en el rendimiento, porque cada vez que la unidad necesita mover los cabezales hay un retraso en el momento en que los mueve al lugar correcto, un retraso en la espera de que se asienten, y luego un retraso en la espera de que la parte correcta del disco pase. Estos retrasos son pequeños por sí solos (no llegan a 10 ns por movimiento en total de media en la mayoría de las unidades modernas), pero si la unidad puede empujar 100Mbyte/seg en pleno flujo 10ms cada movimiento desperdicia el tiempo de 1Mbyte de transferencia de datos. Si ocurre mucho, la unidad puede pasar fácilmente más tiempo moviendo los cabezales que leyendo y escribiendo datos realmente (leer durante un par de 10s de ms, mover el cabezal, leer desde allí un poco, mover el cabezal, escribir durante unos ms, mover el cabezal...).

Mientras se desfragmenta la unidad, la utilidad pasa la mayor parte del tiempo leyendo de un lugar del disco y escribiendo en otro, un pequeño número de bloques a la vez. Extraer el contenido de un conjunto de archivos protegidos por paridad es aún peor, ya que hay al menos dos archivos que se leen (un archivo de origen y uno o más archivos de paridad), así como el archivo de salida que se escribe. Incluso una simple operación de copia en un archivo grande tiene el efecto. Todo esto sin contar los movimientos de cabeza necesarios para mantener actualizadas las estructuras de directorios y los mapas de espacio libre a medida que se mueven los bloques y/o se amplían los archivos. Ejecutar una VM puede ser igualmente exigente dependiendo de lo que la VM esté haciendo en ese momento (y la VM reducirá la RAM disponible en la máquina anfitriona para usarla como caché/buffers, lo que puede empeorar la situación, y cualquier operación de escritura en la VM puede ser mucho más exigente que la misma operación en el anfitrión directamente, especialmente si se usan unidades virtuales "crecientes").

Con todo esto en marcha, si una aplicación GUI necesita pedir aunque sea un poco de E/S puede quedar en cola detrás de todas las otras cosas que están pasando. A no ser que la aplicación sea totalmente multihilo, es probable que se "bloquee" esperando a que se complete la operación de E/S, lo que significa que no está en posición de responder a ningún mensaje (como "el usuario ha hecho clic aquí") en la cola de eventos de Windows hasta que le llegue su turno. Cuanto más ocurra a la vez, peor será, y no lo notará en las lecturas de "CPU ocupado" porque la CPU no es ocupado - está sentado esperando que las operaciones IO se completen la mayor parte del tiempo en estas circunstancias.

Si tienes dos o más unidades puedes reducir en gran medida el efecto que esto tiene sobre ti repartiendo la carga entre las unidades. Si tu VM está en una unidad separada de tu SO primario no competirán por el servicio de E/S cuando la VM esté ocupada mientras el host está desfragmentando la partición del sistema. Además, extraer un archivo de una unidad y escribir el resultado en otra será notablemente más rápido que extraerlo en la misma unidad porque la operación de lectura no está compitiendo directamente con la operación de escritura para el posicionamiento de la cabeza en la unidad.

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: