Pointe de CentOS 6.5

J’ai développé une application en C. J’utilise cette application sur “Red Hat Enterprise Linux Server version 5.8 (Tikanga)” et tout semble bien aller, mais lorsque nous déployons cette application sur “CentOS version 6.5 (Final)”, le problème commence à se produire. Il occupe plus de mémoire de contrôle et après 30-45 minutes, il a grimpé en flèche et tous les processeurs affichent une utilisation de 100% du processeur pendant une à deux secondes.

Je google ce problème et a constaté que l’utilisation élevée du processeur de l’USLEEP sur Cent OS 6.3

Depuis un processus dans ma demande utilise 10 usleep. Cela prend moins de 3% de CPU dans RedHat, mais environ 90% dans CentOS. Après avoir lu le lien lorsque je change le délai de veille de 10 usleep à 1000 usleep ou 1 us, il faut 40% de CPU.

J’ai besoin de savoir que le kernel de CentOS 6.5 utilise ou non des timers rapides, ou que je dois définir une configuration quelconque pour la compilation du kernel.

En premier lieu, vous comparez des pommes et des oranges: CentOS 6 correspond à RHEL 6. Il est très probable que votre code se comporterait de la même manière sur RHEL 6.5 que sur CentOS 6.5 et sur CentOS 5.8 et les mêmes. Il est trompeur de décrire le problème comme une différence entre RHEL et CentOS.

En second lieu, si votre utilisation du processeur est fortement affectée par quelques appels usleep () (exécutés, apparemment très souvent), votre code est défectueux et vous devriez le corriger. Construire un kernel personnalisé pour masquer le problème serait très arriéré. Néanmoins, si l’objective est davantage de passer à CentOS que de passer à un environnement (un peu) plus moderne, passez à CentOS 5 au lieu de CentOS 6.