Maxim Gorbunov fd0b1ac7c0 Generate CMakeLists (#2184) 1 year ago
..
CMakeLists.darwin-arm64.txt ffff7a34e4 add darwin-arm64 CMakeLists 1 year ago
CMakeLists.darwin-x86_64.txt d28c55ab25 Intermediate changes 1 year ago
CMakeLists.linux-aarch64.txt d28c55ab25 Intermediate changes 1 year ago
CMakeLists.linux-x86_64.txt d28c55ab25 Intermediate changes 1 year ago
CMakeLists.txt fd0b1ac7c0 Generate CMakeLists (#2184) 1 year ago
CMakeLists.windows-x86_64.txt d28c55ab25 Intermediate changes 1 year ago
README.md d28c55ab25 Intermediate changes 1 year ago
stockpile.h d28c55ab25 Intermediate changes 1 year ago
stockpile_linux.cpp d28c55ab25 Intermediate changes 1 year ago
stockpile_other.cpp d28c55ab25 Intermediate changes 1 year ago
ya.make d28c55ab25 Intermediate changes 1 year ago

README.md

stockpile

При приближении к лимиту памяти в memory cgroup, linux запускает механизм direct reclaim, чтобы освободить свободную память. По опыту YT, direct reclaim очень сильно замедляет работу всего процесса.

Проблема возникает не только, когда память занята анонимными страницами. 50% памяти контейнера может быть занято не dirty страницами page cache, но проблема всёравно будет проявляться. Например, если процесс активно читает файлы с диска без O_DIRECT, вся память очень быстро будет забита.

Чтобы бороться с этой проблемой, в яндексовом ядре добавлена ручка madvise(MADV_STOCKPILE). Больше подробностей в https://st.yandex-team.ru/KERNEL-186