7131Fermer7133
BrunniLe 23/08/2017 à 10:05
Zerosquare (./7107) :
Godzil > je considère l'overcommit comme un bug fondamental (on a déjà discuté du sujet), mais sous Linux ça me paraît difficile de s'en passer.

L'origine, c'est fork(). Sans overcommit, ça veut dire que si tu forkes un process qui a alloué 500 Mo (par exemple), tu te retrouves à devoir allouer 500 Mo pour le nouveau process, juste au cas où celui-ci modifierait toute la mémoire allouée (même si ça a peu de chances de se produire).

Or comme fork() est justement massivement utilisé sous Linux, à moins d'être prêt à rajouter plein de barrettes de RAM "au cas où", je ne vois pas trop de solutions.
Ca justement je ne comprends pas. Pourquoi tu ne pourrais pas faire de l'overcommit à la Windows, dans le swapfile ? Si une copie mémoire a peu de chances de se produire (ex. d'un fork) elle sera compressée et dégagée lorsque la mémoire sera remplie. Et si elle finit par arriver quand même ça fera une erreur de pagination et on remettra le bouzin en RAM. OK on a besoin de plus de swap avec ça, mais on n'a pas de situation d'overcommit ni besoin d'OOM killer.