optimización de código en proyectos de software libre · http servers flisol santiago 2011 / ...

26
Optimización de código en proyectos de Software Libre Eduardo Silva <[email protected]> ; twitter.com/edsiper

Upload: others

Post on 03-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Optimización de códigoen proyectos de Software Libre

Eduardo Silva <[email protected]> ; twitter.com/edsiper

Page 2: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

SoftwareFlisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 3: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

¿ Optimizar ?

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 4: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

✔ Distintas necesidades- Servidores

- Desktop - Laptop - Teléfonos - Embedded devices

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 5: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 6: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

El Hardware es limitado

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 7: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Chrome v/s Firefox

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 8: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Bajemos un peldaño...

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 9: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

GNU/LinuxFlisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 10: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Linux Kernel

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 11: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Linux Kernel - Scheduler

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 12: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Linux Kernel - Scheduler

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 13: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

¿ quien primero ?

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 14: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Benchmarks

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Page 15: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

HTTP ServersFlisol Santiago 2011 / http://edsiper.linuxchile.cl

Apache Benchmark

Permite obtener una “pseudo” idea de cuantos“requests” el servidor puede procesar por segundo

ab -n 15000 -c20 -k http://SERVER:IP/archivo

Page 16: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

HTTP ServersFlisol Santiago 2011 / http://edsiper.linuxchile.cl

Apache Benchmark – Live Test

Archivo : 100 bytes

NginX : v1.0 port = 2002Cherokee : v1.2.2 port = 2003Apache2 : v2.2.17 port = 80Monkey : v0.14.0 port = 2001

ab -n 15000 -c 20 -k http://localhost/100b.txt

Page 17: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Monkey NginX Cherokee Apache0

5000

10000

15000

20000

25000

30000

Requests/Second

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Resultados: req/s

Page 18: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Y despues de...

Page 19: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Uso de memoria

Monkey NginX Cherokee0

200

400

600

800

1000

1200

1400

1600

Uso de Memoria

Page 20: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Monkey-project.com

Page 21: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Valgrind.org

Page 22: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Valgrind

- Massif : consumo de memoria - Callgrind: costo por llamada a funciones

Page 23: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Valgrind

Valgrind –tool=massif programa

Page 24: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Valgrindvalgrind –tool=callgrind programa

Page 25: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

¿ Como optimizar ?

- Uso eficiente de memoria- Reducir I/O a discos- Procesos/Hebras/CPU- Arquitectura

Page 26: Optimización de código en proyectos de Software Libre · HTTP Servers Flisol Santiago 2011 /  Apache Benchmark – Live Test Archivo : 100 bytes NginX : v1.0 port = 2002

Flisol Santiago 2011 / http://edsiper.linuxchile.cl

Preguntas

[email protected]/edsiper