По-конкретно, от често задаваните въпроси на Redis
Схемата за фоново запазване на Redis разчита на семантиката за копиране при запис на fork в съвременните операционни системи:Redis се разклонява (създава дъщерен процес), който е точно копие на родителя. Детският процес изхвърля DB на диск и накрая излиза. На теория детето трябва да използва толкова памет, колкото родителят е копие, но всъщност благодарение на семантиката на копиране при запис, внедрена от повечето съвременни операционни системи, родителският и дъщерният процес ще споделят общите страници с памет. Една страница ще се дублира само когато се промени в дъщерния или в родителския. Тъй като на теория всички страници могат да се променят, докато дъщерният процес се записва, Linux не може да каже предварително колко памет ще заеме детето, така че ако настройката overcommit_memory е настроена на нула вилка ще се провали, освен ако няма толкова свободна RAM, колкото изисква се наистина да се дублират всички родителски страници с памет, в резултат на което ако имате набор от данни Redis от 3 GB и само 2 GB свободна памет, той ще се провали.
Задаването на overcommit_memory на 1 казва на Linux да се отпусне и да изпълнява форка по по-оптимистичен начин на разпределение и това наистина е това, което искате за Redis.
Redis не се нуждае от толкова памет, колкото ОС смята, че трябва, за да записва на диск, така че може предварително да се провали във вилка.