You are on page 1of 16
Module 11 : La gestion des performances ATELIERS Tache 1 : Surveiller le systéme. Tiche 2 : Surveiller une commande avec time. 10mn Tiche 3 : Surveiller Ie systéme avec la commande sar. senses LOM Tiche 4 : La comptabilité ...eonnnnes one . sens LOM Téche 5 : Surveiller le systéme en pénurie de ressources... Smn Tache 6 : Limiter usage des ressources... 1Omn Tiche 7 : Modifier les parametres du noyau. seve Sim Tache 8 : Simuler une charge avec un benchmark, l’influence de la mémoire..... 15mn Tache 4: Surveiller le systeme 1. Activer les principales commandes de surveillance natives et observer les types d’informations recueillies. troot@linisd ~)# uptime 12:46:29. up 13-days, 142 (root@linuxt ~|# £r0e 3, 2-users, load average: 0200;'°0-00, 0-00 otal used fre shared buffers cached Mem: 449908 444876 5032 8 $2376. 309386 =/+ bat fers/cacl 73iaa 376764 Swap: 522072 Oo s22078 (root@linuxi <]# vmstat procs =: mEnOry: = systen== rb Spd free buff cache ines us sy id wa O=-0 (O-=-S032--62380- 309356 2939-0 -9-100-6 [reot@iinuxl =]# vmstat 5 3 memory - = sesystem== =--epu- £b swpd free buff cache si so. bi- bo. in-—cs-us ay id wa oo 0-032: 62364 909906 020 P97 99--0-0- 100-0. O66 O== S032 62384 309350 0-0-0 6 10az - 1709-01000 0-0 0503293840036 0-0" 0 1061 1670-0 100-0 (root@linuxd <7# w 12:46:56 up. 13-days) 14:13; 2 users, load average: 0.00, 0.00, 6.00 SER Try. FROM TOGING—- IDLE. dCRU"——PCEU WHAT foots! tkyhss = 22dan07 12days 0.015 0.01s bash root pts/I~ -raichu.pokenbn —‘Tusis- ~-.009--0:278 0.008 w root@linuxi =]# ps aux | head usER PID #CPU-RNEMvSz_-RSS TTY STAT START COMMAND ect 0.00.1 3084-=552-7 Sos: dandt init-15] Foot 2=0500,0--—-0--= 02 SN Jan21 (xsoftirad/0} root Sten Oe S<-“dan2i [events/oy ¥oot 49,0 0,0: 0 02 Be yan2i Ushelper] root S020 0 0g S<-“Janai [kacpia} root 999.0020 0-03 se [xblockd/0] Toot 5005000 00-2 s< [aio/oy root 300.0020 0 0 s Uehubal Foot 020-000 0-2 5 [swapd0) Troot@linuxl =]# netstat > fie (roct@linuxt ~]# head fie top - 13/03:10-up 13 days, 14:29, 2 users, load average: 0.02, 0.37, 0.32 asks: $4 total, 1 running, 53-sleeping, 0 stopped, 0 zombie paler: 0-13 us, 0.0% oy; -0.08 ni, 95.8% 4, 0.0F-wa, 0-08 hi, 0-08 si Mens 449908 total, 445260k used, _4648k- free, -62464k buffers Swap: 522072K total, ‘Ok-used, -522072k free, 309520K cached PID USER BR NE VIRT RES SHR S €CFU @MBM — TINE+ — COMMAND 1 root 160-3094 =552--472.$- 0.0 0.1- 0:00-66.init 2 root 34-19 = 0-0-0 S 0.0" 0.0 = --0:14,28 keortirad/0 3-root 5-10-00 0-S-0:0--0.0="-0:00.00 events/0 [root@tinuxt Remarque : On vient d’utiliser top en mode « batch ». On a fait 4 mesures a 10 secondes d’intervalle frost@linuxi’ =] watch free Every 2.0s: free ‘Sun feb 4°13:0a:50-2007 Peee eed Module 11 : La gestion des performances total used free “shared buffers cached Mem: fagg0g 445452 4456 0 e2a72 509884 =/+ bat fers/cache: 73396 376512 Swap: 522072 0 =$22072 Remarque : On arréte la commande par Ctrl-C. 2. On utilise les commandes du package systat (sauf sar). (root@linsd ~]# ape -g eysstat sysstat-5.0.5-11 held {root@linuxl -]4 xpm -ql sysstat | grep bin fast/binlostat ‘fase foin/mpstat fuse/bin/ear [root@linuxl ~]+ yum provides iostat sysstat i386 5.0.5-11.rheld {root@linuxl -]# mpetae Linux’ 2.6.9-42-E1 “(linuxi .pinguins)=--- 02/04/07 13:53:28 "CPU “$user —“Snice tsystem tiowait —““Rirg ‘soft tidle antr/s: 13153128-“all 0.07 0,00 0,04 0,040.02 0.00 99.83 1050.55. {root@linuxl =]# iostat Linux 2-6.9-42, BL (linaxi.pinguins) 02/04/07 fuser tnice —Agye siowait — tidie 0.07 000° 0,050.04 39.83 aware: Device: tps Bik vead/s Ble wrtn/s Blk read Blk wrtn da oz 4.52 3.14 1787853 —_godaa20 dai 0,00 0-00: 1370 30 dad 0.26 1,48 1755778. -—-2015048 8. 6.00 un 76 0. 0:00 i074 ° ce @.02 20970 33650. 0. ‘0.01 12636 o (Zoot@Linuxt =]4 wget "http://downloads sourceforge: niet/mc}/procinfo-18.tar.bz2* (root@Linuxi ~]# tar xvjf procinfo-18.tar.bs2 procings-18/ info=18/sdev-8 procinfo-18/procinfo.8 procinfe-18/procinfo.c Procinfo~18/procinfosh procinfo-18/routines-c procinfo-18/sockiist.8 procinfo=18/1sdev-pL procinfo-18/sceklist pL eeeinfo-18/procinfo-ism procinfo=8/READNE ens Module 11 : La gestion des performances Prdcinte=18/ciances procinfo-18/Makefile {root@linuxl <]# ed procingo-18 [root @linuxl procinfo-18]# 1e CHANGES README)~-tsdev-pt- —“procinfe.c-procinto.1m-sockiist-8 Makefile “isdev.8 procinfo.8 procinfo.h- routines.¢ —socklistiph froot@Linuxl procinfo-18]# make gcc “Wall -Wstrict-prototypes -02 = -o procinfo.o procinfo.< procinfo.c:19: warning: ‘rcsid' defined but not used ec “Rall-cwstrict-prototypes -02--c--6 routines. routines.c woutines.c:19: warning: "resid! defined but not used gcc “Wall -Wstrict-prototypes -s procinfo.o routines.c ~ltemcap. -o procinfa {xoot@Linuxl procinfo-18]# make install mkdix=p /usr/bin install procinfo /use/bin/procinfo install Isdev.pl: /usr/bin/lsdev dnstall-socklist.pl /usr/bin/socklist mkdir =p /usr/man/mans instal =m 644 procinfo.8 /asr/man/man8/procinto.& install =n 644“ Isdev.8 /ust/man/nand/Iedev.6 install -m 644 socklist.@ /uar/man/man®/eocklist.9 froot@linuxt procinfo-18]% procinfo Linux 2.6.9-42.EL (buildcentostbu: (Ainuxry -i3k (gee 3.4.6 20060404 ) #1 ICRU Menory: ‘Total Used Free Shared Buffers Men: 449908 371636 73272 0 55740 ‘Swap: S22072 0 522072 Beotup: Sun: Jan 21-22:43:28 2007 toad average: 10.00:0.00 0.00 1/54 15738 user 0.0% page in : 3 nice 0-08 page oat 6 system: 0:08 suap-in + ° idle 99-9¢- swap ont 0 uptine: context :154378682 tro: igoa2 deq li 145 18042 Aided irq 4: 6 9773987 idel irg 6 2 214956 etho irq 7k 4 inql05: 44604067 ehei hed, whei_hed, irq 8 ‘rte seq 93: 0: VIA8233 irq 9: -scpi (root @linuxtprocinto=18}4-0d 4. Créer un script de surveillance activé par un crontab. [ROStQLinGx! =]# vi euxveitle. ah froot@iin #i/bin/sh uptime ps aux |sort--rk +3-| head -10 STeae renee nes eee Module 11 : La gestion des performances Behe (moot @Linusl -14 chmod wise survedile. sh jroot@linud +) erentab -1 > /tmp/new_eron ne-crontab for root feoots init =if- echo t+ ¥ + + fast /nunvelite.st 2 frex/logieest-ley et >> /omp/new_sron (root@linuxt =] crontab /tmp/new_cron (root @liowel ~14 head /var/loq/peré.log 14:06:01 up 13. days, 15:32, 2 users, load average: 0.00, 0.00, 0.00 votal ‘used free shared buffers cached Men: 449908 403816 46092 0 61948 268180 =/4 buffers/cache: 73688 376220 ‘Swap: 522072 022072 USER. BID SCPU 8MEM -VSZ__RSS TTY ‘TIME COMMAND adn 4498-0.0 2.321264 10348 7 $8 Janai-- 0:00 ast /bin/gdmgreeter root 4155--0.0 1.9 11944 8600 7 Jan21_0:00 /usr/X11R6/bin/x +0 =audit 0 -auth /var/gan/:0.xauth -ndlisten tep vt7 oot 3428 0.0 1.7 11364 7952 2 Ss gan2i hald zeok 4133--0-0- 0-5-12892 2432-2 S=Ssanat fosr/bin/ geno binary -nodaenon. Tache 2: Surveiller une commande avec time 1. Créer un programme consommateur de CPU (calcul de Ia constante mathématique e). (rook@lisuxt ~]4 vi e.py # calcul dee Anport sys unch =i" for i-in range (int (sys-argv(11)): uun_ch = un_eh +:"O" un = ine (un_ch) net factorielle = 1 factorielie +n eoldse e = 6 + un/ factorielle if -- old 1 break print "essain:", 0," =", 2. Utiliser la commande time interne. = 27182818277 teal On0.015s user -- On0;0i19 ‘Sys -On0-0055: Remarques See ed Cine eee) Module 11 : La gestion des performances 1) Le script de calcul de e demande en argument le nombre de decimal voulu. 2) Le temps réel est le temps pour I’éire humain. Le temps CPU consommé est user+sys. 3. Utiliser la commande time externe (GNU). (root@Lintiei “4 /usr/bin/time python @ py’ 100 essain: 70 e©= 27182818284590452359602874713526624977572470936999595769669676279240766303535475 94571 3821785251664238 0,00user 0.00system 0: lapsed 86%CPU (avgtext+avadate Onaxresident) k ‘Sinputs+Ooutputs (Onajor*6Oiminor) pagefaults Oswaps 4, Idem, mais en affichant plus d’informations. [root@linaxi <)4" /iisr/bin/time:=v python @-py-100 27182018284590452353602874713526624977572470936999595719869676277240766303535475 945713821785251664238 Command being timed: “python €.py 100" User time (seconds): 0.01 System time (seconds): 0.00 Bercent of CPU this jab got: got Elapsed: (wall clock) time. (himmiss cr m:es)= 0:00.03 Average shared text size (kbytes): 0 Average unshared date size (kbytes) Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum rasident set size (cytes): 0 Average resident set size (kbytes): 0 Major. (requiring 1/0) page fauits:0 Minor (reclaiming. a frome) page faults: 561 Voluntary context switches: 1 Thvoluntary context switches: 3 o le system inputs: 6 system outputs: 0 icket “messages.-sent: 0 Socket messages received: Signals delivered: 0 Page size (hytes}z 4096 Exit status: 0 {root@linmd ~1# Tache 3: Surveiller le systeme avec sar 1. Utiliser en direct la commande sar. Dans les exemples suivants, on fait trois mesures a cing secondes d’intervalle, (root@linuxl =]# sar -w5°3 Uinux 2-6.942-EL -(Linuxt-pinguins) 02/08/07 14:30:03 Co0- “Suser—— nice tsystem Siowait— tidie : ait 2:00 0.90 9.00 (000: = 100;,00: ali 0,00. 0:00 0.00 9-00-4000 all 9:00 0.00. 0-00 @.00--~ i0d.00 all 0:00 0.00 0.00 000° “10000: Mee ee Teena Module 11 : La gestion des performances Remarques Snice 1) La somme tus ystem donne le pourcentage d'utilisation des processeurs. Le donne le poureentage dinaetivité des processeurs. 2)Lasomme tiowait*s 3) Le rapport buser/Ssystem indique si le systéme fait globalement des calculs ou des 10. (root élinuxt jaar =q'5°3 Linux 2-6. 9-42-EL- (limmxt-pinguins) 02/04/07 14:30:30 rung-s plist-s2 Idavg=1 “1davg-5 Idavg-25 14330135 6 55 0.00 9.00 9.00 14:30:40, 0 55 0-00, 0:00. 0.00 14130845 0 55 0.00 9.00 9.00 Average: ¢ 55 0200 0:00 6.00 Remarque : p1ist—sz indique le nombre total de processus. rung-s2 Indique le nombre de processus en attente d'un processeur, froob@linuxt =]f ear 25 3 Inox: 2-6.9-42,54-Gimexispinguins) 02/04/07 14:31:49 ——“Kiwomtree iomemssed tmenused kbbuffers —kbcached Kbawpivee Rbowpused Sswpused_-kbswpcad 46476403432 89.67 61980268032 $22072 o a6e?6 403432 89,67 61980268232 —“s22072 % 0.00 @ 44332208 46220403688 69.73 61980 2eRPSZ——-S22072 @ 9,00 a Average: 46351 403517 89.69 ¢1980 — 2¢8232 Ss 22072 0 3:00 8 froot@linuxl =]# sar /dew/nul] 2561 6 sleep AO; 8p bk ‘4 eleep 107ki11 $17} & Pee ee eee eel Module 11 : La gestion des performances ATTENTION : NE PAS UTILISER CES COMMANDES SUR UN SYSTEME EN EXPLOITATION | 2, Activer les commandes de simulation de charge et de surveillance en méme temps. [root@linuxi -]4 ( sleep 107 sh charge mem.sh € sh charge cpu.sh & sh charge_io.sh ©) & {a} 30019 [root@linuxi -]4 vmstat 10 5 os rob sed cache si so bi bo in caus ey id wa 08: 0 T2297 00 SO 00 a0 o 182340 002-4 1059 pan 193 te 0 o-0 0. 196236 “5632 140596 003-37 4067 448 69-9 21 7 0-6: @- 1993645652 140596) 0-0-3 105k “4490-0 400: 8 oO 0. 196428: “55632 140596 0 0) 37 4053-143. 0-0 100-0 (1+ Bone { sisep 10; sh charge men.sh @ 6h charge_cpu.sh & sh charge_io.sh &) Remarque : On peut utiliser d"autres commandes de surveillance au lieu de vmstat. Tache 6 : Limiter usage des ressources 1. Limiter les ressources avec ulimit. (roct#linint =]} wh =1 quest Iocalhost gucst@locainicst's password: wwite04s Last login: Sun Feb 4 09:06:46 2007 from raichu.pokemon [guest@linuxi ~}2 ulimit -a core file size (blocks, =e): 0: data seg size (kbytes, -d) unlimited file size (block, -£) unlimited pending signals (i) 1024 max. locked menory (kbytes, 1) 32 max mer (kbytes,--m) unlimited open: £1 (en) 1024 pipe size =p).8 POSIX message queues s, -q) 819200 stack size (kbytes, -s) 10240 cpu time (seconds, --E) unlinited fax user processes Cay Asi virtual memory (kbytes, =v) unlimited file locks (Gx) unlimited [quest@linuxl ~]$ wlamit -s -m 32 Remarque : On limite la limite soft de ta taille mémoire & 32 Mo. (quest@Linuxt =)3 ulimit -a =m max ser processes (Ga) 7151 ax memory size (bytes, am 32 (guest@linuxl ~]$ ulimit — 32 [quest@linuxi ~]3 perl -e ‘for ($i=0;$i<1000000000;$it+) {Stb{$i]=$4:}" ‘Out-“of memory! (guest@linuxi ~]9 free total used free Mem: 449908 25020424868 buffers cached 252 7240 See Module 11: La gestion des performances =/* bufters/eache: 17528432380 Swap: 522072 24180 497892 {guest@linuxl =]$ ulimit -s -u 5 Remarque : On limite a 5, le nombre de processus simultané pour guest [quest@linuet ~]S ulimit <0 -m max user processes ay max memory size (kbytes, my 32 {quest@linus] ~}¢ ulimit /mnt/£t On attend un peu (deux minutes environ) [root @Linuxl ~]}4 eat: /mnt/£1 > /dev/autt {root@linuxt =]# 1s -1 /mnt/#t =EHEE i noot root 137 Feb 417:40./mnt/#2 [root @Linuxt ~]¢ 1s -2u /mnt/£t one Troot “root 137 Feb. 4-17:4i- fant /et Remarque : La lecture du fichier & provoqué la mise & jour de la date de dernier accés et done & provoqué UNE ECRITURE SUR LE DISQUE ! On recommence lexercice mais en désactivant la mise & jour des dates de demier accés [rooE@Linuxl “14 umount: /ant [root@linoxl ~]# mount = loop,noatime /root/GROS_FIC /mnt [root lin date Sun Feb 4.17:46:52 Cet 2007 [root@iinuxi ~]} eat /ant/€1 > /dev/neit [root@linuxl ~]# 1s -lu /nt/£1 Stwer=-t-- 1 root root 137-Feb 4 47:41. /mnt /£i [root@Linux) ~)# umount /mnt frostelingsa jt Tache 7: Modifier les paramétres du noyau. 1. Créer des seripts a) Un script qui simule une application qui écrit sur disque. [root @Linuxl ~]# vi doad_output.eh #i bin/sh (GROSPIC=/usx /qrostic.dat for i-in-1-234 5-6-7 do dev/ zero Of=SGHOSFIC bs=1k coun’ am SGROSFIC 00000 done 'b) Un script de surveillance de ta mémoire. [root @linuxt =}# vi visu charge menoire. sh Tsoft Bm PRree nee enEeTel Module 11 : La gestion des performances #17Bin/ ah fordint 234562 do date head sleep 3 ‘fproc/meminto: 2, Activer les éeritures disque et surveiller activité mémoire. a) Avant de changer un paramétre du noyau. (rost@1inuxt ~]# eat /proc/sys/wm/page“cluster 3 oot @linuxl 32416 froot@1inua ~]# sh visu charge manoire.sh gun Feb 4 18217336 CRY 2007 ‘time sh load_output.sh > /tmp/result 2>61 & ic MenToral: 49908 ks Menezes 79088 KB Butte: 4076 ie Cached: 130568 ka SwapCached: 6032 kB ) Apris (on prend l’exemple du paramétre page-cluster). [xsob@iinixi ~]# echo 20> /prse/sys/vm/page-cluster [root@Linuxl <]# cat /proc/sys/vm/page-cluster 20 (On refait l"exercice précédent. Tache 8: Simuler une charge avec un benchmark, l’influence de la mémoire On simule une charge Web avec ’outil ab (Apache doit étre actif) (rOotGLINUXI' A): /ete/initva/nttpa restart: Arrite de httpd (AcHOUA) DAomarrage de httpd + TOK Y [root@linuxl ~)# ab -e 20 -n 10000 ‘http: //localhost/' this is ApacheBanch, Version 2.0.41-dev. apache=2-0 Copyright (c} 1996 Adam Twiss, Zeus Technology Ltd, http://w. zeustech .net/ Copyright {c) 1998-2002 The Apache Software Foundation, http://www.apache.org/ Benchnarking localhost (be patient) Completed 1000-requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Finished 10000 requests eee ae ene Module 11 : La gestion des performances Server Software: ‘Apache/2.0.52 Server Hostnanet localhost Server Port: 80 Document Path: Z Document: Length: S044 bytes ‘Soncurrency evel: Time taken for testa: Semplete requasts: Failed requests: Weite errors: o Non-2xx responses: ro0r0 Total téansferred: HIME, transferred: 50890440 bytas Baquasts per-second: 1502.23 [#/sec] (mean) Tine per reques! 13.314. {ms} (mean) Time per reques 666: [ms]-(mean, across” al cor Transfer rate: (697-72 (Kbytes /sec} received 8, yErent requests) Connection Times (ms) min-nean{+/-sd} median max Connect: G4 5 23 Processing: 4 7 2 22 Waiting: 5 6 2 ‘Total: 912 2 30 Rercentage of the requests served within a certain time (ms) $08 2 665 13 be 8 OK 1s 908 13 958.13 ee 4a 9938 400% 30 (longest request) (root linux =]¥ Remarques 1) Dans exemple, la commande ab active 10000 requétes HTTP, on active 20 requétes simultatnément (cf. ab(8), 2) On peut activer la commande ab a partir du poste en binéme. On réalise le test a) En mode graphique avec 128 Mo de mémoire ) En mode texte avec 129 Mo de mémoir. c) En mode graphique dans I’état par défaut du serveur, Remarque : Pour indiquer fe niveau init et la mémoire, on & démarrage, par exemple : ite la configuration Grub lors du kernel Amlinuz-2.6.9-11.EL.smp ro root=LABEL=/ rhgb quiet 3 mem=128M. PIRES Aen

You might also like