Introduction
Un problème a été identifié avec les versions 12.5.4 ESD#5 et ESD#6 d’Adaptive Server Enterprise sur les plateformes Sun Solaris. Cette note technique décrit le problème, les symptômes, les contournements.
Description du problème
Les deux ESD 5 et 6 d’ASE 12.5.4 peuvent utiliser plus de temps CPU système
sur les plateformes solaris que le versions précédentes. Ceci est du à une
amélioration implémentée dans Adaptive Server pour permettre les vérifications
afin de corriger les adresses mémoire avant d’utiliser certaines structures
mémoires. Cette vérification améliore la stabilité et la fiabilité d’Adaptive
Server. Le mécanisme utilisé est l’appel à la fonction système brk( )
afin
d’obtenir l’adresse courante maximum pour l’espace mémoire du programme.
Sur Solaris, le temps pris pour exécuter l’appel système est assez important pour impacter toute l’utilisation système CPU. Sur les autres plateformes, l’appel est peu coûteux.
Symptômes
L’utilisation extrême de la CPU ne peut être vue que par des outils systèmes
comme top
, sar
ou vmstat
. Ces symptômes ne peuvent être vus par sp_sysmon
compte tenu du niveau système de ces appels dans le code d’Adaptive Server.
Si la charge du serveur est élevée de telle manière que le temps supplémentaire créé de la contention CPU, le problème peut impacter la performance globale du serveur et les temps de réponse.
Pour identifier si un serveur rencontre ce problème, utiliser la commande
truss
avec l’option -c
sur les process dataserver pour vérifier les appels
systèmes brk().
Voici un exemple d’un serveur rencontrant ce problème :
% truss -c -p 1234
^C
1234 est le PID du dataserver Sybase.
signals ------------
SIGALRM 189
SIGUSR2 7
total: 196
syscall seconds calls errors
write .197 1559
open .073 230
close .002 12
brk 4.143 86656
fstat .254 6823
kill .040 623
ioctl .247 4159
fcntl .025 687
lwp_unpark .000 7
getmsg .101 2230 209
putmsg .075 241
poll .116 2125 2
sigprocmask 2.043 64476
setcontext .000 7
sigtimedwait .043 189
kaio .006 22
kaio .017 533
-------- ------ ----
sys totals: 7.389 170579 211
usr time: 1.216
elapsed: 18.860
Il faut noter le haut pourcentage (4.143 sur 7.839 secondes) passé pour l’appel à brk(). Un serveur ne rencontrant pas ce problème verra un pourcentage bien plus faible, voire négligeable.
Contournements et solution
Le seul contournement possible dans les versions ESD5 et ESD6 consiste à
réduire le paramètre "number of user connections
".
Ce problème est adressé par la demande de changement (CR - Change request) n°480690.
Le patch conserve le mécanisme de vérification des adresses mémoires
valides, mais réduit grandement l’utilisation de l’appel système brk ( )
.
Le patch est disponible dans la version 12.5.4 ESD#7.