- Se incorporó
- 15 Enero 2004
- Mensajes
- 11.876
Sockets, cores y threads.
Quiero compartir con ustedes un proyecto, una revisión que voy a hacer en la pega y que tiene relación con threads, cores, sockets y un cambio de licenciamiento que hizo Oracle en su última versión de la base de datos Standard Edition One.
Hasta la versión 12.1.0.1, alguien podía tener una solución de Alta Disponibilidad de la base de datos (RAC, Real Application Cluster) en su sabor Standard Edition y la única limitante era que sólo podía tener dos procesadores (sockets) por servidor. Esto significa que podemos tener dos servidores gemelos con dos procesadores cada uno y la mansa cachadita de núcleos por procesador. Supongamos que son 16 cores por procesador. Entonces, nuestro servidor de alta disponibilidad tendría:
Servidor 1
Dos procesadores
16 núcleos por procesador.
Servidor 2
Dos procesadores
16 núcleos por procesador.
Total procesos (threads): 64.
Nota: No estoy considerando el Hyperthreading. Si lo consideramos tendríamos 128 procesos (threads).
Ahora, en la última versión, Oracle elimina Standard Edition y la reemplaza por Standard Edition Two. Peeeeero esta tiene una limitante: si vamos a instalar la solución RAC de Alta Disponibilidad sólo podemos tener UN PROCESADOR (socket) por servidor y 8 procesos (threads) por servidor. Eso nos permite sólo esta configuración:
Servidor 1
Un procesador
8 núcleos por procesador.
Servidor 2
Un procesador
8 núcleos por procesador.
Total procesos (threads): 16.
Nota: No estoy considerando el Hyperthreading. Debemos desactivarlo.
Duda: ¿Cómo obtenemos en el año 2018 un servidor con UN PROCESADOR? Tenemos que instalarle el hypervisor de Oracle (OVM) y mediante hard partitioning dejarle únicamente un procesador y 8 núcleos.
Para un entorno muy demandante, pasar de 64 procesos a 16 procesos es pésimo. ¿Pero qué tanto se degrada el rendimiento? No es correcto decir que va a bajar al 25% de rendimiento pues el cuello de botella de las bases de datos casi siempre es el acceso a disco. Es como decir que pasar de una velocidad máxima de 60Kmph a 50Kmph en ciudad hará que nos demoremos un 20% más en llegar a nuestro destino, siendo que entre medio hay semáforos y múltiples detenciones.
Voy a hacer una comparativa entre un RAC 11.2.0.3 con 32 threads y un RAC 12.2.0.1 con 16 threads para ver como resulta la diferencia. Compartiré por acá las tablas de diferencia de rendimiento.
Quiero compartir con ustedes un proyecto, una revisión que voy a hacer en la pega y que tiene relación con threads, cores, sockets y un cambio de licenciamiento que hizo Oracle en su última versión de la base de datos Standard Edition One.
Hasta la versión 12.1.0.1, alguien podía tener una solución de Alta Disponibilidad de la base de datos (RAC, Real Application Cluster) en su sabor Standard Edition y la única limitante era que sólo podía tener dos procesadores (sockets) por servidor. Esto significa que podemos tener dos servidores gemelos con dos procesadores cada uno y la mansa cachadita de núcleos por procesador. Supongamos que son 16 cores por procesador. Entonces, nuestro servidor de alta disponibilidad tendría:
Servidor 1
Dos procesadores
16 núcleos por procesador.
Servidor 2
Dos procesadores
16 núcleos por procesador.
Total procesos (threads): 64.
Nota: No estoy considerando el Hyperthreading. Si lo consideramos tendríamos 128 procesos (threads).
Ahora, en la última versión, Oracle elimina Standard Edition y la reemplaza por Standard Edition Two. Peeeeero esta tiene una limitante: si vamos a instalar la solución RAC de Alta Disponibilidad sólo podemos tener UN PROCESADOR (socket) por servidor y 8 procesos (threads) por servidor. Eso nos permite sólo esta configuración:
Servidor 1
Un procesador
8 núcleos por procesador.
Servidor 2
Un procesador
8 núcleos por procesador.
Total procesos (threads): 16.
Nota: No estoy considerando el Hyperthreading. Debemos desactivarlo.
Duda: ¿Cómo obtenemos en el año 2018 un servidor con UN PROCESADOR? Tenemos que instalarle el hypervisor de Oracle (OVM) y mediante hard partitioning dejarle únicamente un procesador y 8 núcleos.
Para un entorno muy demandante, pasar de 64 procesos a 16 procesos es pésimo. ¿Pero qué tanto se degrada el rendimiento? No es correcto decir que va a bajar al 25% de rendimiento pues el cuello de botella de las bases de datos casi siempre es el acceso a disco. Es como decir que pasar de una velocidad máxima de 60Kmph a 50Kmph en ciudad hará que nos demoremos un 20% más en llegar a nuestro destino, siendo que entre medio hay semáforos y múltiples detenciones.
Voy a hacer una comparativa entre un RAC 11.2.0.3 con 32 threads y un RAC 12.2.0.1 con 16 threads para ver como resulta la diferencia. Compartiré por acá las tablas de diferencia de rendimiento.
Última modificación: