Я дивився на надмірну передачу пам'яті в Linux за допомогою /proc/sys/vm/overcommit_memory
, і я прочитав кілька статей, які не говорять про те саме.
Цей документ у заголовку "Перехід у неправильному напрямку" продовжує говорити: "значення 1: виконувати перекомітування та 0 (за замовчуванням): не робити", але потім у наступних кількох рядках згадується серед подібних речі, що це насправді не так і що 0 означає "здогадуйтеся про те, наскільки розумне перевиконання". Це означає, що перевиконання пам'яті не вимкнено, використовуючи значення 0, правда?
Він також говорить про те, що 1 вказує на "ніколи не відмовляйте жодному malloc ()", а 2 означає "будьте точні щодо перевиконання - ніколи не здійснюйте віртуальний адресний простір, більший за простір swap плюс частку overcommit_ratio фізичної пам'яті".
Журнал Red Hat , з іншого боку, стверджує, "якщо значення дорівнює 0, то ядро перевіряє, чи є достатньо вільної пам'яті, щоб надати запит на пам'ять для виклику malloc з програми. Якщо пам'яті достатньо, то запит надано. В іншому випадку йому відмовляють і код помилки повертається до програми. " Це звучить точно як відключення перезавантаження.
"Якщо значення встановлено на 1, то ядро надає асигнування вище кількості фізичної оперативної пам’яті та здійснює підкачку в системі, як визначено значенням overcommit_ratio .... Якщо параметр у цьому файлі дорівнює 2, ядро дозволяє проводити всі розподілення пам'яті незалежно від поточного стану розподілу пам'яті. " Щодо значень 1 і 2, це протилежне тому, що сказав попередній доктор, правда?
Хтось знає, що насправді правильно, і якщо є можливість «відключити» перевиконання?