Vive la mémoire... LIBRE !!!

Message
Author
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#21 Post by musher0 »

Loin de moi la pensée !!!

Simplement, je trouve curieux que ça marche sans probl. chez toi -- et tant mieux,
ça t'évite des révisions. Mais, sur mon slacko-6.0b, si j'essaie de faire tourner une
fonction style ash en bash ou inversement, à partir du testeur de geany, geany me
le fait savoir en termes clairs !!!

Et ça s'inscrit dans Xerrs_log. C'est pour ça que j'en parlais.

Bye!

Christian
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

augras
Posts: 1487
Joined: Mon 11 Nov 2013, 17:37
Location: france

#22 Post by augras »

Bonjour,
jplt wrote:Bonjour augras,
tu pourrais poster ta version avec tes modifications ?
J'ai été grillé sur le poteau pendant la nuit !
musher0 wrote: Rappel amical : les lunettes, c'est sur le nez que ça se porte ! :D ;)
Et oui, le problème étant que j'ai effectivement besoin de lunettes depuis environ 8 mois et que je n'ai pu obtenir un rendez-vous chez le spécialiste que fin juin, dans 5 mois.... 13 mois au total.
Notre système de santé tombe vraiment en décrépitude ! Et au final je ne vois plus les titres des fenêtres : pas facile tous les jours :wink:
musher0 wrote: Je joins une archive *.pet de replaceit pour la
commodité de la chose.
Je n'ai pas compris l'utilité de replaceit : supprimé du code tout fonctionne, apparemment, mais comme j'ai besoin de lunettes je me méfie maintenant, tout à fait normalement. J'avais compris que c'était pour les traductions mais tout est prévu dans le code.
Concrêtement quelle est la différence entre

Code: Select all

sync ; echo 3 > /proc/sys/vm/drop_caches;wait # Action 
et

Code: Select all

sync ; echo 3 | tee /proc/sys/vm/drop_caches &>/dev/null;wait # Action 
Musher0, dans ta version Mo est-ce que en ligne 27

Code: Select all

free >> $MMLBR 
tu n'aurais pas oublié le "-m" pour avoir

Code: Select all

free -m>> $MMLBR 
C'est pas trop mon truc le code, je m'interroge simplement.
Bonne journée,
Philippe

Médor

#23 Post by Médor »

Médor wrote:Re,

J'ai notamment modifié comme ci-dessous la ligne pour la purge suivant mon dernier message sur mon fil de mes pets de cleanup_memory & cleanup_mozilla (GUI).

Code: Select all

sync ; echo 3 > /proc/sys/vm/drop_caches;wait # Action
...
Bonjour Philippe,

voir mon lien ci-dessus, la commande tee n'est pas nécessaire et provoque des erreurs bien quelles soient honteusement flanquées sous le paillasson par : "&>/dev/null"


Cordialement,
Médor.

augras
Posts: 1487
Joined: Mon 11 Nov 2013, 17:37
Location: france

#24 Post by augras »

Pour replaceit j'ai trouvé, je crois :

Code: Select all

# Traduction
   $RMPL "-/+ buffers:" " ± tampons :";$RMPL Swap Éch.;$RMPL "Mem:" Mém. 
Il n'intervient qu'à ce niveau et sans lui j'ai buffers au lieu de tampons et swap au lieu de Mem !
Sinon pour le reste il n'intervient pas ?
J'ai bon ?
Philippe

augras
Posts: 1487
Joined: Mon 11 Nov 2013, 17:37
Location: france

#25 Post by augras »

Médor wrote:la commande tee n'est pas nécessaire et provoque des erreurs bien quelles soient honteusement flanquées sous le paillasson par : "&>/dev/null"
Merci Médor,
Je viens de lancer le script de Musher0, avec tee, et aucune erreur dans la console !
Je suis sous tahrpup6.01.
Philippe

Médor

#26 Post by Médor »

augras wrote:Pour replaceit j'ai trouvé, je crois :

Code: Select all

# Traduction
   $RMPL "-/+ buffers:" " ± tampons :";$RMPL Swap Éch.;$RMPL "Mem:" Mém. 
Il n'intervient qu'à ce niveau et sans lui j'ai buffers au lieu de tampons et swap au lieu de Mem !
Sinon pour le reste il n'intervient pas ?
J'ai bon ?
Philippe
Je vais regarder de plus près car je crois que je suis mal réveillé ;)

"tee" est à supprimer, si tu la laisse supprime "&>/dev/null" et regarde /tmp/xerrs.log :!:

Cordialement,
Médor.
Last edited by Médor on Sun 01 Feb 2015, 10:26, edited 2 times in total.

augras
Posts: 1487
Joined: Mon 11 Nov 2013, 17:37
Location: france

#27 Post by augras »

Je suis étonné : après avoir lancé le script quand je compare l'indication de mémoire utilisée avec celle donnée par lxtask, ce dernier indique environ 300 Mo de moins !

EDIT : je crois que je me suis mal exprimé et que l'on ne comprend pas ce que je voulais dire ! Le script m'indique après nettoyage par exemple 800 Mo utilisés alors que lxtask m'indique 500 Mo. On est pas à quelques Mo mais là il est anormal que 2 outils aient une telle différence dans le calcul de la mémoire vive utilisée.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#28 Post by musher0 »

augras wrote:
Médor wrote:la commande tee n'est pas nécessaire et provoque des erreurs bien quelles soient honteusement flanquées sous le paillasson par : "&>/dev/null"
Merci Médor,
Je viens de lancer le script de Musher0, avec tee, et aucune erreur dans la console !
Je suis sous tahrpup6.01.
Philippe
Salut, augras.

Deux-trois réponses ici, si tu permets.

Au sujet de ta remarque sur l'apparente incohérence entre free simple et free -m à
la ligne 27, j'ai tout uniformisé depuis, ici :
http://murga-linux.com/puppy/viewtopic. ... ost#825247

À strictement parler, j'aurais pu laisser free sans param. à la ligne de la variable
"d", puisque je vais pêcher la dimension du fichier d'échange seulement pour savoir
si 0 ou pas. Et 0 = 0...

Mais... à vrai dire, il faudrait que ce soit free -b et non free -m à cet endroit,
puisqu'on veut observer s'il y a la moindre chose dans le fichier d'échange. Car
0b != 0k != 0M != 0G, n'est-ce pas ? Par ex., on aurait 999 999,999 Mo dans un
fichier, et il ne serait pas faux de dire que ce fichier fait encore 0G... L'ordre de
grandeur détermine la sensibilité.
~~~~

Au sujet de l'erreur avec tee, je l'ai envoyée au pays des bytes oubliées par la
redirection &>/dev/null. Si pas de tee, pas besoin de redirection.

En réponse à Médor, la ligne avec tee, c'est la ligne originale de Joe, et à priori, je
ne touche pas aux lignes originales quand je remanie (question de respect, pas
d'efficacité informatique). Mais si tu me dis que l'emploi de tee n'est pas justifié,
c'est autre chose.

En passant, pas d'adjectif "honteux", s.t.p. On fait de l'informatique ici, pas de la
psycho populaire.
~~~~

Pour revenir à la question d'augras sur l'emploi de la dépendance replaceit. oui,
c'est ça, replaceit ne remplace que 2 mots.

Il faut aussi songer à l'alignement corect des colonnes et à la ponctuation correcte
en français. J'ai fait exprès de traduire "-/+ buffers:" par " ± tampons :" C'est
l'usage du signe "±" précédé d'un espace qui permet de respecter l'alignement et
la grammaire. Ouf... Merci aux scientifiques pour ce signe !

On pourrait se passer de replaceit en traitant chaque ligne de free séparément dans
awk ou autre à mesure qu'elle défile. Alors il faut fournir la traduction dans le script
puis utiliser du raboutement de "chaînes" avancé, car les chiffres changent dans les
lignes à chaque fois que le script tourne. C'est possible, mais j'ai un p'tit côté
paresseux : pourquoi le faire toi-même quand replaceit peut le faire à ta place ?! :)
~~~~

À+

musher0
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Médor

#29 Post by Médor »

Bonsoir musher0,
musher0 wrote:En réponse à Médor, la ligne avec tee, c'est la ligne originale de Joe, et à priori, je
ne touche pas aux lignes originales quand je remanie (question de respect, pas
d'efficacité informatique). Mais si tu me dis que l'emploi de tee n'est pas justifié,
c'est autre chose.
Tu ne sembles pas avoir lu mon dernier message sur mon fil de freemem_memory & freemem_mozilla GUI :!:

J'ai supprimé cette commande 'tee' inutile, de plus elle génère un message d'erreur qui se retrouve donc dans /tmp/xerrs.log à moins de le cacher sous le paillasson avec "&>/dev/null" en fin de ligne :evil:

Lire l'extrait de la page de man jointe sur mon fil :!:
La commande 'tee' n'est pas mentionnée ;)


Cordialement,
Médor.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#30 Post by musher0 »

Vu. Merci de l'explication donnée là.

Bon, ben... retour à l'établi ! :)

À+

musher0
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Médor

#31 Post by Médor »

musher0 wrote:Bon, ben... retour à l'établi !
Je te fais confiance ;)

Cordialement,
Médor.

jplt

#32 Post by jplt »

Excellent script Musher0.

Un grand merci.

Médor

#33 Post by Médor »

Bonsoir Philippe,
augras wrote:Je suis étonné : après avoir lancé le script quand je compare l'indication de mémoire utilisée avec celle donnée par lxtask, ce dernier indique environ 300 Mo de moins !

EDIT : je crois que je me suis mal exprimé et que l'on ne comprend pas ce que je voulais dire ! Le script m'indique après nettoyage par exemple 800 Mo utilisés alors que lxtask m'indique 500 Mo. On est pas à quelques Mo mais là il est anormal que 2 outils aient une telle différence dans le calcul de la mémoire vive utilisée.
Voici l'explication :
http://a.michelizza.free.fr/pmwiki.php? ... dminMemory :
La commande free wrote: ...
Dans l'exemple ci-dessus, le système dispose en tout de 4054 Mo de mémoire.
Sur ce total, 3893 Mo sont utilisés et 161 Mo sont inutilisés.

A première vue, toute la mémoire est consommée et la machine est donc dans un état critique.
Pourtant, çe n'est pas du tout le cas.



Attention à ne pas confondre mémoire inutilisée et mémoire disponible !

Le système consomme un maximum de mémoire pour optimiser au mieux ses performances via l'utilisation de caches, et il n'y a donc que très peu de mémoire inutilisée (colonne free).
Mais la mémoire utilisée par les caches (colonnes buffers et cached) peut être libérée à tout moment.

La deuxième ligne indique la quantité de mémoire réellement consommée par les applications (colonne used) et la mémoire réellement disponible (colonne free) :
-/+ buffers/cache: ........ 390 ....... 3663

En cessant d'utiliser les caches, le système ne consommerait donc plus que 390 Mo de mémoire alors que 3663 Mo seraient disponibles.
Finalement, ce serveur a encore beaucoup de mémoire disponible en réserve !
...
Ici avec free je n'ai généralement, comme sur ma capture précédente, que 7 Mo de libre sur 238 Mo de ram ;)
Tu peux noter que dans LxTask il y a dans Affichage une case en principe cochée : Afficher la mémoire utilisée par le cache comme étant libre.
Htop ne donne les mêmes valeurs que LxTask.


Cordialement,
Médor.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#34 Post by musher0 »

@augras

On peut traduire des champs avec awk, mais c'est beaucoup plus lent qu'avec
replaceit.

En modifiant la fonction FreeMem comme suit et en enlevant la ligne des chaînes
"replaceit" plus bas dans le script, on peut s'en passer, on y arrive, mais avec
lenteur ainsi qu'avec un problème de mise en forme à la ligne 3 (voir capture) :

Code: Select all

FreeMem () {
echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- .... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" >> $MMLBR
if [ ${LANG:0:2} = "fr" ];then
	echo "(En Mo)      total        utilisé      libre        partagé    tampons" > /tmp/mevlibr
	echo "`free -m | awk -F"  " 'NR=="2" { print "Mém.";for (i=2; i<=NF; i++) print $i" " }'| tr '\n' ' '`" >> /tmp/mevlibr
	echo "`free -m | awk -F"  " 'NR=="3" { print "±tampons";for (i=3; i<=NF; i++) print $i" " }'| tr '\n' ' '`" >> /tmp/mevlibr
	echo "`free -m | awk -F"  " 'NR=="4" { print "Éch. ";for (i=2; i<=NF; i++) print $i" " }'| tr '\n' ' '`" >> /tmp/mevlibr
else
	free -m | awk -F"  " 'NR=="1" { print "(In Mb)";for (i=2; i<=NF; i++) print $i" " }'| tr "\n" " " > /tmp/mevlibr
	echo >> /tmp/mevlibr
	free -m | tail -n 3 >> /tmp/mevlibr
fi
	cat /tmp/mevlibr >> $MMLBR;rm -f /tmp/mevlibr
echo . >> $MMLBR
}
On notera les deux façons de mettre la ligne awk, etc., en forme avec echo. J'ai
mis une 2e forme dans la partie anglaise.

Le problème, c'est qu'on ne sait pas combien d'espaces mettre à awk comme
séparateur de champs (le -F " "), parce que les résultats de free vont varier et
donc le remplissage entre les chiffres.

Je conserve la version avec replaceit, qui est beaucoup plus rapide et qui ne
bouscule pas la mise en forme.

Intéressante découverte par contre, cette possibilité de traduire des éléments de
texte avec awk exactement là où on veut dans un tableau. (Déduite à partir de :
http://www.theunixcode.com/2013/12/usin ... o-the-last,
le post de "Koullis" au milieu de la page.) Ça peut toujours servir.

À+

musher0
Attachments
Traduit-avec-awk_2015-02-01_18.10.59.jpg
Mise en forme déjantée à la ligne 3...
(46.15 KiB) Downloaded 336 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#35 Post by musher0 »

Salut, les gars !

Sous cette forme on gagne une seconde... de 4 à 3. (Voir archive ci-jointe.)

Renommez l'ancien fichier cleanup_memory cleanup_memory.vieux, faites un lien
symbolique de cleanup_memory3 à cleanup_memory, et ça va marcher comme
avant. Rien d'autre à changer.

Aussi une présentation de deux lignes plus compacte, mais pas la peine de mettre
une saisie d'écran juste pour ça.

Soyez prévenus que j'arrête là, avant de devenir tout à fait gaga !!!... :P :roll: :shock:
(Hé, les ricaneurs au fond de la salle : silence ! Je sais, c'est déjà commencé !!!) ;)

À+

musher0
Attachments
cleanup_memory3.zip
Dans cette version, on travaille davantage sur les chaînes directement en mémoire.
On économise ainsi le temps de plusieurs enregistrements transitoires sur disque.
Bravo à celui ou à celle qui a inventé &quot;echo -e $VARIABLE&quot; !
(1.41 KiB) Downloaded 391 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

augras
Posts: 1487
Joined: Mon 11 Nov 2013, 17:37
Location: france

#36 Post by augras »

Bonjour,
Mon insistance sur replaceit signifiait juste que je ne comprenais pas à quoi il servait : j'ai trouvé, vous avez confirmé et j'ai installé le paquet mis à disposition par musher0.
Pour les explications sur les différences entre le script et lxtask c'est compris aussi.
Et ce soir je vais prendre la dernière version... et reviendrai avec mes questions ! :wink:
Bonne journée,
Philippe

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#37 Post by musher0 »

Salut, Philippe.

replaceit est une manière de "stream editor (sed)"*, en beaucoup moins
compliqué**. Je le trouve très commode, justement pour les cas où autres utilitaires
sont trop lents ou nécessitent trop de contorsions dans le script. il est tellement
petit qu'il devrait faire partie de tout Puppy, selon moi.

À+

musher0

* S.t.p. voir : https://fr.wikipedia.org/wiki/Stream_Editor

**
replaceit - v1.0.0 - PLD Software (C) - http://pldaniels.com/replaceit 2001
Usage: replaceit --input=<filename> [--wholeline] "<replace>" "<with>" [["[+-]<string to be present>" | "<-string to be non-present>"] ...]

--input : Name of file to apply the replacements to
--wholeline : Replace the entire line with <with>, rather than partial replacement
<replace> : String we're searching for
<with> : What we wish to replace <replace> with
<[+-]string> : A string which should be also detected on the line
-<string> : A string which we DO NOT want detected in the line
<}string> : This string must appear AFTER the section to replace
<{string> : This string must appear BEFORE the section to replace

example: ./replaceit --input=myfile.c "_MY_DEFINE" "_YOUR_DEFINE" "-#define" "};"
... et c'est tout ! :)
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#38 Post by musher0 »

Bonjour, le monde !

Un exercice amusant basé sur /proc/meminfo : :)

Code: Select all

# En "one-liner"
clear;echo;A="`grep wap /proc/meminfo | tr -s ' ' | tr '\n' ' '`";echo -e "$A" | awk '{ print "                     "$4"   "$7"    "$1"\n                     "$5" "$6" - "$8" "$9" = "$2" "$3  }';echo

# En code lisible !
clear
echo;A="`grep wap /proc/meminfo | tr -s ' ' | tr '\n' ' '`" # Et ch'te mous !
echo -e "$A" | awk '{ print "                     "$4"   "$7"    "$1"\n                     "$5" "$6" - "$8" "$9" = "$2" "$3  }' # Et ch'te pétris !
echo
Morale de l'histoire : awk gobe les fichiers par derrière et les chaînes par devant !!!
Comprenne qui pourra !!! :D

Bye !

musher0
~~~~~~~~
Et pendant qu'on y est, pourquoi ne pas essayer :

Code: Select all

echo;cat /proc/meminfo | head -n 4 | tr -s ' ' | tr '\n' ' ';echo;echo
Attachments
Les-chaînes-par-devant.jpg
La malléabilité de l'information nécessite du travail ! :)
(14.91 KiB) Downloaded 275 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#39 Post by musher0 »

Rebonjour.

On trouvera ici une application, à un menu pekwm, de la formule de découverte de mmoire vive disponible avec /proc/meminfo :
http://murga-linux.com/puppy/viewtopic. ... ost#826067

Je joins aussi ci-dessous une dernière mouture (sont-elles jamais définitives ?!) du script
cleanup_memory que vous m'avez aidé à récrire.

Au plaisir.

musher0
Attachments
cleanup_memory3a.zip
Remanié en utilisant davantage le potentiel des chaînes et en faisant appel à
/proc/meminfo dans des calculs. Ainsi, la vitesse d'exécution du script diminue encore,
de 3 s à ± 2,7s (rubrique &quot;real&quot; dans &lt;time -p cleanup_memory3&gt;).
(1.38 KiB) Downloaded 398 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

jplt

#40 Post by jplt »

Je viens de lancer cleanup_memory3a :

Code: Select all

./cleanup_memory3: line 31: can't create /root/my-applications/Systeme/mem_libr.txt: nonexistent directory
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
./cleanup_memory3: line 40: can't create /root/my-applications/Systeme/mem_libr.txt: nonexistent directory
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
awk: fatal: cannot open file `/root/my-applications/Systeme/mem_libr.txt' for reading (No such file or directory)
Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)Error: Cannot open /root/my-applications/Systeme/mem_libr.txt (No such file or directory)
La fenetre se ferme instantanement.

J'ai testé sous tahrpup 6.0.

Post Reply