Ads 468x60px

viernes, 1 de marzo de 2013

Oracle/Linux Y Memoria

carga

 Nada es perfecto. Y muchas de las novedades en los mainframes es poseer muchos GB de ram fisica a disposicion, de esta manera se confia ciegamente un administrador de sistemas que si posee 64GB de ram fisica la swap seria innecesaria o como maxima instancia, no mas de 2GB de swap.



Cuanta swap realmente requiere el sistema para Oracle? la documentacion oficial de Oracle se basa en un estandar, si posees de 8GB o mas fisica debes otorgar el mismo espacio de swap en disco. Lo que la documentacion oficial no detalla es la manera como los sistemas POSIX compatibles manejan la distribucion de ram. En sistemas Unixes comerciales se puede manipular el manejo de la swap ya que estos sistemas otorgan 2 opciones eager y lazy. Solia pensar que esta caracteristica era unica de los sistemas comerciales Unixes como Solaris o HP-UX, hasta que indague los parametros del kernel en Linux.

uno de los parametros 'swappiness' especifica la forma como el kernel de Linux maneja y distribuye el uso de memoria y cuando debe paginar a la swap del disco. Por defecto en los sistemas tipo-unix Linux la swappiness viene en 60% lo cual especifica mientras mas alto el porcentaje mas paginacion hacia la swap de parte de las aplicaciones. Mientras mas reducido el porcentaje, menos swap se recurrira y mas cache y memoria ram se aprovechara.

Si nuestra base de datos dispone de muchas instancias, dispondra de la misma cantidad de subprocesos por instancia (20 o mas subprocesos por instancia de Oracle iniciada) podemos verificar que seccion de segmento en memoria compartida ocupan los subprocesos de Oracle con el comando:

bash$ ipcs -m

Si vamos a dar uso masivo de la pool cache de Oracle, y queremos respuesta rapida del sistema lo mas ventajoso es reducir la lectura en disco (lo que implica reducir la utilizacion de la swap) como podemos manipular esto en Linux? reduciendo el parametro 'swappiness' a 5% o 0% para sacar la mayor ventaja de la cache de ram y la ram fisica (Siempre y cuando dispongamos de mucha memoria ram fisica) sino disponemos de mucha memoria ram fisica, no es factible reducir la paginacion hacia la swap puesto que esto puede causar estragos y lentitud de respuesta del CPU al utilizar toda la cache y ram fisica disponible, (recordando que la ram fisica de la mayoria de PC requieren refresco constante para no perder los datos) de igual manera si usamos la pool cache de Oracle se crearan masivos logs de parte de la cache usada por Oracle y la cache usada por el sistema operativo, pero por otro lado si se aumenta extremadamente la 'swappiness' a 90% o 80% para utilizar menos ram fisica y mas swap esto causa lentitud de lectura de disco para respuesta de solicitud, y de paso mucha espera de I/O al tener procesos bloqueados.

Entonces que es lo conveniente? dependendiendo sus necesidades, se ha elegir el que mas convenga. Yo particularmente utilizo 'swappiness' en 0% o 5% y desabilito la cache pool de Oracle, para evitar doble buffering en la cache de memoria y en la cache de disco...

Ate Logo :)

No hay comentarios:

Publicar un comentario