[BENCHMARK] disque / tmpfs

Proposer ou rechercher un tutoriel concernant le Raspberry Pi

Modérateur : Francois

Répondre
dyox
Raspinaute
Messages : 969
Enregistré le : dim. 28 déc. 2014 15:28
Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe

[BENCHMARK] disque / tmpfs

Message par dyox » dim. 6 sept. 2020 15:53

Bonjour,

Voici un script pour voir la différence entre la vitesse d'écriture avec un disque / tmpfs et avec / sans cache.
Ce script doit être lancer avec sudo pour automatiser plus facilement la chose.
On doit préalablement se créer un tmpfs de tmp.
Personnellement, sur ma Pi2 j'ai :

Code : Tout sélectionner

 tmpfs	/tmp	tmpfs	defaults,suid,mode=1777,size=256M	0	0
Adaptez la taille en Méga suivant votre tmpfs dans le script.
Ce script crée un fichier "test_data" sous "/" et il reste présent dans tous les essais, il n'est crée qu'une seule fois. Mettez l'argument "clear" pour l'effacer à la fin des tests.
Par défaut, les tests sont fait sans cache, c'est la condition la plus défavorable. Mettez l'argument "oui" pour le test avec cache.
Lancez 2/3 fois le script sans / avec cache pour vous faire une idée du benchmark.

Bons essais !

Toutes propositions sont bienvenues pour améliorer ce script.

Code : Tout sélectionner

#!/bin/bash

# >>>>> VARIABLES A MODIFIER <<<<<

FILE="test_data"
TAILLE="2000" # en Mega

# >>>>> PAS TOUCHE ! <<<<<

CACHE="$1"
#CALCUL_TAILLE=`echo "1 * $TAILLE" | bc` # le 1 c'est le bs

##############################     README     ###############################
#
# comparaison de benchmarks entre tmpfs et disque
#
# d'abord se créer un tmpfs de /tmp du genre :
# tmpfs	/tmp	tmpfs	defaults,mode=1777,nosuid	0	0
# Si pas de taille de préciser, c'est la moitié de la RAM
#
# Par défaut, on vide le cache / tampon avant chaque benchmark, sinon les résultats seront faussés (beaucoup + rapide)

# Si on veut tester avec le cache, lancez le script avec "oui" comme argument
#
# quelques commandes pour voir tout ça : free -wth
#					 du -h /tmp/
#					 top
#                                        cat /proc/meminfo
#					 swapon -s
#					 vmstat -s
#                                        
#############################################################################


# Variables des couleurs shell
red="\e[31m"
redBold="\e[1;31m"
green="\e[32m"
greenBold="\e[1;32m"
yellow="\e[33m"
yellowBold="\e[1;33m"
blue="\e[34m"
blueBold="\e[1;34m"
redBgWhiteBold="\e[1;41m"
lightRedBgWhite="\e[1;42m"
NC="\e[0m"

FLASH="\n\e[5m${red}>>>${NC}"
blink="\e[5m"
FAIT="\n${redBgWhiteBold}>>> Fait !${NC}\n"
attention="\e[5m${red}Attention${NC}${red}"


#>>>>>>>>>>> B E G I N <<<<<<<<<<<<<

# Etre sûr que ce script est lancé en tant que root
if [ $(id -u) != 0 ]; then
	echo -e ${redBold}${blink}"\n\tPrivilèges insuffisants pour exécuter ce script !\n\tRelancez ce script avec sudo\n"${NC}
	exit
fi

# A appliquer à la finale, pour effacer les traces que l'on vient de faire
if [[ $1 == "clear" ]]; then
	rm /$FILE 2>/dev/null
	echo 3 > /proc/sys/vm/drop_caches
	echo -e ${greenBold}"\n=> Suppression de \"/$FILE\" et du cache\n"${NC}	
	exit
fi

function cache()
{
	if [[ $CACHE != "oui" ]]; then
		echo 3 > /proc/sys/vm/drop_caches # Libère la mémoire des données du cache / tampon
		echo -e ${yellow}"\n=> Cache vidé"${NC}
	fi
}

# Avant de commencer on vide le cache, ou pas !
cache

# On crée le fichier s'il n'existe pas, c'est pour les tests consécutifs
if [ ! -e /$FILE ]; then
	echo -e ${greenBold}"\n=> Création d'un fichier \"$FILE\" de $TAILLE Mo dans /, patientez..."${NC}
	dd if=/dev/zero of=/$FILE status=progress conv=fdatasync bs=1M count=$TAILLE
	cache	
fi

echo -e ${greenBold}"\n=> Benchmark du tmpfs"${NC};  dd if=/$FILE of=/tmp/${FILE}_copie bs=1M conv=fdatasync
cache

echo -e ${greenBold}"\n=> Benchmark du disque"${NC}; dd if=/$FILE of=/${FILE}_copie bs=1M conv=fdatasync
cache

echo -e ${greenBold}"\n=> Suppression de \"/${FILE}_copie\""${NC}; rm /${FILE}_copie
echo -e ${greenBold}"=> Suppression des fichiers dans /tmp/"${NC}; rm -fr /tmp/*
echo -e ${redBgWhiteBold}"\n=> Si vous avez fini vos tests, vous pouvez maintenant supprimer \"/${FILE}\" et également le cache avec la commande \"sudo $0 clear\""${NC}
echo
Image
source
Modifié en dernier par dyox le mer. 9 déc. 2020 12:10, modifié 2 fois.

dyox
Raspinaute
Messages : 969
Enregistré le : dim. 28 déc. 2014 15:28
Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe

Re: [BENCHMARK] disque / tmpfs

Message par dyox » dim. 6 sept. 2020 15:57

Sur ma Pi2 avec sd

Code : Tout sélectionner

1er lancement

=> Cache vidé

=> Création d'un fichier "test_data" de 240 Mo dans /, patientez...
251658240 octets (252 MB, 240 MiB) copiés, 11 s, 22,7 MB/s
240+0 enregistrements lus
240+0 enregistrements écrits
251658240 octets (252 MB, 240 MiB) copiés, 25,966 s, 9,7 MB/s

=> Cache vidé

=> Benchmark du tmpfs
240+0 enregistrements lus
240+0 enregistrements écrits
251658240 octets (252 MB, 240 MiB) copiés, 10,8576 s, 23,2 MB/s

=> Cache vidé

=> Benchmark du disque
240+0 enregistrements lus
240+0 enregistrements écrits
251658240 octets (252 MB, 240 MiB) copiés, 38,5564 s, 6,5 MB/s

2e lancement avec "oui"

=> Benchmark du tmpfs
240+0 enregistrements lus
240+0 enregistrements écrits
251658240 octets (252 MB, 240 MiB) copiés, 10,783 s, 23,3 MB/s

=> Benchmark du disque
240+0 enregistrements lus
240+0 enregistrements écrits
251658240 octets (252 MB, 240 MiB) copiés, 29,3721 s, 8,6 MB/s

3e lancement avec "oui"

=> Benchmark du tmpfs
240+0 enregistrements lus
240+0 enregistrements écrits
251658240 octets (252 MB, 240 MiB) copiés, 1,9222 s, 131 MB/s

=> Benchmark du disque
240+0 enregistrements lus
240+0 enregistrements écrits
251658240 octets (252 MB, 240 MiB) copiés, 27,8904 s, 9,0 MB/s

Répondre

Retourner vers « Tutoriels »