viernes, 26 de diciembre de 2008

Paginación en VM y Host

Hola.

Estudiando, encuentro un punto interesante respecto a la paginación en Host y VM:

Use virtual memory. RAM is a limited resource and to optimize what is available, all Windows operating systems use a feature called virtual memory. Virtual memory is a combination of the available physical memory and a file called the paging file. The paging file, Pagefile.sys, is a performance feature in Windows that allows the operating system to use temporary memory pages until there is sufficient physical memory available. All applications and many system processes use virtual memory addresses, which are later translated to physical memory addresses. By default, Windows sets the size of the paging file equal to the system memory. To optimize the virtual memory, you should set the paging file to 1.5 times of the physical memory on your virtualization server. However, the paging file only works for the host operating system. The paging file that Windows creates automatically within the virtual machine is useless, and you can remove it completely.

7 comentarios:

Khan dijo...

Esto... ¿Puedes por favor dar más detalles sobre la razón por la que el fichero de paginación dentro de una VM no es útil?

¿Qué ocurre entonces con una VM a la que defino un tamaño de memoria "pequeño" para la tarea? ¿No puede usar memoria virtual?

O es que las componentes de integración permiten que la VM interactúe con la memoria virtual de la máquina física?

Un enlace, o más documentación, por favor.

Miguel H. dijo...

Cuando indagué sobre esto, ví que no es precisa la explicación.

Es bien cierto que en gran parte un s.o. guest no sabe que está siendo virtualizado, por tanto creará un archivo paginación como cualquiera s.o. y sabes que debería de ser 1,5 la memoria física asignada a la máquina.

Ahora bien, ¿Que sentido tiene paginar dentro de una máquina virtual, si a su vez el servidor físico seguro que está paginando?, tenemos redundancia y la limitación de no utilizar paginación mas bien viene marcada por las buenas prácticas.

En resumen, cuando se termina la memoria física, el sistema empieza a paginar, ¿ok?,¿cual es en este caso la mejor solución para una máquina virtual?, asignar suficiente memoria a la máquina virtual para que esto no pase.

Eso es lo que viene a decir.

La mejor explicación la encuentro aquí y aunque es discutible, Vmware y Microsoft coinciden:

http://communities.vmware.com/message/617876

Khan dijo...
Este comentario ha sido eliminado por el autor.
Khan dijo...

Miguel, entendido.

Desde mi punto de vista, lo ideal es que el hypervisor no pagine (para lo cual se hace una asignación justa de memoria a cada VM), y permitir a las VMs paginar en caso de necesidad, lo cual no es más que un "parche" a la falta de memoria real.

Imagina, por ejemplo, una VM con un servidor web diseñado para una Intranet de 50 usuarios, y páginas estáticas. Un Windows 2003 web server con 512/1GB de RAM es más que suficiente. Pero, si, de pronto, se produce cualquier problema (desde que los 150 usuarios de la red se conectan todos a ver el calendario de vacaciones) hasta una fuaga de memoria en IIS (que de hecho ocurren), si el servidor no puede paginar se bloqueará, mientras que si tiene 1,5 veces la RAM será capaz de aceptar la carga adicional sin causar más que unos retrasos, dependiendo de la velocidad del almacenamiento del fichero de paginación.

Evidentemente la paginación doble es el caso más desfavorable.

Planteamos variso casos, siendo la paginación del hypervisor lo menos deseable, ya que afectará a todas las VMs en ejecucíón, mientras que si una o varias VMs paginan, el rendimiento no disminuirá más que en las citadas VMs.

Si el fichero de paginación de las VMs está en un spindle diferente del fichero de la VM, el efecto que la paginación tiene sobre el sistema conjunto es pequeño. De hecho yo recomiendo crear un mirror específico al efecto.

Nota: al hablar de hypervisor no pretendo especificar uno en concreto; puede ser ESX, Xen, Hyper-V o cualquier otro.

Es mi opinión personal; aún no he visto ninguna guía técnica que me convenza sobre la gestión de VM (Virtual Memory) en una VM (Virtual Machine). Joer qué lío de siglas....

Miguel H. dijo...

Pues si, por parte de Microsoft se echa en falta un technet específico de hyper-v y unas buenas prácticas bien definidas. Me estoy empapando el material de estudio para preparar el examen y la explicación mas concreta de lo que estamos hablando es lo que puse en el blog.

Esta entrada, aunque antigua, añade algo:

http://blogs.msdn.com/virtual_pc_guy/archive/2005/09/22/473045.aspx

Como bien dice y como indiqué en el comentario anterior, la clave está en asignar la memoria necesaria a la VM para que no pagine y pero como tu bien dices, preveer que la paginación a veces aparecerá y tener bien administrado en cuanto a discos la paginación del host y de las vm.

Fíjate que nos recuerda que por tener mas memoria, la VM no va a correr más, en cambio esa memoria extra al Host le vendría muy bien.

Saludos.

Miguel H. dijo...

Pues si, por parte de Microsoft se echa en falta un technet específico de hyper-v y unas buenas prácticas bien definidas. Me estoy empapando el material de estudio para preparar el examen y la explicación mas concreta de lo que estamos hablando es lo que puse en el blog.

Esta entrada, aunque antigua, añade algo:

http://blogs.msdn.com/virtual_pc_guy/archive/2005/09/22/473045.aspx

Como bien dice y como indiqué en el comentario anterior, la clave está en asignar la memoria necesaria a la VM para que no pagine y pero como tu bien dices, preveer que la paginación a veces aparecerá y tener bien administrado en cuanto a discos la paginación del host y de las vm.

Fíjate que nos recuerda que por tener mas memoria, la VM no va a correr más, en cambio esa memoria extra al Host le vendría muy bien.

Saludos.

Khan dijo...

Ups... no sé por qué pero Blogger ha duplicado tu comentario al igual que hizo con el mío.... estará caprichoso.

Me alegra ver que coincidimos, y que Ben Armstrong dice (o dijo hace algún tiempo) más o menos lo mismo que nosotros.

Y sí, se hace necesario un articulillo sobre gestión de memoria virtual en entrornos virtualizados, pero yo no lo restringiría a Technet; el problema es básicamente el mismo en cualquier hypervisor del mercado.

En fin, feliz año nuevo.