Subject: Les limites mémoires de LilyPond

From: Seventies <[email-masked]>
Date: Tue, 3 Mar 2015 07:06:53 -0700 (MST)

Bonjour à tous,

Sous Windows, LilyPond occupe beaucoup de mémoire, pour tout dire, il
travaille uniquement en mémoire physique et ne semble pas utiliser la
mémoire virtuelle.

Eh bien voilà, j'ai presque atteint la limite de cette mémoire, avec le
second concerto pour piano de Brahms.
Au moment le plus critique, il reste 85 Mo de libres sur les 4 Go (en
réalité, 3,3 Go reconnus par Windows - version 7).

Et pour ce faire, il faut fermer tous les programmes, y compris le
navigateur, le client de messagerie, et pour tout dire, il est conseillé de
redémarrer la session, car de nombreux programmes laissent ça et là des
bribes de mémoire non libérée.

C'est vrai, ce concerto est gigantesque, sans doute un des plus complexes du
répertoire, mais ... le travail n'est pas encore complètement terminé.

Je pourrai sans doute encore grappiller quelques ressources en désactivant
le point-and-clic, en arrêtant l'anti-virus ou les logiciels d'arrière plan
(sauvegarde automatique, ...) ou ... en retournant sous XP ;-)

Plus sérieusement, ne faudrait-il pas demander au staff de se pencher sur ce
problème. J'ignore totalement la complexité d'une éventuelle solution. Je
connais bien trop peu de programmation dans le domaine de l'allocation
dynamique de la mémoire ou dans la gestion de la mémoire virtuelle. Je me
doute également que la portabilité de LilyPond sur diverses plateformes
impose des contraintes pas simples à mettre en œuvre.

Mais voilà, le problème est posé. D'autant plus que chaque évolution de l'OS
est  plus exigeante que la précédente. Fatalement, sous Windows 8, le
problème deviendra encore plus préoccupant.

Parenthèse fermée, je retourne à l'encodage ;-)

Cordialement,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Les-limites-memoires-de-LilyPond-tp7582325.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Tue, 3 Mar 2015 15:33:04 +0100

Bonjour Jean-François,

Oui, je comprends tout à fait ton inquiétude.
Plusieurs personnes se sont déjà penchées sur le sujet et proposent des
compilation partielles/intermédiaires (voir à ce sujet :
https://lists.gnu.org/archive/html/lilypond-devel/2014-04/msg00018.html -
http://lilypondblog.org/2015/01/partially-compiling-a-lilypond-score/ et
http://lilypondblog.org/2014/07/trees-music-and-lilypond/).
En langue française, je crois bien que Gilles Thibault avait également
proposé quelque chose ici :
http://lilypond-french-users.1298960.n2.nabble.com/Une-nouvelle-bibliotheque-de-fonctions-quot-arranger-ly-quot-tt7581588.html
(je n'ai pas encore eu l'occasion d'essayer car j'écris très peu de pièces
orchestrales).
A voir donc.

Bien cordialement,
Pierre

Le 3 mars 2015 15:06, Seventies <[email-masked]> a écrit :

> View this message in context:
> http://lilypond-french-users.1298960.n2.nabble.com/Les-limites-memoires-de-LilyPond-tp7582325.html
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Tue, 3 Mar 2015 15:35:05 +0100

PS. ... sans oublier, bien sûr :
http://www.lilypond.org/doc/v2.18/Documentation/notation/skipping-corrected-music

---

From: Remy CLAVERIE <[email-masked]>
Date: Tue, 3 Mar 2015 15:41:04 +0100 (CET)

Hello,

Sous Ubuntu aussi j'avais eu le même Pb pour compiler un ensemble de litanies (presque 300pages de mémoire). En désactivant le Pont and Click, c'était passé....

Rémy

 

> Message du 03/03/15 15:23
> De : "Seventies" 
> A : [email-masked]
> Copie à : 
> Objet : Les limites mémoires de LilyPond
> 
> Bonjour à tous, Sous Windows, LilyPond occupe beaucoup de mémoire, pour tout dire, il travaille uniquement en mémoire physique et ne semble pas utiliser la mémoire virtuelle. Eh bien voilà, j'ai presque atteint la limite de cette mémoire, avec le second concerto pour piano de Brahms. Au moment le plus critique, il reste 85 Mo de libres sur les 4 Go (en réalité, 3,3 Go reconnus par Windows - version 7). Et pour ce faire, il faut fermer tous les programmes, y compris le navigateur, le client de messagerie, et pour tout dire, il est conseillé de redémarrer la session, car de nombreux programmes laissent ça et là des bribes de mémoire non libérée. C'est vrai, ce concerto est gigantesque, sans doute un des plus complexes du répertoire, mais ... le travail n'est pas encore complètement terminé. Je pourrai sans doute encore grappiller quelques ressources en désactivant le point-and-clic, en arrêtant l'anti-virus ou les logiciels d'arrière plan (sauvegarde automatique, ...) ou ... en retournant sous XP ;-) Plus sérieusement, ne faudrait-il pas demander au staff de se pencher sur ce problème. J'ignore totalement la complexité d'une éventuelle solution. Je connais bien trop peu de programmation dans le domaine de l'allocation dynamique de la mémoire ou dans la gestion de la mémoire virtuelle. Je me doute également que la portabilité de LilyPond sur diverses plateformes impose des contraintes pas simples à mettre en œuvre. Mais voilà, le problème est posé. D'autant plus que chaque évolution de l'OS est plus exigeante que la précédente. Fatalement, sous Windows 8, le problème deviendra encore plus préoccupant. Parenthèse fermée, je retourne à l'encodage ;-) Cordialement, Jean-François -- View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Les-limites-memoires-de-LilyPond-tp7582325.html Sent from the LilyPond French Users mailing list archive at Nabble.com. _______________________________________________ liste de diffusion lilypond-user-fr [email-masked] https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

---

From: Remy CLAVERIE <[email-masked]>
Date: Tue, 3 Mar 2015 19:48:34 +0100 (CET)

C'est tout de même très étonnant que Lilypond n'utilise pas la mémoire vurtuelle. D'ailleurs, c'est généralement transparent pour le programmeur : c'est dédié à une ou des bibliothèques spécifiques du langage. Je ne connais pas Scheme mais ça m'étonnerait que l'utilisateur doive lui-même programmer qd utiliser la mémoire virtuelle.

Par contre, il est tout à fait possible que Scheme n'utilise pas des objets ou des variables dynamiques ; ceci pourrait peut être expliquer la nécessité de grande capacité mémoire mais pas forcément le fait d'utiliser ou non la mémoire virtuelle.

Tiens, je vais aller voir comment fonctionne Scheme...

Bonne soirée

Rémy

 

> Message du 03/03/15 15:48
> De : "Pierre Perol-Schneider" 

> A : "Seventies" 
> Copie à : "lilypond-user-fr" 

> Objet : Re: Les limites mémoires de LilyPond
> 
>

Bonjour Jean-François,
Plusieurs personnes se sont déjà penchées sur le sujet et proposent des compilation partielles/intermédiaires (voir à ce sujet : https://lists.gnu.org/archive/html/lilypond-devel/2014-04/msg00018.html - http://lilypondblog.org/2015/01/partially-compiling-a-lilypond-score/ et http://lilypondblog.org/2014/07/trees-music-and-lilypond/).
En langue française, je crois bien que Gilles Thibault avait également proposé quelque chose ici : http://lilypond-french-users.1298960.n2.nabble.com/Une-nouvelle-bibliotheque-de-fonctions-quot-arranger-ly-quot-tt7581588.html (je n'ai pas encore eu l'occasion d'essayer car j'écris très peu de pièces orchestrales).
A voir donc.
Bien cordialement,
Pierre

Le 3 mars 2015 15:06, Seventies  a écrit :
Bonjour à tous,

---

From: Seventies <[email-masked]>
Date: Tue, 3 Mar 2015 13:54:30 -0700 (MST)

Merci de vos réactions.

Effectivement, le problème ne se pose pas dans l'immédiat puisque, pour la
directrice comme pour les parties, les fichiers d'entrée sont très courts.
Il faut donc quelques secondes pour désactiver un ou plusieurs des quatre
mouvements.

Ici, contrairement aux travaux précédents, je désire présenter une
directrice de type professionnelle, c'est à dire une portée par instrument
(deux portées pour les flûtes, quatre pour les cors ...), et au format B4.

Comme les fichiers sont très bien structurés, grâce aux variables et aux
tags, il a suffit de quatre soirées pour réaliser cette partition. 214
pages, mais comme dans tout concerto, énormément de vides.

Mais la compilation utilise 1850 Mo, contre 1310 Mo pour la directrice
classique (vents groupés par deux).

Qui plus est, j'ai réalisé quelques tests, pour constater que d'autres
applications peuvent tourner en même temps. Là, c'est Windows qui gère la
mémoire virtuelle, et les applications inactives sont reportées vers cette
mémoire.

Il est même possible de compiler simultanément deux gros fichiers LilyPond :
ils sont considérés comme processus indépendants, et Windows gère lui-même
l'échange de la mémoire. Au pire, le temps de calcul est triplé, voire
décuplé, car la majorité du temps de calcul est réservé aux échanges.

Par contre, si la partition LilyPond devient plus importante, ça coince :
j'ai dédoublé, le temps d'un test, le dernier mouvement, et là, ça n'est pas
passé :
"This application has requested the Runtime to terminate it in an unusual
way.
Please contact the application's support team for more information.
terminate called after throwing an instance of 'std::bad_alloc'
  what():  St9bad_alloc
This object should be a markup: ()"

N'étant pas spécialiste de la mémoire virtuelle, j'ai tout de même jeté un
œil sur ce procédé, et visiblement, les applications doivent spécifier, lors
de l'allocation mémoire, si le bloc alloué doit rester ou non en mémoire
physique. Et le maintient semble être l'option par défaut.

En résumé donc :
- d'autres processus peuvent tourner simultanément sans trop de problème,
- LilyPond possède bien une limite au delà de laquelle la compilation
échoue.

J'ai fait de la programmation dans ma jeunesse, mais je ne suis plus capable
de donner aucun conseil.
Toutefois, dans certaines applications gourmandes en mémoire, la solution
était de surveiller la mémoire disponible, et en cas de manque, d'envoyer
des blocs de donnée dans des fichiers temporaires. Plus facile à dire qu'à
faire, il faut souvent revoir les bases même de l'application.

Alors, peut-être une solution pour la 2.22 ? ;-)

Cordialement,

Jean-François

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Les-limites-memoires-de-LilyPond-tp7582325p7582331.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.