7 votos

iotop muestra kswapd0 en el 99,99% con 0% de DISCO de LECTURA y ESCRITURA de DISCO

Tengo un pesado postgres consulta. Se tarda más de diez minutos para que se ejecute. Me gustaría actualizar mi hardware para que se ejecute más rápido. Creo que más de RAM te va a ayudar, pero mi placa base está lleno así que voy a necesitar toda una nueva placa base. No quiero invertir menos sé que voy a obtener mejores resultados. He aquí lo que yo veo en iotop:

Total de LECTURA de DISCO: 46.81 M/s | Total de ESCRITURA de DISCO: 0.00 B/s
 TID PRIO USUARIO DE LECTURA DE DISCO DE ESCRITURA DE DISCO SWAPIN IO> COMANDO 
 27/4 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % [kswapd0]
 2514/4 postgres 46.81 M/s 2.45 M/s 0.00 % 18.36 % postgres: postgres db1 127.0.0.1(55328) SELECCIONE
 1/4 de la root 0.00 B/s 0.00 B/s 0.00% 0.00 % init
 2/4 root 0.00 B/s 0.00 B/s 0.00% 0.00 % [kthreadd]
 3/4 de la root 0.00 B/s 0.00 B/s 0.00% 0.00 % [ksoftirqd/0]
 4/4 root 0.00 B/s 0.00 B/s 0.00% 0.00 % [kworker/0:0]
 5/4 root 0.00 B/s 0.00 B/s 0.00% 0.00 % [kworker/u:0]
 6 rt/4 root 0.00 B/s 0.00 B/s 0.00% 0.00 % [de la migración/0]
 7 rt/4 root 0.00 B/s 0.00 B/s 0.00% 0.00 % [watchdog/0]
 8 rt/4 root 0.00 B/s 0.00 B/s 0.00% 0.00 % [de la migración/1]
 9/4 root 0.00 B/s 0.00 B/s 0.00% 0.00 % [kworker/1:0]
 10/4 root 0.00 B/s 0.00 B/s 0.00% 0.00 % [ksoftirqd/1]

Observe cómo la kswapd0 es golpear el disco duro de la mayoría (99.99% IO). Sin embargo, el DISCO de LECTURA y ESCRITURA de DISCO y SWAPIN de kswap0 son todos cero. ¿Qué es kswap0 haciendo? Es realmente golpear a mi disco duro? Iba a agregar más memoria RAM a este sistema de ayuda a todos?

2voto

voretaq7 Puntos 63415

Se están acercando a este desde el ángulo equivocado. Sólo después de la optimización de SQL debe considerar la posibilidad de tirar más de RAM/CPU/los Disco/S de ancho de banda) en el problema, y abordar el problema como usted ha identificado.

Primero pedir Postgres a EXPLAIN (o EXPLAIN ANALYZE) cómo se realiza la consulta.
Optimizar el amor gatitos de eso, y entonces, si usted todavía tiene problemas de rendimiento investigar más para determinar dónde está el cuello de botella es (sonassi dio algunas buenas sugerencias sobre cosas que usted debe mirar, además de a iotop).

Si está ejecutando su pila de web y base de datos en el mismo servidor, ahora es un buen momento para dividir así...

0voto

Steve Mould Puntos 141

estás 110% seguro de que no hay problemas con el IO-sub-sistema - por ejemplo, todas las unidades de disco duro están bien [smart / raid auto de prueba], de escritura de la memoria caché está habilitada [si tiene el respaldo de la batería de memoria caché en la tarjeta raid]?

no es postgres saturando el IO por 48MB/s de transferencia de lectura?

0voto

Dukes Puntos 74

kswapd están haciendo parte del trabajo requerido para lidiar con la memoria virtual en linux. Así que tener al 100% podría sugerir que se está haciendo demasiado trabajo, aunque también podría ser que es sólo muriéndose de hambre de los recursos tomadas por el PG proceso (por ejemplo, no tener memoria RAM a la izquierda para buffers de e / s).

Me gustaría comprobar la cantidad de memoria ram se utiliza/no utilizados a través de las herramientas habituales.

En cuanto a la falta de estadísticas, además de la IO columna para kswapd0, no estoy seguro de que la siguiente explicación es correcta, pero puede ser que el kernel no se traza swapin/swapout en el espacio del kernel (que es donde kswapd vida), porque Linux simplemente no swap nada para páginas asignadas en el espacio del kernel.

0voto

Se ha podido hablar de cualquier otras piezas importantes de información para el diagnóstico.

free -m
cat /proc/meminfo
top -b

Es probable que la e/S de kswapd acaba de pseudo informó de que de postgres. Uno de los procesos que probablemente estará en el D el estado, pero todos los datos de los comandos anteriores confirman. Aunque es curioso que swapin está vacía.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: