Je suis un développeur d'applications Web qui utilise mon ordinateur portable comme environnement de développement autonome (pile WAMP). Je viens de passer d'un ordinateur portable Core2 Duo Vista 32 bits avec 2 Go de RAM et un disque dur SATA, à un i5-2520M Windows 7 64 bits avec 4 Go de RAM et 128 Go de SSD (Corsair P3 128).
Mon expérience initiale a été conforme à mes attentes : démarrage rapide, chargement rapide de toutes les applications (Eclipse prend maintenant 5 secondes au lieu de 30 secondes sur mon ancien ordinateur portable), expérience globalement excellente. J'ai ensuite commencé à construire ma pile de développement, à la fois en tant que LAMP (en utilisant VirtualBox avec un invité Debian) et WAMP (Windows native Apache + MySQL + PHP). Je voulais comparer les deux.
Tout s'est bien passé, puis j'ai commencé à intégrer mes projets dans ces piles. Et voilà la mauvaise surprise, l'un de ces projets produisait des temps de réponse bien pires que sur mon ancien ordinateur portable (c'était vrai pour les piles VirtualBox et WAMP). Les configurations d'Apache, PHP et MySQL étaient pratiquement identiques dans tous les environnements. J'ai commencé à faire beaucoup de benchmarking et de profilage, et voici ce que j'ai trouvé :
-
Tous les benchmarks généraux (Performance Test 7.0, HDTune Pro, wPrime2 et d'autres encore) ont donné un grand avantage au nouveau portable. Rien de surprenant ici. Les tests spécifiques au disque ont montré que les opérations de lecture/écriture ont culminé autour de 380M/160M pour le SSD, et toutes les opérations de blocs de différentes tailles ont également donné de très bons résultats.
-
Début de l'évaluation des performances d'Apache avec Apache Benchmark pour un petit fichier HTML statique (10 threads simultanés, 500 itérations).
- Ancien ordinateur portable : min 47ms, médiane 111ms, max 156ms
- Nouvelle pile WAMP : min 71ms, médiane 135ms, max 296ms
- Nouvelle pile LAMP (dans VirtualBox) : min 6ms, médiane 46ms, max 175ms
Ici, je ne comprends pas pourquoi la pile WAMP native a donné de si mauvais résultats, mais au moins l'environnement LAMP a apporté la vitesse attendue.
-
Mesure des performances d'Apache pour le contenu PHP non mis en cache. Le PHP exécute une boucle de 1000 et génère des inisde sha1(uniqid()). Encore une fois, 10 threads simultanés, 500 itérations ont été utilisés pour le benchmark.
- Ancien ordinateur portable : min 0ms, médiane 39ms, max 218ms
- Nouvelle pile WAMP : min 20ms, médiane 61ms, max 186ms
- Nouvelle pile LAMP (dans VirtualBox) : min 124ms, médiane 704ms, max 2463ms
Mais qu'est-ce que c'est ? Le nouveau LAMP a donné des résultats misérables, et même le nouveau WAMP natif a été surpassé par l'ancien ordinateur portable.
-
Test PHP + MySQL. Le test consiste à se connecter à une base de données et à lire un seul enregistrement d'une table en utilisant INNER JOIN sur 3 autres tables (indexées), répété 100 fois dans une boucle. Les bases de données étaient identiques. 10 threads concurrents, 100 itérations ont été utilisés pour le benchmark.
- Ancien ordinateur portable : min 1201ms, médiane 1734ms, max 3728ms
- Nouvelle pile WAMP : min 367ms, médiane 675ms, max 1893ms
- Nouvelle pile LAMP (dans VirtualBox) : min 1410ms, médiane 3659ms, max 5045ms
Et le même test avec la concurrence fixée à 1 (au lieu de 10) :
- Ancien ordinateur portable : min 1201ms, médiane 1261ms, max 1357ms
- Nouvelle pile WAMP : min 399ms, médiane 483ms, max 539ms
- Nouvelle pile LAMP (dans VirtualBox) : min 285ms, médiane 348ms, max 444ms
En ce qui me concerne strictement, comme j'utilise un environnement de développement autonome (= faible concurrence), je pourrais être satisfait du résultat du deuxième test. Bien que je n'aie aucune idée de la raison pour laquelle l'environnement VirtualBox se comporte si mal avec une plus grande concurrence.
-
Enfin, j'ai effectué un test en incluant de nombreux fichiers php. L'application que j'ai mentionnée au début, celle qui fonctionnait si mal, a un bootstrap lourd, charge des centaines de petites bibliothèques et de fichiers de configuration lors de l'initialisation. Donc ce test ne fait rien d'autre que d'inclure environ 100 fichiers. Concurrence fixée à 1, 100 itérations :
- Ancien ordinateur portable : min 140ms, médiane 168ms, max 406ms
- Nouvelle pile WAMP : min 434ms, médiane 488ms, max 604ms
- Nouvelle pile LAMP (dans VirtualBox) : min 413ms, médiane 1040ms, max 1921ms
Même si je considère que VirtualBox a atteint ces fichiers via des dossiers partagés, et que cela ralentit un peu les choses, je ne vois toujours pas comment l'ancien ordinateur portable pourrait surpasser si lourdement les deux nouvelles configurations. Et je pense que c'est la véritable racine de la lenteur des performances, car l'application utilise encore plus d'inclusions, et l'ensemble de l'amorçage se produira plusieurs fois dans une demande de page (pour chaque appel AJAX, par exemple).
Pour résumer, je me retrouve avec un tout nouvel ordinateur portable hautes performances qui charge en 20 secondes la même page que mon ancien ordinateur portable peut faire en 5-7 secondes. Inutile de dire que je ne suis pas très heureux en ce moment.
Pourquoi pensez-vous que j'obtienne ces mauvaises valeurs de performance ? Quelles sont mes options pour remédier à cette situation ?
Il semble que j'ai finalement trouvé l'origine du problème, apparemment les SSD peuvent subir une dégradation des performances lorsqu'ils sont utilisés dans des ordinateurs portables équipés de chipsets Intel HM55 ou PM55. Veuillez voir ma propre réponse complète ci-dessous.