J'ai installé Ubuntu Linux 14.04.5 sur un nouvel IBM Power8 mod. 8286-41a. Mon but est d'utiliser cette partition l'application SugarCRM CE 6.5. Je n'ai pas été en mesure d'installer Ubuntu 16 en raison de problèmes de compatibilité avec PHP 5.6. Actuellement, j'utilise SugarCRM sur une machine virtuelle vmware avec ubuntu 14.4.1. Je m'attendais à une augmentation des performances sur la plateforme ppc64el. Au lieu de cela, j'ai trouvé, en fait les procédures sont considérablement plus lentes que la machine amd64 Même version de lampe sur les deux systèmes (apache 2.4.7, mysql 5.6.33, php 5.5.9) Voir l'image jointe pour les informations sur les deux machines. Des suggestions ? Configuration ppc64el vs amd64
Réponses
Trop de publicités?Tl;dr : Il se trouve que vous utilisez des versions de tous les composants qui sont antérieurs à de nombreuses optimisations de ppc64el et POWER8, il y aura donc des limites aux performances que vous pouvez atteindre sans mettre à niveau un (ou plusieurs) composants.
Au moment de la sortie d'Ubuntu 14.04, nous avons passé en revue l'ensemble de la pile LAMP en examinant de près les performances sur POWER. Nous avons constaté que certains endroits présentaient des lacunes, et nous nous sommes donc attelés à les corriger. Malheureusement, Ubuntu 14.04 ayant été livrée un peu avant les premiers systèmes POWER8, nous n'avons pas eu le temps de travailler sur les optimisations et de les intégrer en amont avant la livraison d'Ubuntu 14.04.
Ce n'est qu'en mai/juin 2014 que j'ai eu un premier patchset (relativement) stable pour MySQL 5.6 fonctionnant sur POWER8. C'était quelques mois après la sortie d'Ubuntu 14.04. Ces correctifs initiaux n'étaient pas trop axés sur les performances (bien qu'Ubuntu les ait tirés dans la distro, car ppc64el est une plateforme supportée pour eux).
En ce qui concerne les performances, nous étions fortement limités par certains éléments, dont beaucoup ont été corrigés dans MySQL 5.7. En juin 2014, j'ai eu un portage MySQL 5.7 de type "proof-of-concept" qui effectuait 1 million de requêtes par seconde sur POWER8. Une grande partie des problèmes de MySQL sont liés à la contention des mutex, ce qui fait qu'avec les anciennes versions de MySQL, il est possible (assez étrangement) d'avoir des problèmes d'accès. améliorer les performances en liant MySQL à moins de cœurs de processeur.
Nous devions également nous attaquer à d'autres goulets d'étranglement, notamment les performances du CRC32 (qu'InnoDB utilise comme somme de contrôle sur le disque si vous le configurez ainsi), d'où l'apparition d'un CRC32 optimisé pour le POWER8 qui est 41 fois plus rapide que la version non optimisée. Ce travail a été intégré à MariaDB 10.1.
Beaucoup de travail a été fait pour que MariaDB moderne fonctionne très bien sur POWER8. C'est le cas, donc si le passage à MariaDB est une option, cela aidera à améliorer les performances de la base de données. De plus, les diverses variables _instance pour MySQL peuvent avoir besoin d'être augmentées - votre système POWER8 a probablement un fichier lot plus de cœurs de processeur et de threads qu'un système x86, et les valeurs par défaut ne seront pas très bonnes.
En ce qui concerne PHP, j'ai été beaucoup moins impliqué dans ce travail d'optimisation. En fait, le nouveau PHP est plus rapide, souvent d'un bon niveau. Cela est dû à tout, de la suppression de certaines anciennes "optimisations" de powerpc (l'assemblage personnalisé n'est pas toujours plus rapide que ce qu'un compilateur peut produire) à la contribution de code à php, en passant par (je pense) l'amélioration de GCC.
Je pense que mon collègue Daniel Axtens va répondre avec certains des détails du PHP.
Pour en revenir à votre configuration spécifique, avez-vous attribué 1 cœur de CPU (avec 8 threads) ou seulement 1 cœur de CPU (avec 1 thread) à la VM sur le POWER8 ? La façon dont la virtualisation fonctionne sur POWER, vous pouvez aussi bien donner les threads à l'invité, car un cœur entier entre dans l'invité en même temps, et SMT4 est généralement une grande amélioration des performances par rapport à SMT1 (vérifiez votre configuration VM et vous pouvez dynamiquement changer le mode thread en utilisant l'utilitaire ppc64_cpu dans l'invité, mais pas à plus de threads que l'invité a été assigné).
J'ai beaucoup parlé du travail de POWER8 sur MySQL/MariaDB sur mon blog : https://www.flamingspork.com/blog (voir les tags mysql/power8... askubuntu ne me laisse pas poster trop de liens)
Il est assez difficile de répondre à votre question telle qu'elle est posée - il serait vraiment utile de savoir quelles parties sont plus lentes, comment vous mesurez la vitesse, etc.
Mais voici quelques conseils :
Tout d'abord, vous devez passer à la version 16.04 .
-
Vous avez dit que vous faites ça à cause des problèmes de PHP. Je suppose que vous voulez dire par là que SugarCRM repose sur PHP5 et que la version 16.04 n'est livrée qu'avec PHP7. C'est une honte : php7 est beaucoup plus rapide que php5 (environ 2x, la plupart du temps) sur Intel et Power. Mais ce n'est pas la fin du monde. Vous pouvez passer à la version 16.04 et utiliser HHVM, qui est compatible avec PHP5 et est généralement beaucoup plus rapide. Il y a eu beaucoup de travail pour que cela fonctionne bien sur Power (dont une partie à laquelle j'ai participé). Je pense que la plupart du travail est maintenant en amont, mais il y a un référentiel de développement qui devrait être encore plus à jour. Vous devrez le compiler à partir des sources, mais les instructions sont bonnes.
-
Vous devez vraiment, vraiment obtenir une mise à niveau de MySQL/MariaDB, tant du point de vue de la stabilité que des performances. Ce qui est livré avec la version 14.04 est une mauvaise idée .
-
Comme Stewart l'a mentionné, il y a un lot de corrections apportées entre 14.04 et 16.04. Ces puces sont différentes des puces Intel : le réglage des applications pour elles est différent et repose sur le travail que nous faisons depuis plusieurs années. Ces corrections vont des corrections du noyau à la mise à l'échelle de la puissance en passant par des améliorations du compilateur pour générer un meilleur code.
Deuxièmement, je ne suis pas sûr de la charge de travail que vous testez sur SugarCRM. IBM a un (maintenant un peu dépassé) livre blanc sur l'exécution de SugarCRM sur Power qui montre qu'il soutient un débit beaucoup plus élevé qu'un système Intel. Vous devez être clair sur le point de référence qui vous intéresse.
Troisièmement, vous devez vérifier les paramètres de votre système . Voici quelques exemples courants :
-
Apache n'est pas configuré pour utiliser les mutex des pthreads au lieu des mutex des fichiers (corrigé dans les nouvelles versions d'Ubuntu)
-
PHP et Apache sont configurés pour utiliser un pool de threads trop petit pour un système Power.
-
On dirait que vous comparez un cœur sur P8 à 4 cœurs sur x86. Le P8 possède à la fois des cœurs et des threads matériels (comme HyperThreading, mais au lieu de 2 threads matériels par cœur, nous en avons jusqu'à 8), ce qui peut prêter à confusion. Vous devriez :
- vous donne Power VM 4 cœurs. Si possible, assurez-vous qu'ils sont alloués de manière statique dans votre hyperviseur (c'est-à-dire que les cœurs sont dédiés à l'invité).
- Configurez ces 4 cœurs en mode SMT-4, et non en mode SMT-8 ; cela a tendance à donner une impulsion considérable aux langages de script.
Enfin, si vous avez accès à un support IBM ou à des vendeurs de l'époque où vous avez acheté la machine, n'hésitez pas à les contacter ; ils pourront peut-être faire appel à des experts.
Puisque vous effectuez des mesures de performance, créez la partition à partir de la HMC en utilisant des processeurs dédiés, avec 4 cœurs comme souhaité (en utilisant dédié, vous allez séparer la charge de travail IBM i de cette charge de travail de test). Comme mentionné précédemment, le nombre de threads est différent sur Power et sur x86, vous devez donc vous assurer que vous avez le bon nombre de cœurs, et non de threads (même en configurant SMT-4 comme recommandé, vous aurez toujours deux fois le nombre de threads par cœur sur Power).