Два вопроса:
Есть ли способ отключить подкачку для данного процесса, т. Е. Возможно ли убить определенный процесс, если он использует всю доступную основную память системы?
Как деактивировать чрезмерную загрузку памяти в системе Linux?
Контекст:
Я запускаю распределенное приложение, и мне бы хотелось, чтобы процесс был убит, когда в системе не хватило основной памяти. Процесс довольно тяжелый на связи на жестком диске, для того, что я считаю разумным , чтобы проверить использование памяти программно, как:
std::ifstream statm("/proc/self/statm");
size_t mem_virt, mem_rss, mem_shared;
statm >> mem_virt >> mem_rss >> mem_shared;
if (mem_virt == MAX_SYSTEM_PRIMARY_MEMORY) {
// kills current process
}
Но если бы был какой-то набор командных строк, способных отключить своп для данного процесса, это было бы определенно лучше.
Тем не менее, я до сих пор не знаю, как отключить сверхкоммит. Есть идеи?