Изучите пространства имен и группы управления Linux: двойные инструменты для изоляции ресурсов и управления ими.
Изучите пространства имен и группы управления Linux: двойные инструменты для изоляции ресурсов и управления ими.

представлять

Пространство имен Linux (пространство имен)

Пространство имен Linux — это механизм изоляции, который позволяет разделить глобальные системные ресурсы на несколько независимых и изолированных частей, так что процессы, работающие в разных пространствах имен, не знают о существовании других пространств имен. Это обеспечивает изоляцию таких ресурсов, как процессы, сети, файловые системы, IPC (межпроцессное взаимодействие), и снижает потенциальные риски безопасности. Например, запуск приложений в контейнерах повышает безопасность системы, избегая прямого воздействия на хост-систему.

Группы управления Linux (Cgroups)

Группы управления — это механизм управления ресурсами, который позволяет применять ограничения ресурсов и настройки приоритета к группам процессов или задач. Его можно использовать для ограничения использования ресурсов группой процессов, таких как ЦП, память, дисковый ввод-вывод и т. д., для обеспечения распределения ресурсов и управления ими.

Проще говоря, под Cgroups можно понимать земельный участок дома, ограничивающий размеры дома, а Namespace — это стена дома, изолирующая его от соседей.

Используя пространства имен и группы управления, вы можете более эффективно использовать системные ресурсы, избегать непроизводительной траты ресурсов и гарантировать, что критически важные задачи получают достаточную поддержку ресурсов, тем самым повышая производительность и эффективность системы. Эти возможности имеют решающее значение для современных облачных вычислений и контейнерных развертываний. Наиболее типичная контейнерная технология Docker реализована с использованием пространства имен и cgroup.

Пространство имен Linux (пространство имен)

тип пространства имен

Ниже приведены типы пространств имен, предоставляемые Linux. Благодаря сочетанию этих пространств имен можно достичь сложных конфигураций изоляции и виртуализации.

пространство имен PID

Linux пространство имен ПИД-это Linux Namespace изA-тип, используемый для изоляции процесс ИДЕНТИФИКАТОР. в пространство имен PIDсередина, каждый процесс имеет независимый исходный процесс ID, чтобы вы могли иметь один и тот же процесс в разных пространствах имен. ID не конфликтует. каждый ребенок пространство имен У ПИДсередина есть все PID для 1 из init процесс,Соответствующий родительпространство именсерединаизпроцесс,отецпространство именверноребенокпространство рабочие статусы имен не изолированы, а каждый одинребенок Пространство намиизолированы друг от другаиз.

Как показано ниже: В подпространстве имен A и B Есть процесс в ID=1 из init процесс, два процесса на самом деле являются родительским пространством имениз 55 № и 66 Номер процесса ID — это просто виртуализированное пространство.

пространство имен UTS

Linux пространство имен UTS используется для изоляции имени хоста и имени домена. существовать пространство имен UTSсередина, каждый процесс может иметь независимое от имени хоста и доменное имя (имя узла, имя домена), так что существуют разные изпространства именасередина имеют разные идентификаторы, что обеспечивает изоляцию имени хоста и имени домена.

nodename: Это уникальное имя, используемое для идентификации хоста, часто также называемое именем хоста. Он используется в сети существования середина для уникальной идентификации компьютера. domainname: Это часть имени домена хоста, обычно используемая для идентификации сетевого домена, к которому он принадлежит. Доменное имя обычно состоит из нескольких частей, расположенных справа налево, с точками между каждой частью. "." Отдельный. Доменное имя используется для связи имени хоста с определенным сетевым доменом, тем самым помогая находить компьютеры и получать к ним доступ по всему миру.

В контейнерной технологии с использованием UTS Namespace после карантина,Контейнеризпроцесс может иметь независимое имя хоста и доменное имя и не будет конфликтовать с хост-системой или другим контейнерсерединаизпроцессом. так,контейнер внутри приложений может распознавать их существование независимо от запуска середина хоста,Это упрощает настройку

Подключить пространство имен

Linux Mount Namespace Используется для изоляции точек монтирования файловой системы. проходить Mount Пространства имен разных исходных процессов могут существовать в разных точках создания для создания разных иерархий файловой системы, даже если существование выполняется на одном и том же хосте. Эта изоляция делает процесссуществоватьодин Mount Namespace серединаизустанавливатьдействоватьвернодругой Mount Namespace серединаизпроцесс невидим, что обеспечивает уровень изоляции файловой системы.

В контейнерной технологии с использованием Mount Namespace после карантина,Внутренний контейнер файловой системы изолирован от хост-системы и другого контейнера. так,Каждый контейнер может иметь независимое представление файловой системы.,контейнер Внутриизпроцесс Могу получить доступ только к себеизиерархия файловой системы,и Невозможно получить доступ к другому контейнеру или хост-системе из файловых систем.

Пространство имен сети

Linux Network Namespace используется для Изолированная сетевой стек. проходить Network Пространство имен, разные исходные процессы могут иметь независимость от сетевого оборудования, IP Адреса, таблицы маршрутизации, сетевые подключения и сетевое пространство именасерединаиз других сетевых ресурсов Такая изоляция делает процесссуществовать один. Network Namespace статус конфигурации серединаизсети другим Network Namespace серединаизпроцесс невидим, что позволяет достичь сетевого уровня изоляции.

В контейнерной технологии с использованием Network Namespace После изоляции внутренний процесс контейнера становится независимым от сетевой среды, что делает контейнерсуществовать изолированным друг от друга в сети. Каждый контейнер может иметь свое сетевое устройство, IP-адрес、таблица маршрутизацииисетевое соединение,контейнеры не будут мешать друг другу,Это не будет мешать хост-системе.

Пространство имен пользователя

Linux User Namespace Используется для изоляции пользователей и групп пользователей. ИДЕНТИФИКАТОР. проходить User Пространство имен, разные исходные процессы могут иметь независимые группы пользователей и пользователей. ID, это может существовать различное изпространство именасередина имеют разные идентификаторы, тем самым обеспечивая изоляцию пользователя и группы пользователей.

В контейнерной технологии с использованием User Namespace После изоляции контейнеризпроцесс может иметь независимые группы изпользователей. ID,èЭто не будет конфликтовать с хост-системой или другими пользователями. Таким образом, приложение внутренней обработки контейнера может быть запущено от имени обычного пользователя.,Нет необходимости в существовании хостинговой системы серединасоздавать идентичную учетную запись пользователя.

существовать Docker По умолчанию не включено в User Namespace изоляция из,Главным образом потому, что для требует особой координации и управления после включения.,Например, после изоляции пользователь на хосте больше не является тем же пользователем.,Тогда может быть нарушен доступ к файловой системе.

пространство имен IPC

Linux пространство имен IPCиспользуется для Изолировать процессобщение междуресурс.существовать пространство имен IPCсередина,каждыйпространство все имена независимы от IPC Ресурсы, такие как очереди сообщений, семафоры и общая память, создают разные пространства. имясерединаизпроцесс не имеет прямого доступа к другому пространству имениз IPC ресурсы, тем самым достигая IPC Ресурсная изоляция.

В контейнерной технологии с использованием IPC Namespace После карантина процесс производства контейнеров стал независимым от IPC ресурсы, тем самым избегая помех и конфликтов ресурсов между различными контейнеризпроцессами. Каждый контейнер может иметь свое собственное пространство имен IPC разрешает доступ только к одному и тому же пространству при обмене данными между процессами внутри контейнераизпроцесссуществовать. имениз IPC Ресурсы и не могут напрямую получить доступ к другим контейнерам. IPC ресурс.

Настоящий бой

Создание пространств имен и управление ими

существовать Linux Система середина предоставляет следующие часто используемые из Создания. пространств имен и управление имииз API:

  1. clone:использовать clone Системный вызов создатель нового процесса можно выполнить, указав одно или несколько изпространств, перечисленных выше. именлоготиппараметр Приходитьсоздаватьновыйизпространство имен,И новый процессизребенокпроцесс также будет включен в существующие названия изпространства.
  2. unshare:использовать unshare Системный вызов для перевода существующего существующего процесса в новое изпространство имена. Он может указать одно или несколько изпространств, перечисленных выше. параметр namesign,создавать имеет указанный тип изпространства имена и поместите текущий процесс или другой назначенный процесс в его середину.
  3. setns: использовать setns Системный вызов «лучшепроцесс» помещает себя в уже сохраненное существованиеизпространства. именсередина,и Незачемсоздаватьновыйизпроцесс。проходить setns Системный вызов, процесс может переключить указанный тип проживанияизпространства именсередина,Сохранено с другимисуществовать При этомпространство именасерединаизпроцессов находятся в одной и той же изолированной среде

Изолировать процесс

существует Этот код середина выполняет sh команду и установите системный вызов clone flage параметрдля CLONE_NEWPID, то есть при выполнении main Методом будет создательодинновыйизпроцесс(sh) и создатель. пространство имен ПИД, сделай sh Процесс и main Изоляция процесса.

Язык кода:javascript
копировать
package mainimport (   "log"   "os"   "os/exec"   "syscall")func main() {   cmd := exec.Command("sh")   cmd.SysProcAttr = &syscall.SysProcAttr{      Cloneflags: syscall.CLONE_NEWPID,   }   cmd.Stdin = os.Stdin   cmd.Stdout = os.Stdout   cmd.Stderr = os.Stderr   if err := cmd.Run(); err != nil {      log.Fatal(err)   }}

Скопировать код

при выполнении go run main.go После этого откройте новый из shell страница, выполнить ps aux Взгляните на номер стартового процесса = 156.

а затем использовать pstree Глядя на дерево процессов, мы видим это по main Позвони sh командный процесс ID=678

Итак, вернемся к исполнению go run main.go из shell На странице выполните ehco $$, вы можете найти текущий процесс ID=1, это можно доказать, существуетновыйиз пространство имен PIDВнизпроцесс ID 1 Картирование из процесса ID 678 , Это подтверждает, что процесс успешно изолирован.

Изолированная сеть

существуют На основе предыдущего кодекса из,Нам нужно только добавить флаг клонирования системного вызова CLONE_NEWNET.,при выполнении main Методом будет создательодинновыйизпроцесс(sh) и создатель. PID и NET пространство имен, так что sh Процесс и main процесс &Сетевая изоляция одновременно。

Язык кода:javascript
копировать
package mainimport (   "log"   "os"   "os/exec"   "syscall")func main() {   cmd := exec.Command("sh")   cmd.SysProcAttr = &syscall.SysProcAttr{      Cloneflags: syscall.CLONE_NEWPID | syscall.CLONE_NEWNET,   }   cmd.Stdin = os.Stdin   cmd.Stdout = os.Stdout   cmd.Stderr = os.Stderr   if err := cmd.Run(); err != nil {      log.Fatal(err)   }}

Скопировать код

при выполнении go run main.go После этого откройте новый из shell страница, выполнить Ifconfig, вы можете увидеть информацию о месте проживания, связанную с сетью.

Затемсуществовать go run main.go бегать shell страница, выполнить Если настроить, то можно обнаружить, что информации нет, а это значит, что сеть изолирована.

Группы управления Linux (Cgroups)

Cgroups представлять

существовать Linux середина,cgroups(Контроль Группы) — метод, используемый в Управлении. Применения ограничивают механизм использования ресурсов процесса. Предпочтительным администратором будет группа существующих производственных организаций или более. cgroups середина,идлякаждый cgroup Выделите конкретные лимиты ресурсов, например Процессор, память, диск Ввод-вывод, пропускная способность сети и т. д. проходить cgroups,Обеспечивает лучший контроль над системными ресурсами.,Достичь изоляции ресурсов и справедливого распределения,Не позволяйте определенным программам занимать слишком много ресурсов и вызывать чрезмерную нагрузку на систему.

основные компоненты

Cgroups Есть три основных компонентыкомпозиция:

ребеноксистема(subsystem):ребеноксистемададля управления Определенный тип ресурса — модуль, каждая система ребенка отвечает за управление определенным типом ресурсов, например Процессор, память, диск Ввод-вывод, пропускная способность сети и т. д.

Cgroup Hierarchies(Cgroup Иерархии): Иерархии используется для организации и управления Cgroup изструктура。один Hierarchies одним или несколькими subsystem композиция. Иерархии Формируем древовидную структуру, каждый узел представляет собой Группа, тот же уровень Cgroup Между ними есть уровень. Иерархии позволять Cgroup существоватьдругойиз subsystem середина объединяется и вкладывается в несколько слоев из Управление структура структуры. Система распознает каждое subsystem создаватьодинтихийраспознаватьиз Hierarchy。

Cgroups (контрольные группы): Cgroup это высшее из Управление В результате единица, это совокупность процессиз-коллекций, организованных существующих один конкретных из Cgroup Иерархия середина и подлежит приезду на этот уровень середина контроллера из-за ограничений ресурсов и управления.

основные компонентысвязь

Связь объясняется следующим образом:

  1. тихий признанная система будет для всех subsystem создавать Hierarchy дерево, по умолчанию cgroup корневой путьсуществовать/sys/fs/cgroup Оглавление Вниз,существовать/sys/fs/cgroup Вы можете увидеть все места проживания ниже subsystem Переписка Hierarchy Дерево
  2. Система создает новые из Hierarchy Наконец, тихий признает, что все процессы будут добавлены в корневой узел «Деревоосередина». cgroup середина, например приезжать/sys/fs/cgroup/cpu/tasks Файл середина Просмотреть список всех процессов
  3. один subsystem Можно добавить только приезжатьодин Hierarchy Деревоначальство
  4. один Hierarchy Дерево может соответствовать нескольким subsystem
  5. один процесс может использоваться как более чем один для cgroup из членов, но эти cgroup долженсуществоватьдругойиз Hierarchy Деревосередина
  6. одинпроцесс fork внеребенокпроцессчас,ребенокпроцессиотецпроцесстихий Примите этосуществоватьтакой жеодин cgroup серединаиз, вы также можете переехать приехать самостоятельно cgroup середина

список подсистем (общая подсистема)

cpu

для управления CPU ресурс.этопозволятьнастраиватьпроцессиз CPU использовать квоту скорости и временного интервала, тем самым ограничивая процесс CPU заняты, следующие cpu Некоторые распространенные управляющие файлы в детской системе:

  • cpu.cfs_quota_us:Этот файл используется для установки cgroup серединапроцессиз CPU квота. Единица измерения — микросекунда (мкс), что означает существование каждого cpu.cfs_period_us В течение микросекунд cgroup серединаизпроцесс Можетиспользоватьиз CPU количество времени. если cpu.cfs_quota_us изценитьдля -1,это значит cgroup серединаизпроцесс Нет CPU использоватьпредел。
  • cpu.cfs_period_us:Этот файл используется для установки cgroup серединапроцессиз CPU период времени. Единица измерения — микросекунда (мкс), что означает, что в течение периода существованияодин, cgroup серединаизпроцесс Можетиспользоватьиз CPU общее количество времени. 

cpuacct

cpuacct: используется для статистики и записи группа процессов (cgroup) серединаиз Использование ЦП, следующая система cpuacct ребенок из Некоторые распространенные файлы статистики:

  • cpuacct.usage: Этот файл записывает cgroup серединавсепроцессиз CPU использовать Общее время и, в наносекундах для. Вы можете просмотреть его, прочитав этот файл cgroup серединаизвсепроцессизносиз CPU время.
  • cpuacct.usage_percpu: Этот файл записывает cgroup серединакаждый CPU основнойиз CPU использовать время в наносекундах для. Если в системе несколько CPU основной, этот файл будет отображать каждый основнойиз CPU использоватьвремя.
  • cpuacct.stat: В этом документе представлена ​​информация о CPU использовать время из подробной статистической информации, включая состояние пользователя и состояние ядра. CPU время.

cpuset

для управления CPU Сходство и назначение узлов. Какой процесссуществовать можно установить CPU Ниже приведены сведения о запуске на ядре и о том, какие узлы памяти можно использовать. cpuset детская система из Некоторые общие управляющие файлы

  • cpuset.cpus:Этот файл используется для установки cgroup серединапроцесс Можетиспользоватьиз CPU основной。Можетиспользовать CPU основной список, диапазон (например. "0-2,4"),илииспользоватьидентификацияиз CPU идентификатор (например, "0-2,4,^1" выражатьиспользовать 0、2、4 Числоосновной,но нетиспользовать 1 числовое ядро)
  • cpuset.mems:Этот файл используется для установки cgroup серединапроцесс может использоватьизузла памяти (NUMA Узел). Можно использовать узел из списка или диапазона, например "0,1" выражатьиспользоватьузел 0 и узел 1
  • cpuset.cpu_exclusive:Этот файл используется для установка будет cgroup серединаиз CPU Лимит выделения для эксклюзива. Настройки 1 означает исключительность, только существование и ничего больше cgroup использоватьчас,талантпозволятьиспользоватьобозначениеиз CPU основной
  • cpuset.mem_exclusive:Этот файл используется для установка будет cgroup серединаиз Внутрижитьузел Лимит выделения для эксклюзива. Настройки 1 означает исключительность, только существование и ничего больше cgroup использоватьчас,Только лучшеиспользовать указывает узел памяти.

memory

memory:для управленияипределпроцесс Группа(cgroup)серединаиз Внутрижитьресурсиспользовать。memory ребеноксистемапозволятьдлякаждый cgroup Устанавливайте ограничения памяти и контролируйте процесссуществовать cgroup серединаиспользоватьиз Внутрижить量。 Ниже приводится memory Некоторые распространенные управляющие файлы в детской системе:

  • memory.limit_in_bytes:Этот файл используется для установки cgroup серединапроцессиз Ограничение памяти. можно установить одно целочисленное значение, обозначающее cgroup середина Все процессы могут использовать лимит памяти, измеряемый в байтах. Запросы на использование памяти, превышающие этот лимит, будут отклонены и могут подлежать въезду. OOM(Out of Memory)событиеиз Влияние。
  • memory.soft_limit_in_bytes:Этот файл используется для установки cgroup серединапроцессизмягкий лимит памяти. Мягкий предел памяти — это нижнее предельное значение. Когда системной памяти недостаточно, это может предотвратить захват чрезмерных ресурсов памяти, но обычно этого не происходит. OOM событие
  • memory.memsw.limit_in_bytes:Этот файл используется для установки cgroup серединапроцессиз Память + пространство подкачки (своп) из лимита. можно установить одно целочисленное значение, обозначающее cgroup серединавсепроцесс Можетиспользоватьиз Внутрижить+swap из верхнего предела, единица измерения — байты.
  • memory.memsw.usage_in_bytes:Этот файл записывает cgroup серединавсе процессытекущиеизпамяти+своп использовать количество в байтах для единиц измерения. 

devices

для управленияипределпроцесс Группа(cgroup)серединаиз Доступ к устройству。devices ребеноксистемапозволятьсуществовать cgroup середина Настройте, к каким устройствам процесс может получить доступ и как получить доступ к этим устройствам. Ниже приводится devices Некоторые распространенные управляющие файлы в детской системе:

  • devices.allow: Этот файл используется для установкипозволятьпроцесссуществовать cgroup серединадоступиз Список устройств。Можетпроходитьоборудованиеизосновное устройство№ и Второсортныйоборудование Число Приходитьобозначениеспецифическийизоборудование。Например,c 1:3 rwm выражатьпозволятьпроцесссуществовать cgroup середина чтение, запись и выполнение номера устройства для 1:3 из символьного устройства
  • devices.deny: Этот файл используется для установки Нетпозволятьпроцесссуществовать cgroup середина Доступ из списка устройств. и devices.allow Вместо этого администраторы могут указать здесь существование не лучшего доступа с устройств. 

net_cls

используется для Воляпроцесс Группа(cgroup)серединаиз Теги сетевого трафика(classify)дляидентификацияиз Категория сети(class)。net_cls ребеноксистемапозволятьдля cgroup серединаизпроцесс Установите теги одной сетевой категории, чтобы вы могли существовать Linux Ядро и сетевой уровень классифицируют сетевой трафик и управляют им. Ниже приводится net_cls Детская система из общих управляющих файлов:

  • net_cls.classid: Этот файл используется для установки cgroup серединапроцессиз Теги веб-категорий. Тег категории сети равен единице. 32 Целое число без бита, которое идентифицирует определенный класс сети. Когда процесс отправляет или получает сетевой трафик, Linux Ядро классифицирует сетевой трафик на основе этого тега.

net_cls Детская система отвечает только за разбивку сетевого трафика по определенным категориям сети. Она сама не ограничивает пропускную способность сети и не выполняет другие сетевые элементы управления. Фактический контроль сетевого трафика требует использования других инструментов (таких как tc)Приходить Заканчивать。поэтому,существоватьиспользовать net_cls При установке системы ее необходимо комбинировать с другими инструментами управления сетью для достижения более комплексного контроля и управления сетью. 

net_prio

Используется для группы обработки (cgroup) серединаиз сетевого трафика для установки приоритета сети (сетевой priority)。net_prio ребеноксистемапозволятьадминистратордля cgroup серединаизпроцесс Установите определенный приоритет сети, чтобы контролировать его существование в сети с приоритетом серединаиз. Ниже приводится net_prio Детская система из общих управляющих файлов:

  1. net_prio.ifpriomap: Этот файл используется для установки cgroup серединапроцессизсетевое сопоставление приоритетов (интерфейс priority карта). Настроив отношения сопоставления, вы можете cgroup серединаизпроцессиз отображение приоритетов сети приезжать по конкретному сетевому интерфейсу (сетевому интерфейс).
  2. net_prio.prioidx: Этот файл используется для установки cgroup серединапроцессизтихий признанный индекс приоритета сети (приоритет индекс). Индекс приоритета — это целочисленное значение, представляющее приоритет сети.

net_prio Детская система существованияконтейнера с технологией середина особенно полезна, когда на одном хосте работает несколько контейнеров, и может cgroup настраиватьдругойизприоритет сети,Чтобы добиться сетевой изоляции и контроля ресурсов между контейнерами. Это гарантирует, что сетевые передачи между разными контейнерами не будут мешать друг другу.,Улучшите производительность и стабильность системы и сети.

blkio

для управления ограничить группу процессов (cgroup) серединаиз блочного устройства (Block Device)I/O(Input/Output)ресурсиспользовать。blkio детская система предпочитает администратора для каждого cgroup Настроить блокирующее устройство из I/O Ограничивайте и контролируйте. Ниже приводится blkio Детская система из общих управляющих файлов:

  • blkio.weight: Этот файл используется для установки cgroup серединапроцессизблочное оборудование I/O масса. блокировать устройство I/O Веса используются для существования нескольких cgroup блокировать устройство I/O Распределение ресурсов: чем выше вес, тем выше вес cgroup Чем больше блочного оборудования вы получите I/O ресурс.
  • blkio.time: Этот файл используется для установки cgroup серединапроцессизблочное оборудование I/O временной интервал кусочек) квота. Может быть ограничено cgroup серединапроцесссуществоватьблокировать оборудование в течение определенного периода времени I/O действовать
  • blkio.throttle.read_bps_device: Этот файл используется для установки cgroup серединапроцессизблочное оборудованиескорость чтенияпредел。Может Настроить блокирующее устройство изосновное устройство№ и Второсортныйоборудование Число以及скорость чтенияизпредел,Предотвратите процесс от чрезмерного чтения устройства.
  • blkio.throttle.write_bps_device: Этот файл используется для установки cgroup серединапроцессизблочное оборудованиескорость записипредел。Может Настроить блокирующее устройство изосновное устройство№ и Второсортныйоборудование Число以及скорость записиизпредел,Запретить процессу перезаписывать устройство.

pids

используется дляпределпроцесс Группа(cgroup)серединаизпроцессколичество。pids детская система предпочитает администратора для каждого cgroup Установите максимальное количество улучшений для управления cgroup середина Можетбегатьпроцессколичество。pids Детская система ограничивает только количество процессов и не ограничивает другие ресурсы. Ниже приводится net_prio Детская система из общих управляющих файлов:

  1. pids.max: Этот файл используется для установки cgroup серединапозволятьиз максимального количества процессов. можно установить одно целочисленное значение, обозначающее cgroup середина Можетбегатьмаксимумпроцессколичество。
  2. pids.current: Этот файл показывает текущий cgroup серединаизпроцессколичество。

Настоящий бой

Создание групп управления и управление ими

Сначала мы можем перейти в /sys/fs/cgroup Посмотреть систему в разделе Оглавление тихий признанных создателей. Hierarchy Какие деревья:

Тогда мы можем пойти в /домой Оглавление Внизсоздаватьодин Настроитьиз Hierarchy Дерево:

  1. первыйсоздавать cgroup-1 папка
  2. устанавливать Hierarchy Деревоприезжать cgroup-1 папканачальство
  1. После того, как вы войдете в папку «приехать» cgroup-1, вы увидите некоторые автоматически сгенерированные файлы в папке «приехать».
  1. cgroup.clone_children: cpuset из subsystem Этот файл конфигурации будет прочитан, если значение равно I ( тихий Примите это 0), ребенок cgroup унаследует отцовское cgroup из cpuset из конфигурации 。 
  2. cgroup.proc: Деревосерединатекущий узел cgroup серединаизпроцесс Группа ID, текущее местоположение существуиз является корневым узлом существования, этот документ кускисередина Будетсуществоватьсистемасерединавсепроцесс Группаиз ID
  3. cgroup.sane_behavior: Этот файл существует только в root cgroup В разделе Оглавление файл, управляемый один, называется CGRP_ROOT_SANE_BEHAVIOR из бита. потому что cgroup Постоянно развиваясь, многие детские системы имеют множество различных функций, а ядро ​​использует CGRP_ROOT_SANE_BEHAVIOR Для управления включением и отключением определенных функций.
  4. notify_on_release и release_agent: Объединение обоихиспользуйте, notify_on_release значит, когда это cgroup Был ли он выполнен при выходе последнего одиночного процесса из relase_agent,release_agent Это путь, который обычно используется для процесса и автоматически очищается после выхода. cgroup
  5. задачи: определить cgroup Ниже изпроцесса Идентификатор, если вы пропишете одинпроцесс в приезжать tasks файл середина, это означает добавление соответствующего процесса для проживания cgroup середина , Вы можете открыть его здесь и посмотреть tasks Файл будет найден, как сказал выше президент: Создатель системы имеет новый Hierarchy Наконец, тихий признает, что все процессы будут добавлены в корневой узел «Деревоосередина». cgroup середина
  6. Тогда мы сможем существовать cgoup-1 Иерархия Деревосоздавать два дочерних узла.
  1. Затем введите местонахождениеitsсерединаодин cgroup-2 ребенок cgroup Узел середина, вы можете обнаружить, что он также будет генерировать некоторые файлы, ребенок cgroup тихий признать интегрированного родителя cgroup из атрибута.

 Уведомлениесуществоватьребенок cgroup средний по умолчанию tasks В файле середина не будет никакого процесса ИДЕНТИФИКАТОР. Далее мы пойдем cgroup середина добавляет процесс для достижения контроля над ресурсами.

Ограничьте ресурсы с помощью контрольных групп

существовать cgroup-2 папкасередина, выводим текущий процесс id приезжать tasks файл, а затем просмотреть его с помощью proc середина Переписка cgroup Информацию можно найти на странице проживания. В настоящий момент процесс добавлен. cgroup-2 Контрольная группа не работает.

Тем не менее, возможности прибытия в настоящее время ограничены, мы настраиваем из cgroup-1 Hierarch Дерево еще не привязано подсистема, поэтому даже если текущий процесс будет добавлен в cgroup-1 Деревосерединаиз cgroup-2 В контрольной группе также не будет никаких эффектов контроля над ресурсами.

Затем мы будем использовать системную основу по умолчанию subsystem создаватьиз Hierarch дерево для управления ресурсами.

  1. Сначала используйте инструмент измерения давления stress запускатьодин Внутрижить占用изпроцесс
  1. Входитьприезжать/sys/fs/cgroup/memory Оглавление
  2. создавать cgroup-memory cgroup
  1. Установить ток cgroup Максимальное использование памятидля 100M
  1. изменить токпроцессдвигатьсяприезжать cgroup-memory середина
  1. Запустите стресс еще раз и проверьте использование памяти. Обнаружено, что если она занимает 200М, при запуске программы будет сообщаться об ошибке. Программа будет работать нормально только тогда, когда настройка будет заполнена до 90М. Видно, что ограничение ресурса памяти вступило в силу.

Сценарии применения

  1. Контейнерное развертывание:Самый типичныйизиспользоватьпространство Группа контроля имени из сцены: Контейнерное развертывание,Такие как Докер
  2. Управление ресурсами:существоватьмультиарендаторилиобщийресурсизсредасередина,Группа управления использованиемпространства имени может реализовать детальное управление ресурсами.,Например, по уровню обслуживания,Разделите ресурсы по уровням для разных уровней,Избегайте вытеснения процесса с низким приоритетом процессаресурса с высоким приоритетом.
  3. безопасная изоляция:Защита от вредоносных программверносистемаизатаковать。Например,Будут ли работать ненадежные приложения?,Ограничить доступ к конфиденциальным файлам или системным ресурсам,Для обеспечения безопасности хост-системы.
  4. процессвторжение:пространство имяз Изоляционные свойства делают существование процесса различным Называя единую операцию, этот процесс обеспечивает удобство мониторинга и отладки, а также внесения ошибок. Может ли существовать специфическое изпространство имясередина и процесс отладки и внесения ошибок, и не повлияет на другое пространство. именизпроцессвызывать помехи(Последующая статья середина будет посвящена внедрению собственных ошибок в облако, Просто используйте Cgroup и Namespace Пойми из)
  5. Множество других сценариев...

Подвести итог

существуют В этой статье середина мы обсуждаем это подробно Linux пространство имен(Namespace)и Группы управления (Cgroups) эти две ключевые технологии. По пространству имен,Мы можем добиться изоляции ресурсов,позволятьпроцесссуществоватьнезависимыйизкосмоссерединабегать,Повысьте безопасность системы. И через контрольную группу,Мы можем эффективно управлять и ограничивать использование ресурсов процесса.,Избегайте пустой траты ресурсов,Улучшена производительность системы.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose