Comment se connecter à la consommation de la mémoire sous Linux?
Est-il prêt à utiliser la solution pour vous connecter à la consommation de mémoire à partir du démarrage du système? J'aimerais enregistrer les données sur simple fichier texte ou une base de données afin que je puisse l'analyser plus tard.
Je travaille sur Linux 2.4 basée sur un système embarqué. J'ai besoin de déboguer le problème lié à la consommation de mémoire. Ma demande de démarrer automatiquement à chaque démarrage du système. J'ai besoin de la façon d'obtenir les données avec des horodatages de intervalles réguliers (aussi souvent que possible), donc je peux traquer problème.
Les symptômes de mon problème: lorsque le système démarre, il a lancé ma principale de l'application et de l'interface graphique pour visualiser les principaux paramètres du système. Interface graphique basée sur GTK+ (serveur X). Si je désactive le GUI et le serveur X puis mon application fonctionne OK. Si j'active l'interface graphique et le serveur X, il ne fonctionne pas quand j'ai 256 de MiB ou 512 mo de mémoire physique installée sur la carte mère. Si j'ai 1 Go de mémoire installés, alors tout est OK.
- Cela ressemble à cette question: stackoverflow.com/questions/131303/...
- Est-ce que votre application au moins exécutée pendant un certain temps avant de s'écraser ?
- Oui, les versions précédentes fonctionne OK dans le même système. Maintenant, nous développons une nouvelle version, et de commencer à frapper ce problème.
Vous devez vous connecter pour publier un commentaire.
Un petit script comme
free -s 1 > memory.log
, ce n'est pas à supporter les coûts de lancement d'un nouveau processus à chaque seconde. Il n'a pas l'horodatage, cependant. (Je sais c'est un vieux post, mais je cherchais la même chose, et les autres aussi).free -h -c 3 -s 1
sysfs
et puis connectez-vous de l'utilisation de la mémoire? Je suis à l'aide d'un programme écrit enC
et que vous souhaitez vous connecter à l'utiliser avec un minimum de frais généraux?Le script suivant imprime le temps de timbres et d'un en-tête.
La sortie ressemble à ceci (testé sur Ubuntu 15.04, 64 bits).
Il y a un programme appelé
sur les systèmes *nix. Vous pouvez essayer de l'utiliser pour surveiller l'utilisation de la mémoire. Il prend des mesures à intervalles réguliers. Faire un
pour plus de détails. Je pense que l'option -r pour prendre de la mémoire de mesures, -i pour spécifier l'intervalle de temps que vous le souhaitez.
Je pense que l'ajout d'une entrée crontab sera assez
Il existe d'autres outils comme SeaLion, New Relic, La Densité Du Serveur, etc, qui va presque faire la même chose mais sont beaucoup plus faciles à installer et à configurer. Mon préféré est le lion de mer, qu'il est gratuit et aussi il donne une superbe vue chronologique des premières sorties de la commune de commandes linux.
Vous pouvez mettre quelque chose comme
dans un script de démarrage. Depuis votre application est déjà en cours de démarrage vous pouvez simplement ajouter cette ligne à la fin du script d'initialisation de votre application utilise déjà.
(où X est le nombre de secondes entre les messages de journal)
Je suis un grand fan de l'enregistrement de tout et je trouve qu'il est utile de savoir quels sont les processus à l'aide de la mémoire et combien par chaque processus (ainsi que le récapitulatif des statistiques). La commande suivante enregistre un top imprimé commandé par la consommation de mémoire toutes les 0,5 secondes:
Il suffit de noter que le fichier journal va croître beaucoup plus rapidement que si vous gardez uniquement la mémoire totale de l'utilisation des statistiques pour être sûr de ne pas manquer d'espace disque.