Альтернативы MS Teams с открытым исходным кодом

cgroups - правильный способ сделать это, как указывали другие ответы. К сожалению, идеального решения проблемы не существует, как мы рассмотрим ниже. Существует множество различных способов установить лимиты использования памяти cgroup. То, как сделать сеанс входа пользователя в систему автоматически частью cgroup, зависит от системы к системе. Red Hat имеет некоторые инструменты, а также systemd .

memory.memsw.limit_in_bytesи memory.limit_in_bytesустанавливают ограничения, включая и не включая своп, соответственно. Недостатком memory.limit_in_bytesявляется то, что он подсчитывает файлы, кэшированные ядром от имени процессов в контрольной группе, в соответствии с квотой группы. Меньше кэширования означает больше доступа к диску, поэтому вы потенциально теряете часть производительности, если в противном случае в системе была бы некоторая доступная память.

С другой стороны, memory.soft_limit_in_bytesпозволяет контрольной группе превышать -квоту, но если вызывается убийца OOM ядра, то те контрольные группы, которые превышают свои квоты, уничтожаются первыми, логически. Недостатком этого, однако, является то, что бывают ситуации, когда некоторое количество памяти требуется немедленно, и у убийцы OOM нет времени искать процессы, которые нужно убить, и в этом случае что-то может выйти из строя до того, как пользователь превысит -квоту. процессы убиваются.

ulimit, однако, совершенно не подходит для этого. ulimit накладывает ограничения на использование виртуальной памяти, что почти наверняка не то, что вам нужно. Многие реальные -приложения используют гораздо больше виртуальной памяти, чем физической. Большинство сред выполнения -со сбором мусора (Java, Go )работают таким образом, чтобы избежать фрагментации. Тривиальная программа «hello world» на C, скомпилированная с очистителем адресов, может использовать 20 ТБ виртуальной памяти. Распределители, которые не полагаются на sbrk, такие как jemalloc (, который является распределителем по умолчанию для Rust )или tcmalloc , также будут использовать виртуальную память, значительно превышающую их физическую. Применение. Для повышения эффективности многие инструменты будут отображать файлы mmap,что увеличивает виртуальное использование, но не обязательно физическое использование. Все мои процессы Chrome используют по 2 ТБ виртуальной памяти каждый. Я на ноутбуке с 8 ГБ физической памяти. Любая попытка установить здесь квоты виртуальной памяти либо сломает Chrome, либо заставит Chrome отключить некоторые функции безопасности, основанные на выделении (, но не использующем )больших объемов виртуальной памяти, либо будет совершенно неэффективна для предотвращения доступа пользователя. от злоупотребления системой.

1
19.05.2020, 16:34
0 ответов

Теги

Похожие вопросы