Cuando estamos haciendo un servidor Linux, a menudo necesitamos saber quién está haciendo el cambio de proceso y cuál es la razón del cambio de proceso. Debido al alto costo del cambio de proceso, le doy un número que LMbench prueba:
Cambio de contexto - tiempos en microsegundos - más pequeño es mejor
—————————— ——————————————-
Host OS 2p /0K 2p /16K 2p /64K 8p /16K 8p /64K 16p /16K 16p /64K
Ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw
——— ——————————————————————————
my174.cm4 Linux 2.6.18 - 6.1100 7.0200 6.1100 8.7400 7.7200 8.96000 9.62000
En mi servidor de gama alta, la sobrecarga del proceso de conmutación es de alrededor de 8us. Esto es inaceptable en comparación con los servidores de alto rendimiento, por lo que tenemos que estar en un intervalo de tiempo. Haga todo lo posible dentro del trabajo, en lugar de perder tiempo en cambios innecesarios.
Curioso por matar al gato, investiguemos quién está cambiando nuestro proceso: ¿
ver sourceprint? [root @ my174 admin] # dstat 1
---- Uso total de la CPU ----- dsk /total- -net /total- --- paginación-- --- sistema--
usr sys idl wai hiq siq |
Leer escrito |
Recv enviar |
Fuera de
Int csw
0 0 100 0 0 0 |
0 0 |
796B 1488B |
0 0 |
1004 128
0 0 100 0 0 0 |
0 0 |
280B 728B |
0 0 |
1005 114
0 0 100 0 0 0 |
0 0 |
280B 728B |
0 0 |
1005 128
0 0 100 0 0 0 |
0 0 |
280B 728B |
0 0 |
1005 114
0 0 100 0 0 0 |
0 320k |
280B 728B |
0 0 |
1008 143
...
Podemos ver que el número de csw es 120 /S, pero herramientas como dstat o vmstat no nos dicen quién está haciendo cosas malas. Ok Hagámoslo nosotros mismos.
¡Ofreciendo nuestro encantador systemtap!
¿Ver la fuente? [root @ my174 admin] # cat > cswmon.stp
#! /usr /bin /env stap
#
#
global csw_count
global idle_count
probe scheduler.cpu_off {
csw_count [task_prev , task_next] ++
idle_count + = idle
}
fmt_task función (task_prev, task_next)
{
return sprintf ( "% s (% d) - >% s (% d)",
task_execname (task_prev),
task_pid (task_prev),
task_execname (task_next) ,
task_pid (task_next))
}
function print_cswtop () {
printf ("% 45s% 10s \\ n", "Interruptor de contexto "," COUNT ")
foreach ([task_prev, task_next] en csw_count- limit 20) {
printf ("% 45s% 10d \\ n ", fmt_task (task_prev, task_next), Csw_count [task_prev, task_next])
}
printf ("% 45s% 10d \\ n", "idle", idle_count)
delete csw_count
eliminar idle_count
}
probador timer.s ({GetProperty (Content)}) {
print_cswtop ()
printf ("- -------------------------------------------------- ----------- \\ n ")
}
CTRL + D
Este script imprimirá el TOP 20 cada vez que se establezca. Cambiando la mayoría de los procesos y su pid, veamos los resultados: ¿
ver sourceprint? [Root @ my174 admin] # stap cswmon.stp 5
Contexto COUNT
swapper (0) - > systemtap /11 (908) 500
systemtap /11 (908) - > swapper (0) 498
swapper (0) - > fct1 trabajador (2492) 50
fct1-worker (2492) - > swapper (0) 50
swapper (0) - > fct0-worker (2191) 50
fct0-worker (2191) - > swapper (0) 50
swapper (0) - > bond0 (3432) 50
bond0 (3432) - > swapper (0 ) 50
stapio (879) - > swapper (0) 26
swapper (0) - > stapio (879) 25
stapio (879) - > swapper (0) 19
swapper (0) - > stapio (879) 17
swapper (0) - > Watchdog /9 (31) 5
watchdog /9 (31) - > swapper (0) 5
swapper (0) - > mysqld (18346) 5
mysqld (18346) - > swapper (0) 5
swapper (0) - > watchdog /13 (43) 5
watchdog /13 (43) - > swapper ( 0) 5
swapper (0) - > watchdog /14 (46) 5
watchdog /14 (46) - > swapper (0) 5
inactivo 859
------------------------------------------- -------------------
...
Podemos ver desde dónde se está cambiando el proceso y cuántas veces sucedió La última línea, la cantidad de veces que imprimo el inactivo, es decir, en este momento, el sistema no tiene nada que hacer, luego cambia al proceso inactivo (0) para que descanse.
A través de la investigación anterior, entenderemos claramente que la sobrecarga de nuestro sistema está ahí, de modo que podamos localizar el problema
Si desea ver el número de conexiones concurrentes de IIS, la forma más fácil y con
¿Quién es pakistaní? Esta persona es un joven aspirante, y el credo que respeta es noches pequeñas y
Para garantizar el funcionamiento estable de los servidores de la empresa, es inú
Todo el mundo sabe que IBM WebSphere Application Server es el software de inf
Escritorio remoto no puede solicitar "equipo remoto ha finalizado la conexión" ¿cómo hacer?
El servicio APACHE de Windows + a menudo resuelve el problema
Aprenda a usar la capacidad de partición de Windows Server 2003
Las ventajas del servidor Blade y del servidor en rack están completamente contrastadas
Realizando Urlrewrite con Asp.net en Host Virtual
Restricciones de IP de Nginx para directorios
Solucione un error al instalar Nginx
¿Por qué servidor de gestión de red no se puede copia de seguridad automática de combate
Knowledge Academy: dos puntos principales para el hospedaje de servidores:
El sistema de Win 8 utiliza el método de grupo familiar
La desaparición del punto de restauración al sistema doble, ¿cómo reparar?
Cómo hacer que la visualización de miniaturas de WinXP sea más clara
¿Cómo bloquea el sistema Win7 la página de inicio para evitar que se modifique?
Modo de protección IE del sistema Vista
Utilizo un mapa de caracteres para ingresar símbolos fonéticos internacionales.
Win10 no puede identificar el disco duro por qué razón
10 Windows 7 absolutamente no puede desactivar el servicio
Batería del software de la batería de la computadora portátil cómo usar