web-dev-qa-db-fra.com

Pour tester mon système, j'ai besoin d'un script qui utilise autant de mémoire RAM et d'échange que possible.

Je teste mon système avec zram. J'ai besoin d'un script qui utilise le plus de RAM possible. Ce script devrait remplir mon bélier avec des éléments aléatoires, pas seulement des zéros.

4
Raansu

memtester est un programme utilisateur conçu pour allouer de la mémoire (toute quantité spécifiée) et la tester avec des motifs aléatoires. Cela évitera toutefois l'utilisation de l'échange. Mais si vous enlevez d'abord toute la mémoire avec memtester (vérifiez avec free -m), puis démarrez tout ce qui utilise beaucoup de mémoire (gimp, firefox, ...), cela devrait lancer l'échange. .

Une autre alternative serait quelque chose comme openssl Rand -base64 $((1024*1024*1024)) | less et en moins utilisez > pour sauter à la dernière ligne; cela entraînera le chargement en mémoire de 1 Go de données aléatoires codées en base64 (mais cela sera lent).

Si vous recherchez quelque chose de plus efficace, un petit script dans n'importe quel langage de script (par exemple, Python) peut suffire.

#!/usr/bin/python2
import numpy
result = [numpy.random.bytes(1024*1024) for x in xrange(1024)]
print len(result)

Cela allouerait 1G de mémoire avec des données aléatoires et imprimerait le nombre de Mo alloué avant de terminer. Si vous voulez plus de 1024 Mo, adaptez la valeur xrange en conséquence.

5
frostschutz

Je suggérerais d'utiliser le programme stress , installable à partir des référentiels avec Sudo apt-get install stress.

Pour tester votre RAM, utilisez stress -m x où x est le nombre de travailleurs qui vont remplir le bélier. Choisissez plus de travailleurs pour utiliser plus de RAM.

4
prophecy201

Il suffit de courir:

echo {1..1000000000}

Explication:

Le shell, avant de donner la commande au noyau, étend toutes les expressions régulières et les mains courtes. La commande développée est temporairement stockée dans la RAM. La commande ci-dessus se développe en une très grande commande et remplira donc complètement le RAM (testé sur 8 Go).

ATTENTION: Ce n'est pas une manière contrôlée de remplir la RAM. Vous pourriez être bloqué après avoir exécuté cette commande. Je vous conseille de garder votre system monitor ouvert (pour regarder l'utilisation de RAM) et d'essayer avec des nombres plus petits.

3
Severus Tux

Comme le suggère prophecy201 , stress est un excellent outil pour utiliser la mémoire de votre système. Ajouter plus de travailleurs va utiliser plus de RAM, mais cela demandera aussi plus de CPU, ce qui est assez inefficace si tout ce que vous voulez, c'est tester la RAM. Sans oublier que zram aura besoin du processeur pour la compression.

Au lieu de cela, vous devez augmenter la quantité de RAM utilisée avec l'indicateur --vm-bytes. Par exemple, pour utiliser jusqu'à 4 Go de RAM avec un opérateur:

stress -m 1 --vm-bytes 4G

Vous pouvez également trouver le drapeau --vm-keep utile car il contiendra l’allocation de mémoire au lieu de réallouer en permanence, de sorte que l’utilisation de la mémoire sera constante au lieu de fluctuer:

stress -m 1 --vm-bytes 4G --vm-keep

Enfin, jetez un coup d’œil ici pour vous assurer que zram est ce que vous voulez vraiment; puisque vous avez un échange, zswap peut être une meilleure solution: zram vs zswap vs zcache Guide ultime: quand utiliser lequel

2
bmaupin

Attendez-vous à ce que zswap fonctionne extrêmement mal - réduisez considérablement les performances - si vous remplissez la mémoire avec des octets aléatoires, en particulier si vous touchez une grande quantité de mémoire au hasard.

zram compresse le contenu des pages de mémoire et la compression ne fonctionne que si les données sont non aléatoires. Les données réelles (en particulier les données en mémoire) sont généralement assez compressibles.

en outre, zram n’aide que si vous avez "localité de référence", comme le font la plupart des programmes: ils ont tendance à toucher les mêmes pages à plusieurs reprises avant de toucher un autre sous-ensemble de pages. (C’est la raison pour laquelle la mémoire virtuelle normale fonctionne également. La mise en cache compressée consiste simplement à ajouter un nouveau niveau de mémoire entre les pages non compressées normales et le stockage sur disque.)

Si vous le savez et tentez délibérément de tester zswap dans les pires conditions, peut-être pour rechercher des bogues, foncez.

Mais sinon, vous devriez probablement lire le document de Paul R. Wilson et al. "L'argument de la mise en cache compressée dans les systèmes de mémoire virtuelle", qui explique quand RAM la compression aide, quand ça fait mal et comment un algorithme adaptatif peut utiliser quand ça aide et pas quand ça ne marche pas. (Le document est en ligne au format HTML sur certains sites USENIX, et au format pdf ailleurs. Recherchez-le sur Google.)

Malheureusement, pour autant que je sache, zram ne fait pas le type d'adaptation automatique générale qu'il décrit, vous devez donc définir la taille du cache compressé à une valeur habituelle raisonnable pour votre charge de travail.

Si vous avez plus de RAM que n’importe quel de vos programmes, mais que les applications inactives utilisent trop de mémoire, vous pouvez basculer d’une application à l’autre. Les pages des applications inactives ont tendance à être compressées et, lorsque vous revenez à ces pages, elles doivent uniquement être décompressées plutôt que chargées à partir du disque.

1
memwiz