Me gustaría hacer un análisis de nuestro servidor NFS para ayudar a localizar posibles cuellos de botella en nuestras aplicaciones. El servidor ejecuta SUSE Enterprise Linux 10.
El tipo de cosas que estoy buscando saber son:
- A qué archivos acceden los clientes
- Lectura / escritura de rendimiento por cliente
- Gastos generales impuestos por otras llamadas RPC
- Tiempo dedicado a esperar otras solicitudes NFS o E / S de disco para atender a un cliente
Ya conozco las estadísticas disponibles /proc/net/rpc/nfsd
y, de hecho, escribí una publicación de blog describiéndolas en profundidad. Lo que estoy buscando es una forma de profundizar y ayudar a comprender qué factores contribuyen al rendimiento visto por un cliente en particular. Quiero analizar el papel que desempeña el servidor NFS en el rendimiento de una aplicación en nuestro clúster para poder pensar en formas de optimizarlo mejor.
linux
performance
nfs
Kamil Kisiel
fuente
fuente
Respuestas:
Solo una idea, intente oler el tráfico nfs con wireshark. Podría decirte qué usuario accedió a qué archivo:
fuente
Tengo que decir que de todas las diferentes utilidades estadísticas disponibles para uno, ¡nfsstat es, con mucho, el peor! Te da la capacidad de mirar un montón de contadores, pero eso es todo. Si los mira dos veces, TIENE que hacer el trabajo de tratar de determinar cuánto cambió cada contador y si desea saber la tasa de cambio, entonces debe dividir por la cantidad de segundos entre muestras. Para ser justos, nfsstat se remonta a muchos años cuando las cosas todavía eran bastante crudas y ahora nadie se ve obstaculizado por cambiar el formato de salida porque probablemente rompería muchas cosas.
En cuanto al uso de collectl para monitorear nfs, proporciona salida nfsstat en un formato mucho más fácil de leer, pero lo que es aún mejor, puede dejar que se ejecute durante horas o días y reproducir los datos que había recopilado en segundo plano. En cuanto a la solicitud para ver qué procesos están haciendo, collectl también puede recopilar datos de proceso, incluida la cantidad de E / S que está haciendo cada proceso e incluso reproducirlos mostrando los principales usuarios de E / S. También puede usar la función superior en tiempo real.
Si desea ver el tema de los discos, los mismos colectivos también pueden hacerlo y mostrar todo en una pantalla coordinada.
Compruébalo ... -marca
fuente
collectl (especialmente su subsistema NFS ) es una utilidad muy buena que puede ser útil para su análisis pero no coincide con su lista de requisitos. No conozco ninguna utilidad de Linux que lo haga.
(Por favor, permítanme añadir esta nota fuera de tema: No es software que se ajuste a sus necesidades: de Sun basadas en DTrace Analytics (pdf) . - pero por desgracia no está disponible en Linux Usted encontrará una gran cantidad de grandes ejemplos en el blog de Brendan Gregg que ilustran las capacidades de esta herramienta)
fuente
Echa un vistazo a nfsstat. No muestra todo lo que desea, pero al menos un buen subconjunto.
http://linux.die.net/man/8/nfsstat
fuente
En mi opinión, esto resalta exactamente el problema con las herramientas actuales. Aquí se mencionan al menos 3, incluidos nfsstat, iostat e iotop. Luego hubo una mención pasajera de Wirehare y nfsreplay. ¿Esto realmente suena como una forma normal de hacer las cosas? Aparte de wireshark con una categoría propia, ¿no preferirías 1 herramienta?
Para los abridores, aunque encuentro que la salida de iostat es muy útil, es demasiado difícil de leer con todos esos .00 en los números. Collectl informa exactamente los mismos datos pero con un formato mucho más fácil a la vista. Ya sabes lo que pienso de nfsstat y dado que collectl puede reproducir cualquier dato no hay necesidad de una utilidad de 'reproducción'. En cuanto a 'iotop', collect también puede mostrar procesos ordenados por cualquier cosa incluida I / O.
Así que allí también lo tienes todo, completo con marcas de tiempo. Si necesita un intervalo de monitoreo más fino, siempre puede reducir el muestreo a 0.1 o 0.5 segundos o algo intermedio, aunque generará más sobrecarga si supervisa los procesos tan rápido, pero lo haría con cualquier utilidad de monitoreo de procesos.
Y el bono final es todo lo que recolectas con collectl que puedes cargar en una hoja de cálculo y trazar fácilmente O usar colplot que es parte de collectl-utils.
-marca
fuente
Es posible que desee probar
nfswatch
desde http://nfswatch.sourceforge.netPuede ver algunos resultados de muestra en http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/
nfswatch
es algo así comotop
(aunque no estoy seguro de si hay un modo por lotes). Una vez que se está ejecutando, puede cambiar o cambiar la pantalla presionando una tecla (por ejemplo, "c" para mostrar clientes NFS usando su servidor NFS).En mi breve prueba, sin embargo,
nfswatch
no parece funcionar con NFSv4.fuente
No tengo mejores respuestas en este momento, sin embargo, puede seguir el disco IO con bastante precisión con
Proporciona cifras muy útiles, particularmente el tamaño promedio de la cola y el tiempo de espera (en ms) para sus E / S. Se muestra con bastante facilidad si sus discos son un cuello de botella y si el cuello de botella es el recuento de E / S o el rendimiento.
Luego con
Verá las conexiones del cliente y los bytes transferidos desde cada cliente en tiempo real. bucle en él para datos continuos. Sería bastante fácil crear un script que proporcione datos continuos ... Estoy trabajando en ello :)
Ahora para obtener IO por proceso, puede usar el excelente iotop . Sin embargo, todavía tiene que encontrar una manera de hacer coincidir los procesos nfsd con los clientes.
En cuanto a qué archivos está accediendo qué cliente, estoy atascado. En realidad, los archivos actualmente leídos / escritos desde un cliente NFS ni siquiera aparecen en la salida lsof.
Solo para expandir el netstat, use watch -d para ver cómo cambian las cosas y ordenar por host
fuente
Es posible que desee ver nfsreplay. Podría ayudarlo a descubrir qué está sucediendo. También puede encontrar útil la información y los enlaces aquí.
fuente