Testez les performances en lecture et en écriture de vos disques durs

On a vu précédemment comment afficher toutes les informations utiles d’un disque dur avec CrystalDiskInfo : le même éditeur édite d’autres logiciels, dont notamment CrystalDiskMark. Celui permet de tester les performances d’un disque dur que ce soit en lecture ou en écriture.

Une seule fenêtre et quelques paramètres sont à vérifier avant de lancer un test :

  • premier menu déroulant : le nombre de tests que l’on souhaite réaliser,
  • la taille de chaque test : sont disponibles 50MB, 100MB, 500MB, 1000MB, 2000MB et 4000MB (MB correspond à Mo).
  • enfin, choisir la partition que l’on veut tester via la liste déroulante (chez moi, le disque C:),
  • lancer le test en cliquant sur « All » ou un des boutons inférieur.

Quatre tests différents sont disponibles :

  • All : tous les tests l’un à la suite de l’autre (Seq, 512K, 4K, 4K QD32),
  • Seq : test de lecture/écriture séquentiel (taille de bloc de 1024KB),
  • 512K : test de lecture/écriture aléatoire (taille de bloc de 512KB),
  • 4K : test de lecture/écriture aléatoire (taille de bloc de 4KB),
  • 4K QD32 : test de lecture/écriture aléatoire (taille de bloc de 4KB, Queue Depth de 32) pour NCQ&AHCI.
Tests des performances d'un disque SSD en lecture et écriture

Tests des performances d'un disque SSD en lecture et écriture

Tout comme son petit frère, CrystalDiskMark ne fonctionne que sur Windows et peut être utilisé en tant que simple exécutable.

Pour le télécharger, c’est sur la page de l’éditeur que ça se passe !

Trouvez toutes les informations de votre disque dur avec CrystalDiskInfo

Vous cherchez des informations sur votre disque dur comme son numéro de série, s’il est connecté en Sata II ou III, son firmware ou ses caractéristiques ? Disponible gratuitement, CrystalDiskInfo vous renseigne sur tout ce qu’il est possible de savoir !

Cette application supporte tout type de disque dur mécanique, ainsi que les disques SSD.

Il est possible d’afficher :

  • le firmware,
  • le numéro de série,
  • la vitesse de rotation (sauf pour les disques SSD),
  • la température,
  • l’état des disques (fonctions S.M.A.R.T.),
  • un graphique des informations S.M.A.R.T.,
  • etc.

On peut également modifier certains paramètres de vos disques (à utiliser avec parcimonie) comme l’AAM (Automatic Acoustic Management), ou l’APM (Advanced Power Management).

Afficher toutes les informations de votre disque dur avec CrystalDiskInfo

Afficher toutes les informations de votre disque dur avec CrystalDiskInfo

Il est également possible de définir des alertes mails pour le cas où certains seuils viendraient à être dépassés (température par exemple). Autre bon point, il n’est pas nécessaire de l’installer, on peut l’utiliser comme un simple exécutable ! :)

Pour le télécharger, rendez-vous sur la page de l’éditeur.

Note : fonctionne essentiellement pour les disques internes, même si l’application supporte quelques modèles de disques externes.

 

Test de montée en charge d’un site web ou d’une API avec Blitz.io

J’ai déjà abordé à 3 reprises les tests de montée en charge pour des sites ou des applications web :

  • via ApacheBench, à travers des commandes en ligne depuis un serveur,
  • avec LoadImpact, qui vous permet de tester des montées en charge sur des sites ou applications jusqu’à 50 utilisateurs simultanés gratuitement.

La semaine dernière, j’ai découvert presque caché dans le panier du libre de Nicolargo un nouveau concurrent : Blitz.io, et là….tadaaaa ! :)

Complètement développé en node.js, Blitz.io vous propose des tests de performances, ainsi que des tests de montée en charge pour votre site, application web, ou API RESTful. Blitz.io apporte beaucoup de fraîcheur dans l’écosystème des tests de performances.

Un test de performance simple sur Blitz.io

Un test de performance simple sur Blitz.io

(suite…)

Test de performances d’un disque sur Linux

Vous disposez d’un ou de plusieurs serveurs Linux ? Vous voulez tester les performances de votre disque en lecture/écriture ? Il existe plusieurs solutions, mais je ne vais en détailler que deux :

  • la commande hdparm,
  • une création/lecture de fichier avec la commande dd.

Test avec hdparm

hdparm est un utilitaire qui permet de modifier les paramètres d’un périphérique disque, mais il permet également de lancer un test de performance des temps de lecture via la commande :

hdparm -Tt /dev/sda

Ce qui donne sur mon serveur :

Performances en lecture d'un disque sur Linux

Paramètres :

  • -t : test des performances de lecture,
  • -T test des performances du cache.

Attention : la commande hdparm, si elle est mal utilisée, peut entraîner la corruption d’un disque.

Test avec la commande dd

La commande dd permet de créer, convertir et manipuler des fichiers sur Linux : en la combinant avec une autre commande et les bons paramètres, on peut en tirer les temps d’écriture et de lecture pour un fichier d’une taille donnée.

Le test de vitesse d’écriture se fait de la façon suivante :

time sh -c "dd if=/dev/zero of=/home/woueb bs=4096 count=256000 && sync"

On créé un fichier /home/woueb composé de 256000 blocs de 4Ko.

Test de performances en écriture d'un disque sur Linux

Et pour le test en lecture, on fait l’inverse : on lit le fichier /home/woueb précédemment créé.

time sh -c "dd if=/home/woueb of=/dev/zero bs=4096 count=256000 && sync"

Test de performances en lecture d'un disque sur Linux

Et voilà le travail ! :)

Boostez les performances PHP avec APC

Dans la jungle des techniques d’optimisation d’un serveur web, si vous avez une application ou un site/blog en PHP5, il existe une solution relativement simple à mettre en place : APC (pour Alternative PHP Cache).

Disponible sous forme de package PECL (PHP Extension Community Library), APC fait parti de ce que l’on nomme les « accélérateurs PHP ». Il en existe plusieurs autres :

  • eAccelerator,
  • XCache,
  • Turk MMCache (plus maintenu),
  • etc.

Logo APCJ’ai choisi APC pour sa facilité d’installation, mais également pour sa future intégration dans PHP 5.4 (puisque la  version 6 est annulée jusqu’à nouvel ordre).

Son fonctionnement est simple : APC est un cache d’OPCode. Le code qui est lisible par un humain doit être transformé en code lisible par une machine : dans le cas de PHP, ceci est fait à la volée, pour chaque exécution de fichier. APC intercepte la phase de compilation du code, et la remplace par du code déjà généré précédemment, qui avait été mis en mémoire. On économise ainsi une étape, et donc du traitement.

Cette technique est surtout utile avec l’utilisation de frameworks : en effet, le contenu des fichiers ne change pas en phase de production, la version en mémoire est donc toujours la bonne.

Avant de l’installer, je fais un benchmark avec ApacheBench, ce qui me permettra de faire une comparaison une fois le cache activé. :)

PHP & Apache Benchmark sans APC

PHP & Apache Benchmark sans APC

Note : le test a été réalisé en local sur la page d’accueil d’un blog WordPress. Apache peut fournir ici 111 requêtes par serconde.

Installation d’APC

La dernière version stable au moment où j’écris cet article est la 3.1.6. Pour commencer, il faut installer les paquets « php-pear » et « php-devel » car PECL en a besoin. Une fois installés, il suffit d’y aller gaiement avec la commande « pecl install apc ».

Installation d'APC via PECL

Installation d'APC via PECL

Note : il se peut que l’installation pose une ou deux questions. Si vous ne savez pas, laissez les valeurs par défaut.

Configuration

Il reste à activer APC pour qu’il soit chargé au lancement d’Apache. Il est possible d’ajouter la ligne suivante dans le php.ini :

extension=apc.so

Pour ma part, j’ai l’habitude de dissocier chaque fonction : j’utilise un fichier apc.ini qui charge APC, et qui contient les paramètres de configuration. Il se trouve dans /etc/php.d/

extension=apc.so
apc.shm_segments= »1″
apc.shm_size= »128″
apc.stat= »0″
apc.filters= »wp-admin »

La première ligne permet de charger l’extension, puis je déclare un segment de 128 Mo de cache. Le paramètre apc.stat positionné sur false indique qu’il ne faut pas vérifier si le code PHP a changé. Si vous êtes en phase de maquette/pré-production, vous pouvez le mettre sur 1, de telle façon qu’APC ira chercher quels fichiers sont modifiés depuis la dernière exécution.

Enfin, apc.filters me permet d’exclure le répertoire wp-admin de mon blog pour la mise en cache. Les paramètres seront pris en compte au prochain redémarrage d’Apache.

C’est le moment de refaire un benchmark pour voir le résultat :

PHP & Apache benchmark avec APC activé

PHP & Apache benchmark avec APC activé

Ici, on peut noter une différence relativement importante : 6 fois plus de requêtes simultanées possibles sur le même serveur. Ne vous réjouissez pas trop vite, cela dépend de pas mal de facteurs ! :)

Interface d’administration

Il existe une interface web toute prête qui vous permettra de consulter les statistiques d’utilisation de votre/vos instance(s) APC. Il faut copier le fichier /usr/share/pear/apc.php dans un répertoire qui est publié par le serveur web. Voici le résultat :

Dashboard APC : statistiques et debug

Dashboard APC : statistiques et debug

Si vous voulez protéger l’accès à cette interface, il suffit d’éditer le fichier apc.php, et d’y modifier les identifiants par défaut :

APC : identifiants par défaut

Identifiants par défaut

A noter qu’il est tout à fait possible d’associer APC et Memcached sur le même serveur : les deux systèmes sont totalement différents et n’assurent pas les mêmes fonctionnalités.

La documentation du paramétrage d’APC se trouve sur la page : Runtime Configuration.

Surveillez vos serveurs Memcached

Après un court article d’introduction sur Memcached, je reviens sur son monitoring. :)

Pour rappel :

Memcached est un système de cache d’objets distribué et non répliqué. Il va stocker des objets en RAM, pour diminuer les temps de réponses des applications.

Chaque serveur Memcached démarre avec une certaine quantité de mémoire allouée. Comme le système est de type LRU (Least Recently Used), ce sont les données les plus anciennes qui seront supprimées une fois la limite de la mémoire atteinte. Et inversement, il n’est pas non plus judicieux d’allouer trop de RAM car la perte d’une instance Memcached entrainerait la perte des données stockées (si elle n’est pas protégée/répliquée).

Pour surveiller les serveurs Memcached, on peut jouer avec beaucoup d’outils / de scripts (templates Cacti, Nagios, etc.), mais il existe une solution dédiée au monitoring  et au debugging de Memcached : phpmemcacheadmin.

Logo phpmemcacheadmin

Se présentant sous la forme de quelques fichiers PHP à déposer sur un serveur Web, on peut y ajouter et monitorer autant de serveurs Memcached que l’on souhaite.

On y retrouvera un tableau de bord avec divers statistiques :

  • mémoire utilisée pour le cache,
  • nombre de requêtes,
  • nombre et taux de hits (données présentes en cache, environ 75% dans mon cas),
  • trafic réseau,
  • etc.

Consultation des statistiques de vos serveurs Memcached via le Dashboard de phpmemcacheadmin

Il est également possible de consulter des statistiques « live » par serveur surveillé.

Statistiques live de Memcached via phpmemcacheadmin

Consultation "live" des statistiques

Enfin, il est possible de consulter les valeurs stockées via la page « Execute commands on Servers », et d’interagir avec : insertion, suppression, flush des données, etc.

Exécution de commandes via phpmemcacheadmin

Exécution de commandes via phpmemcacheadmin

Très bon complément de votre système de monitoring global, phpmemcacheadmin permet une vue plus complète de vos serveurs Memcached, pour une installation simplissime.