La solution que barmic et moi on essaie de te faire faire est: "il faut réserver la mémoire pour ces fichiers".
Je rappelle que ma proposition initiale était de montrer qu’avoir plein de RAM ne signifie pas être à l’aise.
Les histoires de Firefox et autres choses c’étaient des exemples pour soutenir cette proposition.
Je ne suis pas non-plus venu chercher de l’aide. Je connais bien une bonne partie des solutions que vous avez proposées, je n’y ai parfois même pas répondu parce que c’est pas la peine, c’est hors sujet. Je montrais simplement que la consommation de mémoire augmente avec la taille disponible et que donc on ne peut pas supposer qu’ajouter de la mémoire résolve tous les problèmes rencontré avec moins de mémoire.
Prenons l’argument du ramdisk en tmpfs auquel j’ai peu répondu et pour cause : je connais cet outil, mais je m’y suis pas vraiment attardé car la contradiction présuppose que je ne m’en serve pas déjà, et ne confirme ni ne contredit l’hypothèse qu’avoir plein de RAM ne signifie pas être à l’aise.
Je pratique le ramdisk depuis plus d’une décade au moins, je sais que ça existe, et de nombreux outils que j’écris supposent qu’un ramdisk est actif pour en tirer le maximum de performances, exemple en 2015, exemple en 2017, exemple en 2018. Mais j’ai à peine pris la peine d’y répondre parce que ça pollue le sujet initial.
Mais par exemple je peux dire qu’un ramdisk ne peut pas "réserver la mémoire pour ces fichiers", non, ça ne réserve pas la mémoire pour ces fichiers:
Ce qui réserve la mémoire c’est d’écrire un fichier dans ce ramdisk. Ça veut dire que c’est complètement dépendant du moment, de l’état en cours des tâches, etc. Une application comme Firefox ne va pas s’empêcher de grossir entre deux tâches, et quand un gros fichier va être copié, il y a de fortes chances que ce soient d’autres applications qui soient déplacées vers le swap pour conserver la taille de Firefox en mémoire.
Bref, ça va, je connais ces outils. Selon les besoins j’utilise des ramdisks, j’utilise bcache pour avoir un cache en lecture et écriture sur SSD, j’utilise le cache mémoire, et selon les besoins j’utilise telle ou tell solution plus adaptée, et les combines. Si le cache mémoire est le plus simple à mettre en œuvre et qu’il suffit de killall -9 firefox je ne vais pas m’embêter à mettre en œuvre un workflow plus complexe. Par contre à pratiquer toutes ces différentes méthodes j’ai assez de connaissance pour dire que non, ajouter de la mémoire ne fait pas disparaître magiquement certains problèmes parce que oui, ajouter de la mémoire augmente la consommation mémoire.
Tu remarqueras que barmic ignore les autres exemples qui ne nourrissent pas sa contradiction, comme le cas d’usage de compiler LLVM et Mesa en mode Debug et où une seule tâche de link de certains fichiers de LLVM peut manger 8Go de RAM, ce qui veut dire que pour compiler rapidement LLVM en mode Debug, le nombre de jobs à passer à cmake est min(mémoire disponible / 8, nombre de cœurs). Faire un bisect de LLVM en même temps que Firefox décide de bouffer 100Go parce qu’il le peut ça peut augmenter la durée du bisect de plusieurs heures. Et là je ne vois pas comment un ramdisk va aider, et là encore un killall -9 firefox est le plus efficace, quitte à le réouvrir immédiatement pour un ou deux onglets nécessaires en laissant les autres non-encore chargés.
Si je ne suis pas venu chercher de l’aide ça ne veut pas dire que je n’accueille pas avec un bienveillance un quelconque conseil, il y a forcément des choses que je ne connais pas. Mais à la base la conversation portait sur l’impact d’ajouter de la mémoire à un système et l’éventuelle disponibilité de celle-ci.
De même, je n’ai pas de problème avec la contradiction mais ici on voit bien qu’est nourrie une contradiction artificielle en cherry-pickant, fabriquant des hommes de paille (exemple), au point que certains pourraient en venir à supposer mes intentions et mes besoins en fonction de cela, comme quand tu écris « La solution que barmic et moi on essaie de te faire faire est [...] » alors qu’à aucun moment cela ne répond à un besoin de ma part.
Ce n’était que des exemples pour appuyer ma proposition que la conso mémoire augmente avec l’ajout de mémoire et que ça peut avoir des effets de bord. L’exemple même de l’emploi explicite du cache disque n’est cité que parce que c’en devient plus facile à mesurer et donc l’exemple est pratique pour montrer que tel ou tel comportement a des effets de bords. C’était tout. Et même pour celui qui laisse son système décider de quoi mettre en cache disque, l’embonpoint d’un programme aura tout de même un impact sur le cache disque et donc les i/o, mais dit comme ça c’est pas facile à mesurer donc j’ai pris un exemple certes plus rare mais plus facile à mesurer. C’était tout.
À force d’affiner la conversation on se rend tout de même compte que le message final porté par barmic, le véritable sujet sous-jacent, c’est l’idée que tu reformules là:
Je pense que le comportement de Firefox est très logique: tu possèdes une machine qui a de la mémoire disponible, il n'y a aucune raison de ne pas l'employer par défaut.
Ça c’est en fait une idée profonde qui sous-tend cette discussion, on le remarque d’ailleurs avec la caricature de barmic du principe d’économie en « frugalité ». Cette vision des choses est une idéologie. Ce sujet n’est pas technique.
Le principe d’économie est un principe essentiel, ce n’est pas parce que le litre de super coûterait 10 centimes le litre qu’il faudrait faire des voitures qui consomment 50l/100km, car même en ignorant complètement l’aspect écologique ça aurait un impact sur toute la logistique, et peut-être même la charge de travail des travailleurs de cette logistique. De même une application qui grossit beaucoup va avoir un impact sur le temps d’écriture en swap (et le nombre d’écriture sur le disque swap) et les ressources associées quand elle sera en sommeil et que le système va vouloir la mettre en swap, c’est encore de la logistique ! Ce sont des ressources physiques avec un coût d’acquisition, un coup d’utilisation, etc. Dans le cas de Mimoza qui n’a pas de swap, ce coût logistique sera supprimé, mais pour toute personne qui a un swap, il sera présent. Au final, c’est un cas très particulier (ne pas avoir de swap) qui compense exceptionnellement le surcoût logistique de cette idéologie.
Je ne sais pas si cette idéologie a un nom, mais c’est l’idéologie très répandue que toute ressource disponible peut être exploitée à son maximum. C’est une idéologie certes dominante mais elle est aussi très particulière, ne va pas nécessairement de soi si on se décentre du contexte et, et cette idéologie a le droit d’être questionnée.
Je pense que le comportement de Firefox est très logique: tu possèdes une machine qui a de la mémoire disponible, il n'y a aucune raison de ne pas l'employer par défaut.
Redéfinissons la situation dans un autre contexte : un homme a un enfant et un appartement 3 pièce. Son gosse a ses jouets rangés dans l’armoire, et il y en a deux-trois qui traînent dans le séjour et dans sa chambre. L’homme s’installe à son compte, déménages, il a désormais 4 pièces à vivre (y a deux jumeaux qui s’annoncent) plus un grand garage pour préparer des choses pour son boulot et entreposer du matériel plus un bureau où il va s’installer pour faire de la télémaintenance. Son gosse ne se sert plus du tout de l’armoire sauf pour un seul jouet qu’il a déjà oublié, il y a un jouet par terre tous les deux mètres et quand il a fini de jouer avec l’un il le repose par terre. Qui dira que « Je pense que le comportement du gosse est très logique, il y a l’espace disponible il n’y a aucune raison de ne pas l’employer par défaut. » ? Un autre enfant peut-être, mais pas son père ou sa mère, le responsable des ressources et de la logistique.
J’ai par exemple supposé que les développeurs de Firefox ne doivent pas supposer que la ressource disponible est disponible pour Firefox, et j’ai donné un exemple allant en ce sens : il y a peu de chance que quelqu’un ajoutant 100Go à une machine ajoute ces 100Go pour Firefox. Cet exemple défend l’idée que le principe d’économie est tout à fait recevable. Alors ce principe a été explicitement caricaturé en « frugalité ». Le débat n’est plus technique.
Et on touche à un autre concept : le concept d’idolâtrie. L’idolâtrie c’est le fait d’affecter des ressources à quelque chose qui n’en mérite pas. Par exemple, un homme a plein d’affaires, il faudrait qu’il s’en sépare, il ne le fait pas, le jour où il doit déménager, soit il achète un appartement plus grand et il paie littéralement un crédit pour stocker ces affaires, soit il sacrifie sa qualité de vie pour ces affaires et dans les deux cas ses affaires sont des idoles. Ou alors, autre exemple, son coffre de voiture est plein d’affaires à ranger mais il les laisse-là, et donc à chaque déplacement il dépense du carburant pour transporter ses affaires, ces choses sinon la procrastination à ne pas les ranger deviennent des idoles à laquelle il sacrifie son propre salaire.
Il y a une fibre, de la RAM, du CPU à gogo, et une ligne électrique reliée à une centrale nucléaire, il n'y a aucune raison de ne pas les employer ? Bah si, le principe d’économie, et le principe d’économie ça n’est pas une caricature de frugalité.
Décider d’affecter une telle ressource à Firefox, à part peut-être dans des cas très particulier, c’est de l’idolâtrie. Et Internet ne dors jamais, l’idole est donc un monstre à gueule ouverte où l’on sacrifie ses enfants sans que jamais l’idole ne soit rassasiée. C’est pour ça par exemple que je fais souvent un killall -STOP firefox quand je verrouille ma session pour qu’il cesse de mouliner, tout en évitant le coût d’une extinction et un redémarrage complet de Firefox. Pourtant on pourrait dire que les ressources CPU, mémoire, disque et réseau sont disponibles et qu’il serait donc logique de les exploiter autant que disponible pour que les pages et autres applications web soient 100% à jour à tout instant.
L’autre chose gênante que barmic a semé dans ses commentaires et peut orienter l’interprétation de mes propres paroles, c’est le fait d’en faire des problèmes entre personnes et des problèmes d’intention.
Par exemple j’ai parlé de décision, c’est neutre, c’est un constat factuel. Si je dis que lorsqu’un développeur de Firefox décide d’attribuer la mémoire disponible à Firefox il décide que ce sont les développeurs des applications web qui sont les utilisateurs de ma machine, c’est un constat factuel, ce n’est peut-être même pas son intention, mais factuellement, l’un implique l’autre. Je ne suppose pas l’intention, il n’y a pas de jugement. Il s’agit simplement d’établir la chaîne de responsabilité ou simplement la chaîne de réaction pour identifier là où les choses sont introduites. Il y a aussi plein de situation dans la vie où décider d’une chose décide d’autres choses, des effets de bord, etc. Mais il faut pouvoir identifier quelle décision a entraîné quel effet de bord pour diagnostiquer proprement le problème et le traiter. Et ne pas prendre une décision peut parfois être une décision, ne serait ce qu’en priorisant d’autres points de décision à traiter. Et ce n’est pas mal ou bien, mais c’est un diagnostique nécessaire. Il ne s’agit pas de chercher un coupable, un bouc émissaire, de supposer des intentions maléfiques.
Et pourtant voici ce qui a été écrit :
À part si tu les prend à parti en prenant comme hypothèse qu'ils sont sciemment contre toi.
C’est hyper gênant parce que ça, ça suppose et réinterprète a posteriori ce que je dis en proposant une lecture très orientée de mes propres paroles, ce qui pourrait encore d’autres réponses et contradictions fondées sur du vent.
Bref, on perd notre temps. À la base je disais simplement qu’augmenter la mémoire pouvait augmenter la consommation mémoire, mais dire cela rappelait que le principe d’économie existe. Et l’existence de ce principe questionne une idéologie dominante, et la conversation en est venue à caricaturer le message (principe d’économie transformé en « frugalité ») et à caricaturer le porteur du message (supposer un délire de persécution). Il n’y a pas de solution technique à ce problème.
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: Pas de swap ... pas de problème
Posté par Thomas Debesse (site web personnel, Mastodon) . En réponse au journal Zswap, ZRam, EarlyOOM... organiser la gestion d'une pénurie de mémoire vive. Évalué à 6.
Je rappelle que ma proposition initiale était de montrer qu’avoir plein de RAM ne signifie pas être à l’aise.
Les histoires de Firefox et autres choses c’étaient des exemples pour soutenir cette proposition.
Je ne suis pas non-plus venu chercher de l’aide. Je connais bien une bonne partie des solutions que vous avez proposées, je n’y ai parfois même pas répondu parce que c’est pas la peine, c’est hors sujet. Je montrais simplement que la consommation de mémoire augmente avec la taille disponible et que donc on ne peut pas supposer qu’ajouter de la mémoire résolve tous les problèmes rencontré avec moins de mémoire.
Prenons l’argument du ramdisk en tmpfs auquel j’ai peu répondu et pour cause : je connais cet outil, mais je m’y suis pas vraiment attardé car la contradiction présuppose que je ne m’en serve pas déjà, et ne confirme ni ne contredit l’hypothèse qu’avoir plein de RAM ne signifie pas être à l’aise.
Je pratique le ramdisk depuis plus d’une décade au moins, je sais que ça existe, et de nombreux outils que j’écris supposent qu’un ramdisk est actif pour en tirer le maximum de performances, exemple en 2015, exemple en 2017, exemple en 2018. Mais j’ai à peine pris la peine d’y répondre parce que ça pollue le sujet initial.
Mais par exemple je peux dire qu’un ramdisk ne peut pas "réserver la mémoire pour ces fichiers", non, ça ne réserve pas la mémoire pour ces fichiers:
Ce qui réserve la mémoire c’est d’écrire un fichier dans ce ramdisk. Ça veut dire que c’est complètement dépendant du moment, de l’état en cours des tâches, etc. Une application comme Firefox ne va pas s’empêcher de grossir entre deux tâches, et quand un gros fichier va être copié, il y a de fortes chances que ce soient d’autres applications qui soient déplacées vers le swap pour conserver la taille de Firefox en mémoire.
Bref, ça va, je connais ces outils. Selon les besoins j’utilise des ramdisks, j’utilise bcache pour avoir un cache en lecture et écriture sur SSD, j’utilise le cache mémoire, et selon les besoins j’utilise telle ou tell solution plus adaptée, et les combines. Si le cache mémoire est le plus simple à mettre en œuvre et qu’il suffit de
killall -9 firefoxje ne vais pas m’embêter à mettre en œuvre un workflow plus complexe. Par contre à pratiquer toutes ces différentes méthodes j’ai assez de connaissance pour dire que non, ajouter de la mémoire ne fait pas disparaître magiquement certains problèmes parce que oui, ajouter de la mémoire augmente la consommation mémoire.Tu remarqueras que barmic ignore les autres exemples qui ne nourrissent pas sa contradiction, comme le cas d’usage de compiler LLVM et Mesa en mode Debug et où une seule tâche de link de certains fichiers de LLVM peut manger 8Go de RAM, ce qui veut dire que pour compiler rapidement LLVM en mode Debug, le nombre de jobs à passer à cmake est
min(mémoire disponible / 8, nombre de cœurs). Faire un bisect de LLVM en même temps que Firefox décide de bouffer 100Go parce qu’il le peut ça peut augmenter la durée du bisect de plusieurs heures. Et là je ne vois pas comment un ramdisk va aider, et là encore unkillall -9 firefoxest le plus efficace, quitte à le réouvrir immédiatement pour un ou deux onglets nécessaires en laissant les autres non-encore chargés.Si je ne suis pas venu chercher de l’aide ça ne veut pas dire que je n’accueille pas avec un bienveillance un quelconque conseil, il y a forcément des choses que je ne connais pas. Mais à la base la conversation portait sur l’impact d’ajouter de la mémoire à un système et l’éventuelle disponibilité de celle-ci.
De même, je n’ai pas de problème avec la contradiction mais ici on voit bien qu’est nourrie une contradiction artificielle en cherry-pickant, fabriquant des hommes de paille (exemple), au point que certains pourraient en venir à supposer mes intentions et mes besoins en fonction de cela, comme quand tu écris « La solution que barmic et moi on essaie de te faire faire est [...] » alors qu’à aucun moment cela ne répond à un besoin de ma part.
Ce n’était que des exemples pour appuyer ma proposition que la conso mémoire augmente avec l’ajout de mémoire et que ça peut avoir des effets de bord. L’exemple même de l’emploi explicite du cache disque n’est cité que parce que c’en devient plus facile à mesurer et donc l’exemple est pratique pour montrer que tel ou tel comportement a des effets de bords. C’était tout. Et même pour celui qui laisse son système décider de quoi mettre en cache disque, l’embonpoint d’un programme aura tout de même un impact sur le cache disque et donc les i/o, mais dit comme ça c’est pas facile à mesurer donc j’ai pris un exemple certes plus rare mais plus facile à mesurer. C’était tout.
À force d’affiner la conversation on se rend tout de même compte que le message final porté par barmic, le véritable sujet sous-jacent, c’est l’idée que tu reformules là:
Ça c’est en fait une idée profonde qui sous-tend cette discussion, on le remarque d’ailleurs avec la caricature de barmic du principe d’économie en « frugalité ». Cette vision des choses est une idéologie. Ce sujet n’est pas technique.
Le principe d’économie est un principe essentiel, ce n’est pas parce que le litre de super coûterait 10 centimes le litre qu’il faudrait faire des voitures qui consomment 50l/100km, car même en ignorant complètement l’aspect écologique ça aurait un impact sur toute la logistique, et peut-être même la charge de travail des travailleurs de cette logistique. De même une application qui grossit beaucoup va avoir un impact sur le temps d’écriture en swap (et le nombre d’écriture sur le disque swap) et les ressources associées quand elle sera en sommeil et que le système va vouloir la mettre en swap, c’est encore de la logistique ! Ce sont des ressources physiques avec un coût d’acquisition, un coup d’utilisation, etc. Dans le cas de Mimoza qui n’a pas de swap, ce coût logistique sera supprimé, mais pour toute personne qui a un swap, il sera présent. Au final, c’est un cas très particulier (ne pas avoir de swap) qui compense exceptionnellement le surcoût logistique de cette idéologie.
Je ne sais pas si cette idéologie a un nom, mais c’est l’idéologie très répandue que toute ressource disponible peut être exploitée à son maximum. C’est une idéologie certes dominante mais elle est aussi très particulière, ne va pas nécessairement de soi si on se décentre du contexte et, et cette idéologie a le droit d’être questionnée.
Redéfinissons la situation dans un autre contexte : un homme a un enfant et un appartement 3 pièce. Son gosse a ses jouets rangés dans l’armoire, et il y en a deux-trois qui traînent dans le séjour et dans sa chambre. L’homme s’installe à son compte, déménages, il a désormais 4 pièces à vivre (y a deux jumeaux qui s’annoncent) plus un grand garage pour préparer des choses pour son boulot et entreposer du matériel plus un bureau où il va s’installer pour faire de la télémaintenance. Son gosse ne se sert plus du tout de l’armoire sauf pour un seul jouet qu’il a déjà oublié, il y a un jouet par terre tous les deux mètres et quand il a fini de jouer avec l’un il le repose par terre. Qui dira que « Je pense que le comportement du gosse est très logique, il y a l’espace disponible il n’y a aucune raison de ne pas l’employer par défaut. » ? Un autre enfant peut-être, mais pas son père ou sa mère, le responsable des ressources et de la logistique.
J’ai par exemple supposé que les développeurs de Firefox ne doivent pas supposer que la ressource disponible est disponible pour Firefox, et j’ai donné un exemple allant en ce sens : il y a peu de chance que quelqu’un ajoutant 100Go à une machine ajoute ces 100Go pour Firefox. Cet exemple défend l’idée que le principe d’économie est tout à fait recevable. Alors ce principe a été explicitement caricaturé en « frugalité ». Le débat n’est plus technique.
Et on touche à un autre concept : le concept d’idolâtrie. L’idolâtrie c’est le fait d’affecter des ressources à quelque chose qui n’en mérite pas. Par exemple, un homme a plein d’affaires, il faudrait qu’il s’en sépare, il ne le fait pas, le jour où il doit déménager, soit il achète un appartement plus grand et il paie littéralement un crédit pour stocker ces affaires, soit il sacrifie sa qualité de vie pour ces affaires et dans les deux cas ses affaires sont des idoles. Ou alors, autre exemple, son coffre de voiture est plein d’affaires à ranger mais il les laisse-là, et donc à chaque déplacement il dépense du carburant pour transporter ses affaires, ces choses sinon la procrastination à ne pas les ranger deviennent des idoles à laquelle il sacrifie son propre salaire.
Il y a une fibre, de la RAM, du CPU à gogo, et une ligne électrique reliée à une centrale nucléaire, il n'y a aucune raison de ne pas les employer ? Bah si, le principe d’économie, et le principe d’économie ça n’est pas une caricature de frugalité.
Décider d’affecter une telle ressource à Firefox, à part peut-être dans des cas très particulier, c’est de l’idolâtrie. Et Internet ne dors jamais, l’idole est donc un monstre à gueule ouverte où l’on sacrifie ses enfants sans que jamais l’idole ne soit rassasiée. C’est pour ça par exemple que je fais souvent un
killall -STOP firefoxquand je verrouille ma session pour qu’il cesse de mouliner, tout en évitant le coût d’une extinction et un redémarrage complet de Firefox. Pourtant on pourrait dire que les ressources CPU, mémoire, disque et réseau sont disponibles et qu’il serait donc logique de les exploiter autant que disponible pour que les pages et autres applications web soient 100% à jour à tout instant.L’autre chose gênante que barmic a semé dans ses commentaires et peut orienter l’interprétation de mes propres paroles, c’est le fait d’en faire des problèmes entre personnes et des problèmes d’intention.
Par exemple j’ai parlé de décision, c’est neutre, c’est un constat factuel. Si je dis que lorsqu’un développeur de Firefox décide d’attribuer la mémoire disponible à Firefox il décide que ce sont les développeurs des applications web qui sont les utilisateurs de ma machine, c’est un constat factuel, ce n’est peut-être même pas son intention, mais factuellement, l’un implique l’autre. Je ne suppose pas l’intention, il n’y a pas de jugement. Il s’agit simplement d’établir la chaîne de responsabilité ou simplement la chaîne de réaction pour identifier là où les choses sont introduites. Il y a aussi plein de situation dans la vie où décider d’une chose décide d’autres choses, des effets de bord, etc. Mais il faut pouvoir identifier quelle décision a entraîné quel effet de bord pour diagnostiquer proprement le problème et le traiter. Et ne pas prendre une décision peut parfois être une décision, ne serait ce qu’en priorisant d’autres points de décision à traiter. Et ce n’est pas mal ou bien, mais c’est un diagnostique nécessaire. Il ne s’agit pas de chercher un coupable, un bouc émissaire, de supposer des intentions maléfiques.
Et pourtant voici ce qui a été écrit :
C’est hyper gênant parce que ça, ça suppose et réinterprète a posteriori ce que je dis en proposant une lecture très orientée de mes propres paroles, ce qui pourrait encore d’autres réponses et contradictions fondées sur du vent.
Bref, on perd notre temps. À la base je disais simplement qu’augmenter la mémoire pouvait augmenter la consommation mémoire, mais dire cela rappelait que le principe d’économie existe. Et l’existence de ce principe questionne une idéologie dominante, et la conversation en est venue à caricaturer le message (principe d’économie transformé en « frugalité ») et à caricaturer le porteur du message (supposer un délire de persécution). Il n’y a pas de solution technique à ce problème.
ce commentaire est sous licence cc by 4 et précédentes