Basic Performance Tools

Basic Performance Tools

A brief talk on basic linux performance tools: sysstat, strace and perf.

Ae4eba7276de2b7b09199c4492f714cd?s=128

Luis Belloch

July 14, 2016
Tweet

Transcript

  1. Basic Performance Tools Luis Belloch July 2016

  2. Basics h t o p $ h t o p

    t i m e $ t i m e p y t h o n l o o p s . p y r e a l 0 m 6 . 6 9 1 s u s e r 0 m 6 . 3 3 3 s s y s 0 m 0 . 3 5 6 s 2
  3. Basics d m e s g $ d m e

    s g | t a i l [ 4 8 2 7 . 0 4 4 9 7 8 ] O u t o f m e m o r y : K i l l p r o c e s s 1 7 5 1 ( p y t h o n ) s c o r e 9 5 2 o r s a c r i f i c e c h i l d [ 4 8 2 7 . 0 4 4 9 7 8 ] K i l l e d p r o c e s s 1 7 5 1 ( p y t h o n ) t o t a l - v m : 2 5 4 3 5 0 8 k B , a n o n - r s s : 1 9 2 4 7 2 4 k B , f i 3
  4. Basics v m s t a t r: número de

    procesos ejecutandose r e g l a : r < n ú m . p r o c e s a d o r e s free: memoria si,so: si es mayor que 0 está paginando, no hay memoria us,sy: user time, system time wa,st: puntos de espera, cuellos de botella en disco $ v m s t a t 1 p r o c s - - - - - - - - - - - m e m o r y - - - - - - - - - - - - - s w a p - - - - - - - i o - - - - - s y s t e m - - - - - - c p u - - - - r b s w p d f r e e b u f f c a c h e s i s o b i b o i n c s u s s y i d w a 2 0 2 6 2 3 2 1 8 1 6 4 2 0 9 7 8 8 1 2 9 2 8 4 2 3 2 3 1 4 1 2 5 4 2 9 7 3 9 0 0 9 9 0 0 0 2 6 2 3 2 1 8 1 6 3 9 6 9 7 8 8 1 2 9 2 8 4 0 0 0 0 5 3 0 5 2 0 0 1 0 0 0 4
  5. $ s u d o a p t - g

    e t i n s t a l l s y s s t a t 5
  6. m p s t a t Buscar desequilibrios de carga,

    % CPUs $ m p s t a t - P A L L 1 p i d s t a t Lo mismo, pero desglosando por procesos $ p i d s t a t 1 6
  7. i o s t a t ¿Existen problemas de E/S

    con los discos? $ i o s t a t - x z 1 a v g - c p u : % u s e r % n i c e % s y s t e m % i o w a i t % s t e a l % i d l e 0 . 2 1 0 . 0 0 0 . 1 0 0 . 2 8 0 . 0 0 9 9 . 4 1 D e v i c e : r r q m / s w r q m / s r / s w / s r k B / s w k B / s a v g r q - s z a v g q u - s z a w a i t r _ s d a 9 . 7 1 1 0 4 . 7 7 2 . 1 6 5 . 8 1 7 8 . 5 9 4 8 5 . 4 3 1 4 1 . 4 4 0 . 3 9 4 9 . 2 5 7
  8. s a r Consumos Conexiones $ s a r -

    n T C P , E T C P 1 0 7 : 2 8 : 2 3 A M a c t i v e / s p a s s i v e / s i s e g / s o s e g / s 0 7 : 2 8 : 2 4 A M 0 . 0 0 0 . 0 0 2 . 9 7 2 . 9 7 0 7 : 2 8 : 2 3 A M a t m p t f / s e s t r e s / s r e t r a n s / s i s e g e r r / s o r s t s / s 0 7 : 2 8 : 2 4 A M 0 . 0 0 0 . 0 0 0 . 0 0 0 . 0 0 0 . 0 0 $ s a r - n D E V 1 0 7 : 2 6 : 5 9 A M I F A C E r x p c k / s t x p c k / s r x k B / s t x k B / s r x c m p / s t x c m p / s 0 7 : 2 7 : 0 0 A M e t h 0 3 . 9 6 3 . 9 6 0 . 2 5 0 . 4 3 0 . 0 0 0 . 0 0 0 7 : 2 7 : 0 0 A M l o 0 . 0 0 0 . 0 0 0 . 0 0 0 . 0 0 0 . 0 0 0 . 0 0 8
  9. s t r a c e 9

  10. ¿Qué archivos abre un proceso? $ s t r a

    c e - e o p e n w h o o p e n ( " / e t c / l d . s o . c a c h e " , O _ R D O N L Y | O _ C L O E X E C ) = 3 o p e n ( " / l i b / x 8 6 _ 6 4 - l i n u x - g n u / l i b c . s o . 6 " , O _ R D O N L Y | O _ C L O E X E C ) = 3 o p e n ( " / u s r / l i b / l o c a l e / l o c a l e - a r c h i v e " , O _ R D O N L Y | O _ C L O E X E C ) = 3 o p e n ( " / v a r / r u n / u t m p " , O _ R D O N L Y | O _ C L O E X E C ) = 3 o p e n ( " / u s r / l i b / x 8 6 _ 6 4 - l i n u x - g n u / g c o n v / g c o n v - m o d u l e s . c a c h e " , O _ R D O N L Y ) = 3 o p e n ( " / e t c / l o c a l t i m e " , O _ R D O N L Y | O _ C L O E X E C ) = 3 v a g r a n t p t s / 0 2 0 1 6 - 0 7 - 1 4 0 1 : 1 5 ( 1 9 2 . 1 6 8 . 1 0 2 . 1 2 0 ) 10
  11. Estadisticas $ s t r a c e - c

    p y t h o n l o o p s . p y % t i m e s e c o n d s u s e c s / c a l l c a l l s e r r o r s s y s c a l l - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 1 . 3 1 0 . 0 4 0 1 8 8 6 7 2 8 8 b r k 3 6 . 9 7 0 . 0 2 4 2 3 7 7 1 3 3 4 m u n m a p 0 . 3 2 0 . 0 0 0 2 1 1 1 1 7 4 1 0 8 o p e n 0 . 3 1 0 . 0 0 0 2 0 0 2 1 2 3 r e a d 11
  12. ¿Qué datos se reciben? $ s t r a c

    e - o n e t t r a c e . t x t - e r e c v f r o m w g e t " h t t p : / / d o w n l o a d . f i n a n c e . y a h o o . c o m / d / q u o t e s . r e c v f r o m ( 4 , " ^ \ 2 7 1 \ 2 0 1 \ 2 0 0 \ 0 \ 1 \ 0 \ 3 \ 0 \ 0 \ 0 \ 0 \ 1 0 d o w n l o a d \ 7 f i n a n c e \ 5 y a " . . . , 1 0 2 4 , 0 , { s a _ f r e c v f r o m ( 4 , " \ 3 6 1 ( \ 2 0 1 \ 2 0 0 \ 0 \ 1 \ 0 \ 3 \ 0 \ 0 \ 0 \ 0 \ 1 0 d o w n l o a d \ 7 f i n a n c e \ 5 y a " . . . , 1 0 2 4 , 0 , { s a _ f r e c v f r o m ( 4 , " H T T P / 1 . 1 2 0 0 O K \ r \ n D a t e : T h u , 1 4 J " . . . , 5 1 1 , M S G _ P E E K , N U L L , N U L L ) = 5 1 1 r e c v f r o m ( 4 , " a c h e T r a f f i c S e r v e r [ c M s S f ] ) \ r \ n S e r " . . . , 5 1 2 , M S G _ P E E K , N U L L , N U L L ) = 1 7 4 12
  13. ¿Qué está haciendo el programa? $ t i m e

    p y t h o n c l i e n t . p y & [ 1 ] 2 3 6 1 Podemos mirar el stack de llamadas, para ver dónde está esperando. $ s u d o c a t / p r o c / $ ( p g r e p - f c l i e n t . p y ) / s t a c k [ < f f f f f f f f 8 1 6 2 5 8 4 1 > ] s k _ w a i t _ d a t a + 0 x d 1 / 0 x e 0 [ < f f f f f f f f 8 1 6 7 f 0 6 a > ] t c p _ r e c v m s g + 0 x 5 5 a / 0 x c d 0 [ < f f f f f f f f 8 1 6 a 7 3 5 b > ] i n e t _ r e c v m s g + 0 x 6 b / 0 x 8 0 [ < f f f f f f f f 8 1 6 1 e 5 f 8 > ] s o c k _ r e c v m s g + 0 x d 8 / 0 x f 0 [ < f f f f f f f f 8 1 6 2 1 4 2 9 > ] S Y S C _ r e c v f r o m + 0 x e 9 / 0 x 1 7 0 [ < f f f f f f f f 8 1 6 2 2 0 3 e > ] S y S _ r e c v f r o m + 0 x e / 0 x 1 0 [ < f f f f f f f f 8 1 7 5 0 9 9 d > ] s y s t e m _ c a l l _ f a s t p a t h + 0 x 1 a / 0 x 1 f [ < f f f f f f f f f f f f f f f f > ] 0 x f f f f f f f f f f f f f f f f 13
  14. r e d i s _ p u b s

    u b . p y i m p o r t r e d i s r = r e d i s . S t r i c t R e d i s ( h o s t = ' l o c a l h o s t ' , p o r t = 6 3 7 9 , d b = 0 ) r . p u b l i s h ( " c a n a l " , " h e l l o ! " ) 14
  15. r e d i s _ p u b s

    u b . p y s t r a c e - q - o p u b s u b . t x t p y t h o n r e d i s _ p u b s u b . p y s o c k e t ( P F _ I N E T , S O C K _ S T R E A M , I P P R O T O _ T C P ) = 3 s e t s o c k o p t ( 3 , S O L _ T C P , T C P _ N O D E L A Y , [ 1 ] , 4 ) = 0 f c n t l ( 3 , F _ G E T F L ) = 0 x 2 ( f l a g s O _ R D W R ) f c n t l ( 3 , F _ S E T F L , O _ R D W R ) = 0 c o n n e c t ( 3 , { s a _ f a m i l y = A F _ I N E T , s i n _ p o r t = h t o n s ( 6 3 7 9 ) , s i n _ a d d r = i n e t _ a d d r ( " 1 2 7 . 0 . 0 . 1 " f c n t l ( 3 , F _ G E T F L ) = 0 x 2 ( f l a g s O _ R D W R ) f c n t l ( 3 , F _ S E T F L , O _ R D W R ) = 0 s e n d t o ( 3 , " * 3 \ r \ n $ 7 \ r \ n P U B L I S H \ r \ n $ 5 \ r \ n c a n a l \ r \ n $ 1 1 \ r " . . . , 4 6 , 0 , N U L L , 0 ) = 4 6 b r k ( 0 x 1 a f 2 0 0 0 ) = 0 x 1 a f 2 0 0 0 r e c v f r o m ( 3 , " : 1 \ r \ n " , 6 5 5 3 6 , 0 , N U L L , N U L L ) = 4 r t _ s i g a c t i o n ( S I G I N T , { S I G _ D F L , [ ] , S A _ R E S T O R E R , 0 x 7 f 9 4 a 4 3 b 5 c b 0 } , { 0 x 5 5 8 f d 0 , [ ] , S A _ R E S c l o s e ( 3 ) = 0 15
  16. p e r f 16

  17. $ p e r f s t a t -

    B p y t h o n l o o p s . p y P e r f o r m a n c e c o u n t e r s t a t s f o r ' p y t h o n l o o p s . p y ' : 6 8 6 1 . 2 6 1 9 1 7 t a s k - c l o c k # 0 . 9 9 8 C P U s u t i l i z e d 3 8 c o n t e x t - s w i t c h e s # 0 . 0 0 6 K / s e c 0 c p u - m i g r a t i o n s # 0 . 0 0 0 K / s e c 3 9 7 , 8 4 6 p a g e - f a u l t s # 0 . 0 5 8 M / s e c 6 . 8 7 6 9 2 0 3 0 0 s e c o n d s t i m e e l a p s e d 17
  18. $ p e r f t o p $ p

    y t h o n s u m a s . p y 18
  19. Utilizar p r u e b a 1 y p

    r u e b a 2 simultáneamente. $ p e r f r e c o r d - g - e ' s c h e d : s c h e d _ s w i t c h ' - e ' s c h e d : s c h e d _ s t a t _ s l e e p ' \ - e ' s c h e d : s c h e d _ s t a t _ b l o c k e d ' \ - - p y t h o n l o o p s . p y 19
  20. FlameGraphs $ g i t c l o n e

    h t t p s : / / g i t h u b . c o m / b r e n d a n g r e g g / F l a m e G r a p h $ p e r f r e c o r d - F 9 9 - a - g - - p y t h o n . . / c l i e n t . p y $ p e r f s c r i p t | . / s t a c k c o l l a p s e - p e r f . p l > o u t . p e r f - f o l d e d $ . / f l a m e g r a p h . p l o u t . p e r f - f o l d e d > p e r f - k e r n e l . s v g 20
  21. Thanks! @luisbelloch 21