Un socket es una ranura en la placa base de un servidor que alberga un procesador, permitiendo su conexión con otros componentes del sistema. Facilita la comunicación eléctrica y lógica necesaria para el funcionamiento del procesador, siendo crucial para el rendimiento y la capacidad de actualización del sistema.
Por defecto, en la creación de una instancia, el número de sockets corresponde al número de vCPUs que se asigne en el sabor, es decir que si levantamos una instancia con 16vCPU, estarán distribuidas en 16 sockets.
Pueden ser varias las razones por las que querer modificar la cantidad de sockets de la instancia.
Una de las principales puede ser debido a que la licencia de SQL que se tiene instalada tiene un límite de sockets, por lo que si la configuración está en "Automático", es decir que Nº sockets=Nº vCPUs, solo se usará el máximo de sockets que permita la licencia aplicada.
Otra razón, podría ser porque su sistema operativo permita una cantidad máxima de sockets. Este sería el caso de los Windows 10, los cuales permiten un máximo de 2 sockets. Se solucionaría ajustando el número de sockets al máximo que permita el S.O.
Se puede dar que en algunos casos, para que el aplicativo que está corriendo sobre nuestra instancia (sobretodo si es un aplicativo un poco antiguo) funcione correctamente, necesite tener configurado un único socket. Para esto es importante revisar la documentación de los aplicativos y consultar esta necesidad en detalle con el fabricante del aplicativo.
En los casos anteriores, si tuvieramos 16 vCPU, y la licencia nos limitase a 4 sockets, una distribución que podríamos aplicar sería: emplear 4 sockets, consiguiendo así tener 4 vCPU en cada uno de ellos, teniendo un total de 16vCPU.
En el caso especifico de Windows 10, solo se aprovecharían 2 sockets, por lo que en este caso la instancia únicamente haría uso de 8vCPU, siendo necesaria la correcta configuración a 2 sockets en lugar de 4 para que se haga uso de las 16 vCPU.
IMPORTANTE: En Soax, al editar el número de sockets, se define el máximo de sockets que va a tener la instancia. Es decir, si una instancia con 4vCPU le ajustamos el máximo número de sockets a 3, como 3 no es divisible entre 4, la instancia usará 2 sockets.
Para conocer como cambiar el número de sockets, visite:
Emplearemos el comando lscpu, este es el comando más simple que muestra la información de la CPU en una salida simple y rápida.
Puedes ver la arquitectura de tu sistema, el número de procesadores, la información del proveedor, la información de la caché, la velocidad del procesador, entre otras cosas.
Tras lanzar el comando lscpu se nos mostrara la siguiente salida, en la que podremos identificar el valor socket(s):
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
Model name: Intel Xeon Processor (Skylake, IBRS)
CPU family: 6
Model: 85
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
Stepping: 4
BogoMIPS: 4788.74
Virtualization features:
Hypervisor vendor: KVM
Virtualization type: full
Caches (sum of all):
L1d: 64 KiB (2 instances)
L1i: 64 KiB (2 instances)
L2: 8 MiB (2 instances)
L3: 32 MiB (2 instances)
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerabilities:
Itlb multihit: KVM: Mitigation: VMX unsupported
L1tf: Mitigation; PTE Inversion
Mds: Mitigation; Clear CPU buffers; SMT Host state unknown
Meltdown: Mitigation; PTI
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling
Srbds: Not affected
Tsx async abort: Mitigation; Clear CPU buffers; SMT Host state unknown