análisis de performance - uba - 2016 06 07 - hecsa

14
PERFORMANCE Hernán Saltiel (HeCSa) CaFeLUG - AOSUG en la UBA

Upload: others

Post on 20-Oct-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Análisis de Performance - UBA - 2016 06 07 - HeCSa

PERFORMANCE

Hernán Saltiel (HeCSa)

CaFeLUG - AOSUG

en la UBA

Page 2: Análisis de Performance - UBA - 2016 06 07 - HeCSa

DEFINICIÓN

Performance es la medida o cuantificación de la velocidad/resultado con que se realiza una tarea o

proceso.

Depende no sólo del microprocesador sino de la suma de sus componentes, como lo son la

memoria, el bus, el almacenamiento, el software que se ejecuta, etc.

Page 3: Análisis de Performance - UBA - 2016 06 07 - HeCSa

ANÁLISIS

●Observabilidad● Cómo medimos un sistema? ● De qué herramientas disponemos en cada entorno?

●Metodologías● Qué no hacer (uso sólo lo que conozco, o lo que encuentro en Gxxgle, hago tuning al

azar)● Qué hacer (acotación, análisis focalizado, análisis de recursos, de carga, etc.)

●Benchmarks● Evaluación de productos● Armar entornos de prueba realistas● Probar lo que quiero medir● Preguntarnos por qué no es mucho más rápido

●Profiling● Consecuencia directa del proceso de benchmarking● Análisis de cada componente de un sistema y su interrelación

●Traceo● Comprender qué ocurre dentro de un entorno cuando algo está en ejecución● Uso de probes implementados en el sistema operativo, o algún framework agregado

●Tuning● Ajuste de parámetros de cada componente del entorno analizado

Page 4: Análisis de Performance - UBA - 2016 06 07 - HeCSa

PREGUNTAS

●Cuántos procesadores? Cuántos cores por procesador?●Caché por procesador? CISC o RISC?●Cuánta memoria?●Qué motherboard?●Cuáles y cuántos discos?●Qué RAID configurar?●NAS o SAN?●Fibra o Cobre?●Más swap o más RAM?●Escalabilidad horizontal o vertical?●Virtualizo con qué tecnología?●Las VMs sobre filesystem o raw devices?●Base de datos o archivos?●Qué tecnología de base de datos? ●Qué “marca” de base de datos?●Qué lenguaje de programación?●Cluster o balanceo de carga?●Qué interfaces de red? ●Cuántas interfaces de red?●Cuántos y cuáles switches?●Tipo de red, cuántas subredes?

Page 5: Análisis de Performance - UBA - 2016 06 07 - HeCSa

ESCENARIOS

Page 6: Análisis de Performance - UBA - 2016 06 07 - HeCSa

HERRAMIENTAS

Page 7: Análisis de Performance - UBA - 2016 06 07 - HeCSa

EJEMPLOS

[hecsa@sdf1 ~]$ uptime 01:40:17 up 2 days, 39 min, 1 user, load average: 0.55, 0.62, 0.73

[hecsa@sdf1 ~]$ grep processor /proc/cpuinfo | wc -l8

Si la carga (load average) es superior al número de procesadores, tenemos un indicador de algo que está sobrecargando al sistema. Indica que hay procesos esperando por algo de tiempo de procesador para ser ejecutados.

top - 01:45:29 up 2 days, 44 min, 1 user, load average: 1.06, 0.61, 0.68Tasks: 295 total, 1 running, 294 sleeping, 0 stopped, 0 zombie%Cpu(s): 59.0 us, 3.1 sy, 0.0 ni, 36.3 id, 1.6 wa, 0.0 hi, 0.0 si, 0.0 stGiB Mem : 15.644 total, 0.225 free, 7.899 used, 7.520 buff/cacheGiB Swap: 29.803 total, 29.785 free, 0.018 used. 6.908 avail Mem PID USER PR NI VIRT RES %CPU %MEM TIME+ S COMMAND 23844 hecsa 20 0 4801.7m 409.1m 442.1 2.6 0:35.89 S java 6751 hecsa 20 0 987.5m 154.0m 15.1 1.0 85:03.05 S chromium 4280 hecsa 20 0 985.8m 141.6m 5.9 0.9 47:24.70 S chromium 6762 hecsa 20 0 1017.9m 176.8m 5.9 1.1 49:58.27 S chromium 2209 hecsa 20 0 2506.2m 1.294g 4.6 8.3 27:36.51 S thunderbird

Page 8: Análisis de Performance - UBA - 2016 06 07 - HeCSa

EJEMPLOStiptop -Tasks: 823 total, 18 displayed screen 0: default

PID [ %CPU] %SYS P Mcycle Minstr IPC %MISS %BMIS %BUS COMMAND 2303+ 6.4 3.0 3 66.93 6.18 0.09 10.49 6.83 0.8 pulseaudio 4162+ 4.9 0.0 0 ? ? ? ? ? ? thunderbird 2784+ 3.0 0.0 1 1.95 0.96 0.49 0.86 1.30 0.1 chromium13640+ 2.5 0.5 7 ? ? ? ? ? ? chromium 3283+ 2.0 0.0 4 ? ? ? ? ? ? wps 2196+ 1.5 0.0 5 29.29 21.58 0.74 0.80 0.70 0.1 xfwm415869 1.5 0.5 2 17.95 26.97 1.50 0.06 0.22 0.0 tiptop 2558+ 1.0 0.0 4 26.63 11.67 0.44 2.08 1.59 0.2 panel-24-weathe 3332+ 1.0 0.5 2 ? ? ? ? ? ? chromium 2287 0.5 0.5 7 0.96 0.16 0.17 2.22 5.18 0.4 xscreensaver 2371+ 0.5 0.5 1 1.43 0.18 0.12 9.57 4.53 0.6 pamac-tray 2557 0.5 0.5 0 6.93 3.10 0.45 1.56 1.66 0.2 panel-20-netloa 3189+ 0.5 0.0 3 ? ? ? ? ? ? chromium 3819+ 0.5 0.5 3 ? ? ? ? ? ? chromium 3885+ 0.5 0.0 3 ? ? ? ? ? ? chromium 3906+ 0.5 0.0 5 ? ? ? ? ? ? chromium 3931+ 0.5 0.5 0 ? ? ? ? ? ? chromium 8740+ 0.5 0.0 2 ? ? ? ? ? ? soffice.bin

tiptop es una suerte de “TOP” muy simplificado, con algunos campos adicionales, muy personalizable.

Page 9: Análisis de Performance - UBA - 2016 06 07 - HeCSa

EJEMPLOS

[hecsa@sdf1 ~]$ mpstat -A 5 5Linux 4.4.12-1-MANJARO (sdf1) 06/07/2016 _x86_64_ (8 CPU)

05:44:52 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle05:44:57 PM all 4.63 0.00 1.25 0.20 0.00 0.03 0.00 0.00 0.00 93.9005:44:57 PM 0 3.63 0.00 1.41 1.41 0.00 0.20 0.00 0.00 0.00 93.3505:44:57 PM 1 1.80 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.1905:44:57 PM 2 9.39 0.00 2.35 0.00 0.00 0.00 0.00 0.00 0.00 88.2605:44:57 PM 3 1.61 0.00 1.21 0.00 0.00 0.00 0.00 0.00 0.00 97.1805:44:57 PM 4 5.01 0.00 2.20 0.00 0.00 0.00 0.00 0.00 0.00 92.7905:44:57 PM 5 6.81 0.00 0.80 0.00 0.00 0.00 0.00 0.00 0.00 92.3805:44:57 PM 6 7.03 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 91.9705:44:57 PM 7 1.60 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 98.20

05:44:52 PM CPU intr/s05:44:57 PM all 915.0005:44:57 PM 0 5915.8005:44:57 PM 1 164.0005:44:57 PM 2 197.2005:44:57 PM 3 93.0005:44:57 PM 4 178.0005:44:57 PM 5 125.6005:44:57 PM 6 102.4005:44:57 PM 7 33.40

Mpstat es muy útil cuando tenemos diversos threads con consumos muy diferentes entre sí.

Page 10: Análisis de Performance - UBA - 2016 06 07 - HeCSa

EJEMPLOS

[hecsa@sdf1 ~]$ iostat -xmdz 1Linux 4.4.11-1-MANJARO (sdf1) 06/07/2016 _x86_64_ (8 CPU)

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s ...Sda 0.08 2.27 2.30 4.63 0.05 0.16 ...Scd0 0.00 0.00 0.02 0.00 0.00 0.00 ...

rrqm/s: Importante por mostrar los pedidos de lectura encolados en un determinado dispositivo.wrqm/s: Ídem, pero de escritura.

Esto es general para el sistema, para un proceso en particular:

[hecsa@sdf1 ~]$ pidstat -d -p 23844 5 10Linux 4.4.11-1-MANJARO (sdf1) 06/07/2016 _x86_64_ (8 CPU)

02:12:07 AM UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command02:12:12 AM 1000 23844 0.00 0.00 0.00 0 java02:12:17 AM 1000 23844 0.00 0.00 0.00 0 java02:12:22 AM 1000 23844 693.60 172.00 38.40 0 java

kB_ccwr/s: Cantidad de KB que el proceso truncó de escribir en disco.

Page 11: Análisis de Performance - UBA - 2016 06 07 - HeCSa

EJEMPLOS[hecsa@sdf1 ~]$ sudo strace -f -p 2902strace: Process 2902 attachedrestart_syscall(<... resuming interrupted restart_syscall ...>) = 1read(3, 0x7fff54131620, 16) = -1 EAGAIN (Resource temporarily unavailable)write(3, "\1\0\0\0\0\0\0\0", 8) = 8recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"l\1\0\1\0\0\0\0\5\0\0\0v\0\0\0\1\1o\0\1\0\0\0/\0\0\0\0\0\0\0"..., 2048}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 136recvmsg(6, 0x7fff541314c0, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)write(3, "\1\0\0\0\0\0\0\0", 8) = 8poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=10, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}, {fd=22, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=25, events=POLLIN}, {fd=26, events=POLLIN}, {fd=27, events=POLLIN}, {fd=28, events=POLLIN}], 24, 0) = 1 ([{fd=3, revents=POLLIN}])sendmsg(6, {msg_name(0)=NULL, msg_iov(2)=[{"l\2\1\1\306\2\0\0f\0\0\0\37\0\0\0\6\1s\0\5\0\0\0:1.98\0\0\0"..., 48}, {"\301\2\0\0<!DOCTYPE node PUBLIC \"-//fr"..., 710}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 758

Page 12: Análisis de Performance - UBA - 2016 06 07 - HeCSa

EJEMPLOS[hecsa@sdf1 ~]$ sudo netstat -sIp: 7396936 total packets received 345 with invalid headers 794817 with invalid addresses 0 forwarded 0 incoming packets discarded...

Con netstat se puede conocer el comportamiento de la red a un nivel bastante detallado. Si encontramos algo sospechoso, podemos ejecutar “tcpdump” para analizar este comportamiento en profundidad.

[hecsa@sdf1 ~]$ sudo tcpdump -i wlp8s0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on wlp8s0, link-type EN10MB (Ethernet), capture size 262144 bytes02:18:34.520547 IP sdf1.44956 > iguazu.dattaweb.com.imap: Flags [P.], seq 1847472885:1847472920, ack 4212350107, win 46720, length 3502:18:34.549472 IP sdf1.41352 > nrdns07.fibertel.com.ar.domain: 48764+ PTR? 200.111.58.200.in-addr.arpa. (45)02:18:34.557330 IP iguazu.dattaweb.com.imap > sdf1.44956: Flags [P.], seq 1:51, ack 35, win 15544, length 5002:18:34.557365 IP sdf1.44956 > iguazu.dattaweb.com.imap: Flags [.], ack 51, win 46720, length 0

Con este tipo de herramientas se puede saber si hay tráfico no deseado, o excesivo por algún proceso que no está haciendo lo esperado.

Page 13: Análisis de Performance - UBA - 2016 06 07 - HeCSa

EJEMPLOS

[hecsa@sdf1 ~]$ sar -n DEV 1Linux 4.4.11-1-MANJARO (sdf1) 06/07/2016 _x86_64_ (8 CPU)

02:40:09 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil02:40:10 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0002:40:10 AM vboxnet0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0002:40:10 AM enp9s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0002:40:10 AM wlp8s0 1.00 0.00 0.06 0.00 0.00 0.00 0.00 0.00

rxpck/s: Paquetes recibidos por segundo. rxcmp/s: Ídem, comprimidos. rxkB/s: kB recibidos por segundo. tcpck/s: Paquetes transmitidos por segundo. txcmp/s: Ídem, comprimidos. txkB/s: kB transmitidos por segundo.rxmcst/s: Paquetes de multicast recibidos por segundo.txmcst/s: Ídem, transmitidos.%ifutil: Porcentaje de uso de la interfaz de red mencionada.

Page 14: Análisis de Performance - UBA - 2016 06 07 - HeCSa

¡MUCHAS GRACIAS!

P&R

[email protected]@hcsaltiel