Formation avance Solaris Tuning Solaris Optimisation des performance

  • Slides: 35
Download presentation
Formation avancée Solaris Tuning Solaris – Optimisation des performance - Tome 1. © Steria

Formation avancée Solaris Tuning Solaris – Optimisation des performance - Tome 1. © Steria

Formation avancée Solaris è Remerciements 11/21/2020 8: 50 PM Steria formation 2

Formation avancée Solaris è Remerciements 11/21/2020 8: 50 PM Steria formation 2

Formation avancée Solaris è Objectifs de la gestion de la performance è Améliorer l’emploi

Formation avancée Solaris è Objectifs de la gestion de la performance è Améliorer l’emploi des ressources. Améliorer le confort de l’utilisateur. Améliorer la tenue en charge. Adapter le système aux demandes. Eviter le gaspillage de ressources et d’argent. è è 11/21/2020 8: 50 PM Steria formation 3

Formation avancée Solaris Où faut-il optimiser ? Pour l’administrateur système : è Optimisation du

Formation avancée Solaris Où faut-il optimiser ? Pour l’administrateur système : è Optimisation du système d’exploitation Solaris, è Optimisation du matériel. Pour le DBA : è Optimisation de la Base de donnée. Pour le responsable applicatif : è Optimisation des applications. • Il est important de bien les connaître, pour les optimiser. • Il est plus facile d’optimiser une application, si une seule tourne sur le système. 11/21/2020 8: 50 PM Steria formation 4

Formation avancée Solaris èPar où commencer ? Théorie Réalité 11/21/2020 8: 50 PM Zone

Formation avancée Solaris èPar où commencer ? Théorie Réalité 11/21/2020 8: 50 PM Zone Exemple Système d’exploitation ncsize SGBDR Mémoire partagée Applications Méthodes de développement Matériel serveur et réseau Organisation des disques Steria formation 5

Formation avancée Solaris è Terminologie Bande passante : • capacité maximale théorique d’un système

Formation avancée Solaris è Terminologie Bande passante : • capacité maximale théorique d’un système • Mais surcharge non prise en compte, • Correspond à une valeur idéale, jamais atteinte en pratique. • 11/21/2020 8: 50 PM Steria formation 6

Formation avancée Solaris è Terminologie • Débit : quantité de données réellement transférée/traitée dans

Formation avancée Solaris è Terminologie • Débit : quantité de données réellement transférée/traitée dans un temps donné Correspond à une partie seulement de la bande passante, dépend du matériel, du logiciel, des utilisateurs, de divers évènements aléatoires … Nombre obtenu par des approximations. Le débit maximal est obtenu pour 100% d’utilisation. • • • 11/21/2020 8: 50 PM Steria formation 7

Formation avancée Solaris è Terminologie Temps de réponse : • temps d’attente pour un

Formation avancée Solaris è Terminologie Temps de réponse : • temps d’attente pour un utilisateur ou pour une requête, avant que le résultat demandé soit obtenu, • Temps total d’une opération. • Identique à « temps de latence » . • 11/21/2020 8: 50 PM Steria formation 8

Formation avancée Solaris è Terminologie Temps de service : • Temps de traitement d’une

Formation avancée Solaris è Terminologie Temps de service : • Temps de traitement d’une requête sans tenir compte des temps d’attente, • Identique aux temps de réponse, uniquement s’il n’y a aucune attente (files d’attente vides). • 11/21/2020 8: 50 PM Steria formation 9

Formation avancée Solaris è Terminologie Utilisation : • Part d’exploitation d’une ressource dans le

Formation avancée Solaris è Terminologie Utilisation : • Part d’exploitation d’une ressource dans le travail en cours de mesure, • Le total du débit d’une ressource. • Un pourcentage généralement nommé busy. • 11/21/2020 8: 50 PM Steria formation 10

Formation avancée Solaris è Terminologie Point de référence (par ex. dans le cadre de

Formation avancée Solaris è Terminologie Point de référence (par ex. dans le cadre de benchmark) : • Ensemble de mesures effectué avant toute intervention d’optimisation, qui servira de référence pour toutes les actions futures afin de déterminer si une action produit une amélioration ou non, • Point de départ sur lequel les différentes parties sont d’accord. • 11/21/2020 8: 50 PM Steria formation 11

Formation avancée Solaris 11/21/2020 8: 50 PM Steria formation 12

Formation avancée Solaris 11/21/2020 8: 50 PM Steria formation 12

Formation avancée Solaris 11/21/2020 8: 50 PM Steria formation 13

Formation avancée Solaris 11/21/2020 8: 50 PM Steria formation 13

Formation avancée Solaris èCycle d’optimisation èL’optimisation est comme peler un oignon : il y

Formation avancée Solaris èCycle d’optimisation èL’optimisation est comme peler un oignon : il y a toujours une autre couche à optimiser. èRésoudre un problème de CPU peut révéler (ou créer) un problème d’E/S etc. èIl faut réduire l’impact des goulets d’étranglement. Mémoire CPU 11/21/2020 8: 50 PM E/S Steria formation 14

Formation avancée Solaris M man emory age m e nt User applications and librairies

Formation avancée Solaris M man emory age m e nt User applications and librairies () System calls m ap User level Pr M oces a n age s m e nt Metadata cache Segmap cache Character Block Device driver Machine-dependant code Hardware IPC Kernel Scheduling M File systems

Formation avancée Solaris èStructure kstat du noyau • Créé par un composant système. •

Formation avancée Solaris èStructure kstat du noyau • Créé par un composant système. • Tout ce qui mesurable, dans le noyau, s’y trouve. • Format spécifique pour chaque composant. • Est lue par les appels système de type kstat ØRecopie des données dans la requête. • Permet la lecture d’une chaîne entière kstat. • Mise à jour par le composant. ØGénéralement, les mises à jour s’effectuent lorsque l’évènement se produit. 11/21/2020 8: 50 PM Steria formation 16

Formation avancée Solaris èTraitement des données par les outils • Les données sont cumulées

Formation avancée Solaris èTraitement des données par les outils • Les données sont cumulées pendant les intervalles. • L’écart est calculé par rapport à la précédente mesure. • L’information est écrite. • En mémoire ØÀ l’écran. ØSous forme d’objet graphique (SMC). Ø dans un fichier. • L’information est ensuite traitée. • Les outils de mesures lisent les structures kstat internes avec une certaine périodicité. 11/21/2020 8: 50 PM Steria formation 17

Formation avancée Solaris èOutils de surveillance Solaris • sar • vmstat • iostat •

Formation avancée Solaris èOutils de surveillance Solaris • sar • vmstat • iostat • mpstat • netstat • nfstat • Sun Management Center. • Autres 11/21/2020 8: 50 PM Steria formation 18

Formation avancée Solaris èSUN MANAGEMENT CENTER Non utilisé chez SFR. Il surveille aussi bien:

Formation avancée Solaris èSUN MANAGEMENT CENTER Non utilisé chez SFR. Il surveille aussi bien: èUn système local. èUn système distant. Il donne des infos sur: èLes utilisateurs, èLes disques, èLes processeurs, èLa mémoire. 11/21/2020 8: 50 PM Steria formation 19

Formation avancée Solaris èAutres utilitaires • prex • tnfxtract, tnfdump • busstat • cpustat

Formation avancée Solaris èAutres utilitaires • prex • tnfxtract, tnfdump • busstat • cpustat et cputrack • répertoire /proc et utilitaire /usr/proc/bin • Process manager • memtool • Accounting • (SE toolkit). 11/21/2020 8: 50 PM Steria formation 20

Formation avancée Solaris èCommande prex • prex fait parti des mécanismes de trace Solaris.

Formation avancée Solaris èCommande prex • prex fait parti des mécanismes de trace Solaris. • prex contrôle les sondes d’un processus ou du noyau. • prex peut être lié à l’exécution d’un processus. Il lit ses données. • La mémoire tampon des données des sondes est activée ou non. • La taille par défaut de la mémoire tampon est de 384 Ko. • Problèmes possibles _ core dump _ si on utilise des programmes 32 bits ou des interpréteurs 32 bits dans un environnement 64 bits. • Il peut être une alternative à d’autres programmes comme apptrace et truss. 11/21/2020 8: 50 PM Steria formation 21

Formation avancée Solaris èCommandes tnfxtract et tnfdump • tnfxtract lit la mémoire tampon de

Formation avancée Solaris èCommandes tnfxtract et tnfdump • tnfxtract lit la mémoire tampon de prex ou un fichier core. • tnfxtract produit un fichier binaire « tnf » . • tnfdump convertit un fichier « tnf » en fichier texte ASCII. • La sortie de tnfdump peut être très verbeuse. • Note : sans l’argument du fichier, l’information est obtenue à partir du fichier /dev/tnfmap (/devices/pseudo/tnf@0: tnfmap dont l’accès r-w est réservé à root). 11/21/2020 8: 50 PM Steria formation 22

Formation avancée Solaris èCommande prex (suite) root# prex -k Type "help" for help. .

Formation avancée Solaris èCommande prex (suite) root# prex -k Type "help" for help. . . prex> buffer dealloc There is no buffer to deallocate prex> buffer alloc 2 M Buffer of size 2097152 bytes allocated prex> enable io prex> trace io prex> ktrace on. . wait for sometime to collect data # <= attendre pendant un certain temps pour recueillir des données prex> ktrace off prex> quit Extraction des données du buffer (de prex) dans un fichier trace : root# tnfxtract data 1. tnf Conversion du fichier « tnf » dans un fichier texte comme : Convert the "tnf" file into a text file as root# tnfdump data 1. tnf > data 1. txt Le fichier de sortie a deux sections : 1) l’en-tête 2) les données détaillées de la sonde. Voici un en-tête de l'échantillon, qui affiche les sondes qui ont été activées : probe probe tnf_name: tnf_name: "strategy" tnf_string: "keys io blockio; file. . /common/os/driver. c; line 411; " "pageout" tnf_string: "keys vm pageio io; file. . /common/vm/vm_pvn. c; line 571; " "biodone" tnf_string: "keys io blockio; file. . /common/os/bio. c; line 1222; " "physio_start" tnf_string: "keys io rawio; file. . /common/os/vm_subr. c; line 158; " "physio_end" tnf_string: "keys io rawio; file. . /common/os/vm_subr. c; line 304; " 11/21/2020 8: 50 PM Steria formation 23

Formation avancée Solaris èCommande truss est utilisée pour tracer les appels système/bibliothèque (mais pas

Formation avancée Solaris èCommande truss est utilisée pour tracer les appels système/bibliothèque (mais pas les appels utilisateurs) et les signaux donnés et reçus par un processus nouveau ou existant. Il envoie la sortie vers stderr. Note : Exécuter le "truss" d'un processus « force » sa vitesse à la vitesse d'affichage. Utilisez « -wall » et « -rall » avec parcimonie. Utilisation : truss -a -e -f -rall -wall -p truss -a -e -f -rall -wall Options : -a Affiche les arguments transmis aux appels système d'exécution -e Affiche les variables environnement transmis aux appels système d'exécution -f Affiche les processus sous la forme de fourche (ils ont un autre pid: dans la colonne 1) -rall Affiche toutes les données lues ((valeur par défaut en 32 octets) -wall Affiche toutes les données écrites (valeur par défaut en 32 octets) -p "capture" un processus existant (on doit en être le propriétaire ou root) <programme> Spécifiez un programme à exécuter. 11/21/2020 8: 50 PM Steria formation 24

Formation avancée Solaris èCommande truss Exemple 1 : # truss -d date Base time

Formation avancée Solaris èCommande truss Exemple 1 : # truss -d date Base time stamp: 1066157908. 5731 [ Tue Oct 14 14: 58: 28 EDT 2003 ] 0. 0000 execve("/usr/bin/date", 0 x. FFBEF 29 C, 0 x. FFBEF 2 A 4) argc = 1 0. 0449 mmap(0 x 0000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0 x. FF 3 A 0000 0. 0453 resolvepath("/usr/lib/ld. so. 1", 1023) = 16 0. 0457 open("/var/ld/ld. config", O_RDONLY) Err#2 ENOENT 0. 0460 open("/usr/libc. so. 1", O_RDONLY) = 3 0. 0463 fstat(3, 0 x. FFBEE 9 C 4) = 0 0. 0464 mmap(0 x 0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0 x. FF 390000 0. 0466 mmap(0 x 0000, 794624, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0 x. FF 280000 0. 0470 mmap(0 x. FF 33 A 000, 24652, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 696320) = 0 x. FF 33 A 000 0. 0474 munmap(0 x. FF 32 A 000, 65536) = 0 0. 0479 memcntl(0 x. FF 280000, 113332, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 0. 0481 close(3) = 0 0. 0483 open("/usr/libdl. so. 1", O_RDONLY) = 3 0. 0485 fstat(3, 0 x. FFBEE 9 C 4) = 0 0. 0487 mmap(0 x. FF 390000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0 x. FF 390000 0. 0490 close(3) = 0 0. 0493 open("/usr/platform/SUNW, Ultra-5_10/libc_psr. so. 1", O_RDONLY) = 3 0. 0496 fstat(3, 0 x. FFBEE 854) = 0 0. 0497 mmap(0 x 0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0 x. FF 380000 0. 0500 mmap(0 x 0000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0 x. FF 370000 0. 0502 close(3) = 0 0. 0514 munmap(0 x. FF 380000, 8192) = 0 0. 0521 brk(0 x 00022420) = 0 0. 0523 brk(0 x 00024420) = 0 0. 0526 time() = 1066157908 0. 0531 open("/usr/share/lib/zoneinfo/US/Eastern", O_RDONLY) = 3 0. 0533 read(3, " T Z i f". . , 8192) = 1250 0. 0536 close(3) = 0 0. 0542 ioctl(1, TCGETA, 0 x. FFBEEFDC) = 0 Tue Oct 14 14: 58: 28 EDT 2003 0. 0545 write(1, " T u e O c t 1 4 1". . , 29) = 29 0. 0547 llseek(0, 0, SEEK_CUR) = 1829 0. 0549 _exit(0)

Formation avancée Solaris èCommande truss Exemple 2 : [root@su 1010: /bin] truss -f passwd

Formation avancée Solaris èCommande truss Exemple 2 : [root@su 1010: /bin] truss -f passwd 4680: *** SGID: rgid/egid/sgid = 1 / 3 *** 4680: execve("/usr/bin/passwd", 0 x. FFBEFBDC, 0 x. FFBEFBE 4) argc = 1 4680: resolvepath("/usr/lib/ld. so. 1", 1023) = 16 4680: open("/var/ld/ld. config", O_RDONLY) Err#2 ENOENT 4680: stat("/lib/passwdutil. so. 1", 0 x. FFBEF 488) = 0 4680: resolvepath("/lib/passwdutil. so. 1", "/usr/lib/passwdutil. so. 1", 1023) = 24 4680: open("/lib/passwdutil. so. 1", O_RDONLY) = 3 4680: mmap(0 x 0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0 x. FF 3 A 0000 4680: mmap(0 x 0000, 131072, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0 x. FF 370000 4680: mmap(0 x. FF 370000, 49294, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0 x. FF 370000 4680: mmap(0 x. FF 38 E 000, 4163, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 57344) = 0 x. FF 38 E 000 4680: munmap(0 x. FF 37 E 000, 65536) = 0 4680: memcntl(0 x. FF 370000, 11568, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 4680: close(3) = 0 4680: stat("/libbsm. so. 1", 0 x. FFBEF 488) = 0 4680: resolvepath("/libbsm. so. 1", "/usr/libbsm. so. 1", 1023) = 20 4680: open("/libbsm. so. 1", O_RDONLY) = 3 4680: mmap(0 x. FF 3 A 0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0 x. FF 3 A 0000 4680: mmap(0 x 0000, 155648, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0 x. FF 340000 4680: mmap(0 x. FF 340000, 70738, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0 x. FF 340000 4680: mmap(0 x. FF 362000, 8728, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 73728) = 0 x. FF 362000 4680: munmap(0 x. FF 352000, 65536) = 0 4680: memcntl(0 x. FF 340000, 21244, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 4680: close(3) = 0 [. . . ] => La suite de « truss -f passwd » page suivante => 11/21/2020 8: 50 PM Steria formation 26

Formation avancée Solaris èCommande truss (suite) Exemple 2 (suite) : [. . . ]

Formation avancée Solaris èCommande truss (suite) Exemple 2 (suite) : [. . . ] 4680: write(5, " u 0 1 6 8 8 1 : * L K *". . , 20) = 20 4680: write(5, " u 0 1 3 3 7 1 : * L K *". . , 20) = 20 4680: read(6, 0 x 00028 FEC, 8192) = 0 4680: llseek(6, 0, SEEK_CUR) = 58919 4680: close(6) = 0 4680: close(5) = 0 4680: unlink("/etc/oshadow") Err#2 ENOENT 4680: access("/etc/oshadow", 0) Err#2 ENOENT 4680: link("/etc/shadow", "/etc/oshadow") = 0 4680: rename("/etc/stmp", "/etc/shadow") = 0 4680: unlink("/etc/oshadow") = 0 4680: fcntl(4, F_SETLK, 0 x. FF 1 BEE 1 C) = 0 4680: close(4) = 0 passwd: password successfully changed for root 4680: write(2, " p a s s w d : p a s s". . , 46) = 46 4680: write(2, "n", 1) = 1 4680: mmap(0 x 0000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0 x. FEF 20000 4680: munmap(0 x. FEF 00000, 5797) = 0 4680: munmap(0 x. FEF 12000, 2242) = 0 4680: munmap(0 x. FEF 20000, 8192) = 0 4680: munmap(0 x. FEEE 0000, 12757) = 0 4680: munmap(0 x. FEEF 4000, 2928) = 0 4680: munmap(0 x. FEEC 0000, 5902) = 0 4680: munmap(0 x. FEED 2000, 2091) = 0 4680: munmap(0 x. FEEA 0000, 5386) = 0 4680: munmap(0 x. FEEB 2000, 2343) = 0 4680: munmap(0 x. FEE 80000, 6114) = 0 4680: munmap(0 x. FEE 92000, 3421) = 0 4680: llseek(0, 0, SEEK_CUR) = 131108 4680: _exit(0) [root@su 1010: /bin] 27 Steria formation 11/21/2020 8: 50 PM

Formation avancée Solaris èCommande truss (suite et fin) La commande "truss" fonctionne sur SUN

Formation avancée Solaris èCommande truss (suite et fin) La commande "truss" fonctionne sur SUN et Sequent. Utiliser "strace" sous Linux. Si votre système d’exploitation ne supporte pas les commandes « truss » et « strace » appelez alors votre administrateur système pour trouver la commande équivalente sur votre système. 11/21/2020 8: 50 PM Steria formation 28

Formation avancée Solaris èSurveiller votre système Unix Les fichiers des messages Unix enregistrent sous

Formation avancée Solaris èSurveiller votre système Unix Les fichiers des messages Unix enregistrent sous les problèmes systèmes, comme les erreurs disques, les erreurs de swap, les problèmes NFS etc. Surveillez les fichiers suivants sur votre système, pour détecter les problèmes systèmes : # tail -f /var/adm/SYSLOG # tail -f /var/adm/messages # tail -f /var/log/syslog 11/21/2020 8: 50 PM # sur Solaris Steria formation 29

Formation avancée Solaris èCommande busstat • La commande "busstat" accède aux compteurs liés au

Formation avancée Solaris èCommande busstat • La commande "busstat" accède aux compteurs liés au bus, notamment au compteur PIC (Process information counter). • Les circuits des bus peuvent être programmés pour compter des évènements choisis dans une liste. • "busstat" ne fonctionne pas sur toute les plateformes Solaris (bien qu’elle fasse partie de Solaris 8). Elle ne fonctionne que sur les plateformes récentes SUN. Employer "busstat -l", pour savoir si cette commande est compatible avec votre plateforme. Exemples : # busstat -w gpd 0, pic 0=clock_cycles, pic 1= clock_cycles 1 5 time dev event 0 pic 0 event 1 pic 1 1 gpd 0 clock_cycles 664260850 clock_cycles 664279065 2 gpd 0 clock_cycles 664027840 clock_cycles 664024597 3 gpd 0 clock_cycles 663910768 clock_cycles 663906329 4 gpd 0 clock_cycles 663995628 clock_cycles 663993527 5 gpd 0 clock_cycles 664001102 clock_cycles 663999876 # busstat -l Busstat Device(s): dram 0 dram 1 dram 2 dram 3 dram 4 dram 5 dram 6 dram 7 lpu 0 lpu 1 lpu 2 lpu 3 lpu 4 lpu 5 lpu 6 lpu 7 lpu 8 lpu 9 lpu 10 lpu 11 lpu 12 lpu 13 lpu 14 lpu 15 gpd 0 gpd 1 gpd 2 gpd 3 asu 0 asu 1 asu 2 asu 3 imu 0 mmu 0 peu 0 bterr 0 imu 1 mmu 1 peu 1 bterr 1 imu 2 mmu 2 peu 2 bterr 2 imu 3 mmu 3 peu 3 bterr 3 # 30 Steria formation 11/21/2020 8: 50 PM

Formation avancée Solaris èCommande busstat (suite) Exemple : # busstat -e asu pic 0

Formation avancée Solaris èCommande busstat (suite) Exemple : # busstat -e asu pic 0 none clock_cycles asu_in_pck asu_out_pck asu_CAM_hit asu_wakeup pic 1 none clock_cycles asu_in_pck asu_out_pck asu_CAM_hit asu_wakeup # busstat -e gpd pic 0 none clock_cycles pic 1 none clock_cycles # 11/21/2020 8: 50 PM Steria formation 31

Formation avancée Solaris èCommande busstat (suite) Exemple : # busstat -e lpu pic 0

Formation avancée Solaris èCommande busstat (suite) Exemple : # busstat -e lpu pic 0 none clock_cycles_c 2 c_port. X cycles_mem_port. X [ . . . ] cycles_WB_HIT cycles_MISS cycles_READ_or_INV cycles_WB cycles_NDR Pour en savoir plus sur la commande « busstat » , voir : Using busstat to Monitor Performance Counters for Ultra. SPARC T 2 Plus External Coherency Hub Architecture, Sree Vemuri, July 2009, Source : http: //www. sun. com/bigadmin/features/techtips/busstat_perf. jsp pic 1 none clock_cycles_c 2 c_port. X cycles_mem_port. X cycles_WB_port. X [ . . . ] cycles_NDR cycles_cache_miss cycles_cache_hit cycles_CRC_errors cycles_replys_sent cycles_replys_recev cycles_link_retrain 11/21/2020 8: 50 PM # Steria formation 32

Formation avancée Solaris èCommandes cpustat ou cputrack cpustat sert à contrôler les performances de

Formation avancée Solaris èCommandes cpustat ou cputrack cpustat sert à contrôler les performances de tous les processeurs du système. Les compteurs de cycles processeurs peuvent être obtenus si l’architecture du système le permet. cpustat ne peut être employé par que « root » . cputrack sert pour contrôler les performances des processus. # In this example, the utility is being used on a machine containing an Ultra. SPARC-III+ processor. The counters are set to count processor clock cycles and instructions dispatched in user mode while running the sleep(1) command. example% cputrack –c pic 0=Cycle_cnt, pic 1=Instr_cnt sleep 10 time lwp 1. 007 1 2. 007 1 4. 017 1 6. 007 1 8. 007 1 10. 017 1 event tick tick exit pic 0 765308 0 0 0 844703 pic 1 219233 0 0 0 228058 # This example shows how many instructions were executed in the application and in the kernel to print the date on a Pentium III machine: example% cputrack –c inst_retired, nouser 1, sys 1 date time lwp event pic 0 Fri Aug 20 20: 03: 08 PDT 1999 0. 072 1 exit 246725 pic 1 339666

Formation avancée Solaris èCommandes cpustat ou cputrack example% cputrack –fev –c EC_ref, EC_hit /bin/ulimit

Formation avancée Solaris èCommandes cpustat ou cputrack example% cputrack –fev –c EC_ref, EC_hit /bin/ulimit –c # This example shows more verbose output while following the and of a simple shell script on an Ultra. SPARC machine. The counters are measuring the number of external cache references and external cache misses. Notice that the explicit pic 0 and pic 1 names can be omitted where there are no ambiguities. time 0. 007 0. 023 0. 026 0. 029 0. 000 pid lwp 101142 1 101143 1 event init_lwp fork init_lwp fini_lwp exec pic 0 805286 pic 1 20023 1015382 1025546 24461 25074 # 101143 # '/usr/bin/sh /usr/bin/basename /bin/ulimit' 0. 039 101143 1 init_lwp 1025546 25074 0. 050 101143 1 fini_lwp 1140482 27806 0. 050 101143 1 exec 1140482 27806 0. 000 101143 1 exec # '/usr/bin/expr //bin/ulimit : (. *[^/])/*$ : . */(. . *) : (. *)$ | //bin/ulimi' 0. 059 101143 1 init_lwp 1140482 27806 0. 075 101143 1 fini_lwp 1237647 30207 0. 075 101143 1 exit 1237647 30207 unlimited 0. 081 101142 1 fini_lwp 953383 23814 0. 081 101142 1 exit 953383 23814 example% cputrack -c ITLB_reference, emask=1 date # <= shows how to use processor-specific attributes to count TLB hits on a Pentium 4 machine : time lwp event pic 0 Fri Aug 20 20: 03: 08 PDT 1999 0. 072 1 exit 246725

Formation avancée Solaris èAnnexe : Sites Internet utiles : • http: //www. idevelopment. info/data/Unix/Solaris/UNIX_Solaris_home.

Formation avancée Solaris èAnnexe : Sites Internet utiles : • http: //www. idevelopment. info/data/Unix/Solaris/UNIX_Solaris_home. shtml • UNIX and Web PERFORMANCE, Jaqui Lynch, Manager Systems Services, Boston College, Session 133, http: //www. circle 4. com/jaqui/papers/webunuk. html 11/21/2020 8: 50 PM Steria formation 35