Plus de mémoire vive pour vp-istex-fsmap #186

Closed meja opened this issue on 6 Mar 2017 - 22 comments

@meja meja commented on 6 Mar 2017

Salutations,

Dans le cas de corpus volumineux à analyser (10 millions de fichiers), notre outil d'analyse se heurte violemment à la limite des 32 Go de mémoire vive du serveur vp-istex-fsmap. Le processus d'analyse s'est arrêté environ à 6 millions de fichiers. Pour être confortable, serait il possible de passer le serveur vp-istex-fsmap à 64 Go de mémoire vive ?

je dois l’arrêter, le memory hot add n'est pas actif sur cette vm.
maintenant ?

@meja meja commented on 6 Mar 2017

Oui, pourquoi pas. ;)

as usual un juste milieu de 48Go a été configuré ;-)

@meja meja commented on 6 Mar 2017

La prochaine fois, on demandera 128 Go :-D

@dieudonn dieudonn commented on 6 Mar 2017

Désolé sylvain on aurait du aller sur downloadmoreram.com avant de poster la demande :P

@meja meja closed this issue on 6 Mar 2017
@dieudonn dieudonn referenced the issue on 4 Apr 2017

Je réouvre, pour de gros corpus nous en sommes là :
Capture d’écran 2017-04-04 à 08

@dieudonn dieudonn reopened the issue on 4 Apr 2017
@scheffer scheffer commented on 4 Apr 2017

La capacité mémoire est la limite. Ce qui en fait un problème sans limite.
On ajoute de la mémoire et on repousse le problème un peu plus loin en espérant que ça va suffire.
Est-ce qu'il est possible de maîtriser l'application pour qu'elle ne consomme pas plus qu'un seuil donné?

@dieudonn dieudonn commented on 4 Apr 2017

La mémoire est utilisée par redis qui fait office de queue,
L'ensemble d'un corpus est chargé dans redis et traité à la volée, si on avait plus de coeurs disponibles les taches de la queue seraient traités plus rapidement et donc la memoire n'augmenterait pas tant.
L'idée de surveiller le taux d'occupation de memoire vive est bonne et nous allons nous y pencher avec pourquoi pas un système de pause/resume mais nos traitement en seront forcément bien ralentis, disons que si il y a de la memoire dormante on est preneur .

@scheffer scheffer commented on 4 Apr 2017

J'ai ajouté 2 Go de mémoire, pour voir.

@dieudonn dieudonn commented on 13 Apr 2017

Bonjour,

On avait un petit warning lors du démarage de redis :

"WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot"

Il semble que cette option permette une diminution de la memoire utilisée dans des cas comme le nôtre, par contre je n'ai pas les droits root pour le faire .

Il y aurait aussi un autre paramétre possible pour un redis de cette taille en production niveau cpu :

"echo '3' > /sys/class/net/eth1/queues/rx-0/rps_cpus"

Ainsi que quelques options :

net.ipv4.tcp_sack=1 # enable selective acknowledgements
net.ipv4.tcp_timestamps=1 # needed for selective acknowledgements
net.ipv4.tcp_window_scaling=1 # scale the network window
net.ipv4.tcp_congestion_control=cubic # better congestion algorythm
net.ipv4.tcp_syncookies=1 # enable syn cookied
net.ipv4.tcp_tw_recycle=1 # recycle sockets quickly
net.ipv4.tcp_max_syn_backlog=NUMBER # backlog setting
net.core.somaxconn=NUMBER # up the number of connections per port
net.core.rmem_max=NUMBER # up the receive buffer size
net.core.wmem_max=NUMBER # up the buffer size for all connections

Je pense que ce sont des options à tester, cf http://shokunin.co/blog/2014/11/11/operational_redis.html

@dieudonn dieudonn commented on 13 Apr 2017

Serait-il possible pour quelqu'un ayant les droit sudo sur cette machine de faire la premiére étape ?

@scheffer scheffer commented on 14 Apr 2017

C'est fait.
Le reste aussi.

@dieudonn dieudonn commented on 14 Apr 2017

Merci, je relance le programme et on vous tient au courant ;)

@meja meja commented on 18 Apr 2017

Quelques warnings suite aux modifications ...
Sélection_119

Sinon, une analyse a été lancé sur le corpus Springer et, dans les logs, on peut lire ceci :
Sélection_120
A tout hasard, est ce qu'il y a une intervention de votre coté sur le serveur vp-istex-fsmap à ce moment là ?

@scheffer scheffer commented on 20 Apr 2017

modification de paramètres système :
le nombre limite de fichiers ouverts est monté à 10240 (reconnexion user nécessaire)
/proc/sys/net/core/somaxconn = 512
vm.overcommit_memory = 1

Pour redis, il n'y a pas de trace d'une quelconque intervention de notre part.

@meja meja commented on 21 Apr 2017

Merci pour les modifications. Je relance l'analyse du corpus Springer Journals (~ 7 millions de documents) pour tester tout cela. ;)

@dieudonn dieudonn commented on 11 May 2017

Hello,

Toujours les même messages, l'OS semble killer le process lorsqu'il prend trop de memoire, charge à nous de lui donner une limite mais les paramètres de configuration système ne semblent pas avoir été gardés

Capture d’écran 2017-05-11 à 14
Capture d’écran 2017-05-11 à 14

@scheffer scheffer commented on 11 May 2017

Les paramètres sont rétablis. Ils devraient être conservés pour les prochains démarrages.

@ponticel ponticel closed this issue on 10 Jul 2017
@niederle niederle referenced the issue on 13 Feb 2018

Bonjour,
On a actuellement des soucis avec l'outil d'analyse de corpus Sisyphe et on soupçonne que ce soit lié aux soucis qu'ont eu Rémy et Mattias l'an dernier.
La chaîne de traitement s'arrête sans raison apparente et le seul message d'erreur qu'on obtient est le suivant. Je pense qu'il pourraît être provoqué par un kill sauvage d'un des process NodeJS.

{ Error [ERR_IPC_CHANNEL_CLOSED]: channel closed
    at ChildProcess.target.send (internal/child_process.js:590:16)
    at Promise (/applis/istex/home/sisyphe-master/src/overseer.js:90:15)
    at Promise._execute (/applis/istex/home/sisyphe-master/node_modules/bluebird/js/release/debuggability.js:303:9)
    at Promise._resolveFromExecutor (/applis/istex/home/sisyphe-master/node_modules/bluebird/js/release/promise.js:483:18)
    at new Promise (/applis/istex/home/sisyphe-master/node_modules/bluebird/js/release/promise.js:79:10)
    at Object.Overseer.send (/applis/istex/home/sisyphe-master/src/overseer.js:89:10)
    at getPatient.then.overseer (/applis/istex/home/sisyphe-master/src/dispatcher.js:132:27)
    at tryCatcher (/applis/istex/home/sisyphe-master/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/applis/istex/home/sisyphe-master/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/applis/istex/home/sisyphe-master/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromiseCtx (/applis/istex/home/sisyphe-master/node_modules/bluebird/js/release/promise.js:606:10)

Du coup, ma demande est : pourriez-vous vérifier les paramètres que vous aviez modifié à l'époque ? Il me semble qu'ils n'ont pas été conservé.

@niederle niederle reopened the issue on 13 Feb 2018
@scheffer scheffer commented on 13 Feb 2018

J'ai rectifié trois paramètres pour lesquels la valeur ne correspond pas à sa valeur d'initialisation.

Merci Philippe ! On va refaire un test pour voir si c'est mieux

@niederle niederle referenced the issue on 13 Feb 2018

Bon, on a toujours le problème. C'est sans doute autre chose... Je ferme l'issue
Merci en tous cas

@niederle niederle closed this issue on 13 Feb 2018
Labels

Priority
No priority
Milestone
No milestone
Assignee
No one
5 participants
@meja @ponticel @dieudonn @scheffer @niederle