Recientemente descubrí que nuestro servidor ya no utiliza los 80 hilos en el sistema. Parece que 16 núcleos siempre están inactivos, a pesar de la alta carga del sistema.
Es un servidor Dell powerEdge R900, con 4 sockets, 4 veces un Xeon de 10 núcleos. Entonces 40 núcleos, con HT sus 80 hilos. (Intel (R) Xeon (R) CPU E7-4850 @ 2.00GHz). La memoria del sistema es de 512 GB con Ubuntu 14.04.1 LTS. Todavía no he reiniciado el servidor, esperaba evitar esto.
uname -a Ensamblaje de Linux 3.13.0-35-generic # 62-Ubuntu SMP vie 15 de agosto 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux
Comprobaré lo siguiente:
Temperatura medida con i7z: (no puede mostrar 4 enchufes
Velocidad de CPU de cpuinfo 1994.00Mhz Frecuencia verdadera (sin contabilidad Turbo) 1994 MHz Socket [0] - [núcleos físicos = 10, núcleos lógicos = 20, núcleos en línea máximos siempre = 10] Multiplicador de CPU 15x || Frecuencia del reloj del bus (BCLK) 132.93 MHz TURBO HABILITADO en 10 núcleos, Hyper Threading activado Frecuencia máxima sin considerar Turbo 2126.93 MHz (132.93 x [16]) El multiplicador TURBO máximo (si está habilitado) con 1/2/3/4/5/6 núcleos es 0x / 0x / 0x / 0x / 0x / 0x Frecuencia de corriente real 1994.02 MHz (Máx. De abajo) Core [core-id]: Freq real (Mult.) C0% Halt (C1)% C3% C6% Temp Núcleo 1 [1]: 1994.01 (15.00x) 100 0 0 0 75 Núcleo 2 [5]: 1994.00 (15.00x) 100 0 0 0 77 Núcleo 3 [9]: 1994.02 (15.00x) 100 0 0 0 76 Núcleo 4 [13]: 1994.00 (15.00x) 100 0 0 0 77 Núcleo 5 [17]: 1994.00 (15.00x) 100 0 0 0 77 Núcleo 6 [21]: 1994.00 (15.00x) 97.7 0.404 0 1.86 77 Núcleo 7 [25]: 1994.00 (15.00x) 94.5 0 1 5.27 77 Núcleo 8 [29]: 1994.00 (15.00x) 100 0 0 0 76 Núcleo 9 [33]: 1994.00 (15.00x) 99.8 0 1 1 75 Núcleo 10 [37]: 1994.00 (15.00x) 100 0 0 0 73 Frecuencia máxima sin considerar Turbo 2126.93 MHz (132.93 x [16]) El multiplicador TURBO máximo (si está habilitado) con 1/2/3/4/5/6 núcleos es 0x / 0x / 0x / 0x / 0x / 0x Frecuencia de corriente real 1994.02 MHz (Máx. De abajo) Core [core-id]: Freq real (Mult.) C0% Halt (C1)% C3% C6% Temp Núcleo 1 [1]: 1994.02 (15.00x) 100 0 0 0 74 Núcleo 2 [5]: 1994.00 (15.00x) 100 0 0 0 76 Núcleo 3 [9]: 1994.02 (15.00x) 100 0 0 0 76 Núcleo 4 [13]: 1994.00 (15.00x) 100 0 0 0 77 Núcleo 5 [17]: 1994.00 (15.00x) 100 0 0 0 76 Núcleo 6 [21]: 1994.00 (15.00x) 97 0 1 2.43 77 Núcleo 7 [25]: 1994.00 (15.00x) 92.9 0 1 6.81 77 C0 = Procesador funcionando sin interrupción 00x) 100 0 0 0 75 C1 = Procesador funcionando con paradas (los estados> C0 ahorran energía) 1 1 75 C3 = Núcleos en ejecución con PLL desactivado y núcleo de caché desactivado 0 0 73 C6 = Todo en el estado central C3 + guardado en el caché de último nivel Los valores anteriores en la tabla están en porcentaje durante los últimos 1 segundo [core-id] se refiere al número de core-id en / proc / cpuinfo Mensaje de "valores basura" impreso cuando se leen valores basura Ctrl + C para salir
Inactivo: los últimos 16 núcleos están 100% inactivos:
mpstat -p ALL 1: Promedio: CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% inactivo Promedio: todos 70.69 0.00 0.70 0.00 0.00 0.00 0.00 0.00 0.00 28.61 Promedio: 0 92.93 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 7.07 Promedio: 1 94.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 6.00 Promedio: 2100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Promedio: 3 83.33 0.00 2.08 0.00 0.00 0.00 0.00 0.00 0.00 14.58 Promedio: 4 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Promedio: 5100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 .................................................. ........ Promedio: 64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 65 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 66 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 67 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 68 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 69 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 70 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 71 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 72 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 73 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 74 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 75 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 76 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 77 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 78 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 79 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Números de carga superiores:
arriba - 17:41:48 hasta 35 días, 6:28, 15 usuarios, promedio de carga: 77.69, 70.48, 62.73 Tareas: 1327 en total, 44 corriendo, 1281 durmiendo, 2 detenidos, 0 zombie % Cpu (s): 63.7 us, 13.6 sy, 0.0 ni, 22.3 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem: 52837942 + total, 52553190 + usado, 2847524 gratis, 535660 buffers KiB Swap: 78124032 en total, 2105608 usados, 76018416 gratis. 40637328 + Mem en caché
A veces, el% inactivo ya no es 100, pero un poco menos, como puede ver aquí, pero en su mayoría se mantiene al 100% inactivo.
Promedio: CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% inactivo Promedio: todos 70.69 0.00 0.70 0.00 0.00 0.00 0.00 0.00 0.00 28.61 Promedio: 64 0.13 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.87 Promedio: 65 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 66 0.00 0.00 2.63 0.00 0.00 0.00 0.00 0.00 0.00 97.37 Promedio: 67 0.00 0.00 0.13 0.13 0.00 0.00 0.00 0.00 0.00 99.75 Promedio: 68 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 69 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 70 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 71 0.00 0.00 0.12 0.00 0.00 0.00 0.00 0.00 0.00 99.88 Promedio: 72 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 73 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 74 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 75 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 76 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 77 0.00 0.00 0.13 0.00 0.00 0.00 0.00 0.00 0.00 99.87 Promedio: 78 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Promedio: 79 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
También ejecuté este comando para asegurarme de que todos estén en línea:
para COUNT en `seq 01 79`; echo 1> / sys / devices / system / cpu / cpu $ {COUNT} / en línea;
Con el programa HTop puedo visualizar una barra de uso de CPU por hilo, y veo 64 barras llenas y 16 vacías (las últimas 16).
Cuando intento iniciar un proceso en un núcleo> 63 también falla al hacerlo:
root @ server: ~ # taskset -c 63 time Uso: tiempo [-apvV] [-f formato] [-o archivo] [--append] [--verbose] [--portabilidad] [--format = formato] [--output = archivo] [--version] [--quiet] [--help] comando [arg ...] root @ server: ~ # taskset -c 64 time conjunto de tareas: no se pudo establecer la afinidad de pid 0: argumento no válido root @ server: ~ # taskset -c 65 veces conjunto de tareas: no se pudo establecer la afinidad de pid 0: argumento no válido
Hilo relacionado: /ubuntu/536541/ubuntu-uses-only-2-out-of-4-processor-cores
EDITAR: Resulta que los núcleos se apagan sobre la marcha, pero no se inician correctamente. Parece que hay procesos que se ejecutan en estos núcleos no disponibles, pero es imposible iniciar un nuevo proceso en ellos. Según el registro de dmesg, los núcleos se deshabilitan y habilitan rápidamente uno tras otro. Tengo que decir que era la intención de apagar estos núcleos, por lo que deshabilitamos esta 'característica'. Registro de ejemplo DMESG:
[Lun 12 de enero 12:42:40 2015] kvm: deshabilitar la virtualización en CPU79 [Lun 12 de enero 12:42:40 2015] smpboot: CPU 79 ahora está fuera de línea .... [Lun 12 de enero 12:43:12 2015] smpboot: Nodo de arranque 0 Procesador 79 APIC 0xf3 [Lun 12 de enero 12:43:12 2015] kvm: habilitar la virtualización en CPU79
Activamos / desactivamos núcleos a través de:
para COUNT en `seq 64 79`; echo 1> / sys / devices / system / cpu / cpu $ {COUNT} / en línea; hecho
Nunca vinculamos estos comandos con nuestros 16 núcleos no disponibles, ya que normalmente los comandos anteriores funcionan correctamente. (también intentamos deshabilitar powermanager, pero esto no ayudó)
Respuestas:
No todos los programas pueden usar múltiples hilos. php es uno por ejemplo. Si un proceso php necesita mucha CPU, solo 1 CPU alcanzará el máximo. Y los demás estarán ociosos.
fuente