Докер Диба Хуэй (Докер ресурсных ограничений и проверка)

https://blog.51cto.com/gouyc

A, ограничение Докер ресурсов

Докер способен работать ядро ​​зависит от двух характеристик, пространств имен и контрольных групп. По умолчанию, нет никаких ограничений контейнера ресурсов, она может исчерпать все ресурсы на хосте-ядрах может быть назначена в контейнер. Поэтому для того, чтобы предотвратить все ресурсы хоста, запущенный контейнер работает, мы должны использовать ограничение ресурсов. И некоторые из особенностей нехватки ресурсов нужна поддержка ядра Linux Linux возможности, версии 1,13, прежде чем грузчик, поддерживает только график CFS (Completely Fair Scheduler полностью справедливый планировщик), более поздние версии также поддерживают графику в реальное время

 

График КПБ: каждый процесс имеет приоритет, приоритет процессы в реальное время от 100-139, графика КСФА используется для планирования этого не в реальное время процесс планировщика, более высокий приоритет процесс будет выполнен первым процессор

график в реальном времени: приоритет процесса в реальном времени планировщик, процесс от 0-99, график в реальном времени предназначен для планирования процессов в реальном времени планировщика

 

Два, память, предельные параметры Докер-х ресурсы процессора

 

1, ограничение процессора

--cpus = <значение>: Определяет, как контейнер ресурсов процессора доступны может быть использовано, если ядро ​​4 процессора, может быть установлен на 1,5, то 1,5 ресурсов процессора можно использовать до основного контейнера, если нет --cpuset-процессоров затем 1.5 ядро ​​может быть использовано, может быть любым из основного ресурса. Эта опция может быть использована только в приведенном выше docker1.3

--cpu-акция: контейнер распределенного ресурсов процессора, ресурсы процессора, если другие контейнеры пустые, контейнер 1, в случае необходимости, будет использовать все ресурсы центрального процессора, и назначать задачи любой обработки ядра

--cpuset-CPU: Определяет процессор может быть использован для основного контейнера, который, если процессор и 4, то в соответствии с числом, чтобы отличить каждого из ядер 0-3, этот параметр установлен в 0, то это означает, что может быть использовано в первом процессоре и второй сердечник.

 

2, память и предел подкачки

--memory = <значение>: Задает максимальное количество памяти может быть использовано в качестве контейнера, если процесс использует больше памяти, чем предел, это может убить

--memory замена: контейнер определяется как максимальное количество подкачек доступны, эта опция должна использоваться в помещении с помощью --memory параметров, если не установлена ​​--memory параметра, то этот параметр не вступит в силу

image.png

- память swappiness: своп контейнеры расположены тенденция, как, 0-100.

- память резервирование: мягкое использование ограничения памяти контейнера, это означает, что меньше, чем --memory должен быть установлен, когда система памяти плотно, будет вернуть утраченную память памяти значения значения -reservation этого контейнера, использование памяти судна вплоть до стандартной оговорки

--oom-убить-отключение: Когда процесс контейнера происходит OOM, независимо от того, чтобы убить контейнер


В-третьих, использование измерения давления инструментом для тестирования

[root@bogon ~]# docker pull lorel/docker-stress-ng
Using default tag: latest
latest: Pulling from lorel/docker-stress-ng
c52e3ed763ff: Pull complete 
a3ed95caeb02: Pull complete 
7f831269c70e: Pull complete 
Digest: sha256:c8776b750869e274b340f8e8eb9a7d8fb2472edd5b25ff5b7d55728bca681322
Status: Downloaded newer image for lorel/docker-stress-ng:latest
 

1, тест памяти

1.1, не ограничивает использование центрального процессора

[root@bogon ~]# docker container run --name stress -it --rm lorel/docker-stress-ng:latest  --cpu 8
stress-ng: info: [1] defaulting to a 86400 second run per stressor stress-ng: info: [1] dispatching hogs: 8 cpu [root@bogon ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 92b0b8d916c1 stress 101.54% 15.81MiB / 983.3MiB 1.61% 648B / 0B 0B / 0B 9 [root@bogon ~]# top top - 19:15:49 up 2 days, 2:38, 2 users, load average: 7.02, 3.00, 1.15 Tasks: 131 total, 10 running, 121 sleeping, 0 stopped, 0 zombie %Cpu(s): 99.7 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1006892 total, 100680 free, 320704 used, 585508 buff/cache KiB Swap: 2097148 total, 2096628 free, 520 used. 422732 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 40035 root 20 0 6908 4180 252 R 12.6 0.4 0:12.79 stress-ng-cpu 40037 root 20 0 6908 4180 252 R 12.6 0.4 0:12.78 stress-ng-cpu 40038 root 20 0 6908 2136 252 R 12.6 0.2 0:12.78 stress-ng-cpu 40040 root 20 0 6908 2136 252 R 12.6 0.2 0:12.78 stress-ng-cpu 40036 root 20 0 6908 2136 252 R 12.3 0.2 0:12.77 stress-ng-cpu 40039 root 20 0 6908 2136 252 R 12.3 0.2 0:12.78 stress-ng-cpu 40041 root 20 0 6908 4180 252 R 12.3 0.4 0:12.77 stress-ng-cpu 40042 root 20 0 6908 2136 252 R 12.3 0.2 0:12.77 stress-ng-cpu 1 root 20 0 128484 7208 4196 S 0.0 0.7 0:10.12 systemd
 

Вы можете видеть, использование процессора полон

 

1.2, был добавлен параметр перезапуска ограничение памяти сосуд

[root@bogon ~]# docker container run --name stress --cpus=0.5 -it --rm lorel/docker-stress-ng:latest  --cpu 8
stress-ng: info: [1] defaulting to a 86400 second run per stressor stress-ng: info: [1] dispatching hogs: 8 cpu [root@bogon ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 845220ef9982 stress 51.57% 20.05MiB / 983.3MiB 2.04% 648B / 0B 0B / 0B 9
 

Настройки параметров вступают в силу

 

2, тест памяти

2.1, не ограничивает использование памяти, он определяет давление зондирования две памяти, каждая 128m

[root@bogon ~]# docker container run --name stress -it --rm lorel/docker-stress-ng:latest  --vm 2 --vm-bytes 128m
stress-ng: info: [1] defaulting to a 86400 second run per stressor stress-ng: info: [1] dispatching hogs: 2 vm [root@bogon ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS beb3cfa10748 stress 99.29% 256.2MiB / 983.3MiB 26.05% 648B / 0B 0B / 0B 5
 

Фактическое использование 256M памяти

 

2.2, перезапустить контейнер, добавить ограничение памяти

--memory контейнер может быть использован только для ограничения памяти 128m

[root@bogon ~]# docker container run --name stress -it --memory=128m --rm lorel/docker-stress-ng:latest  --vm 2 --vm-bytes 128m
stress-ng: info: [1] defaulting to a 86400 second run per stressor stress-ng: info: [1] dispatching hogs: 2 vm [root@bogon ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS decee18cb471 stress 99.47% 126.4MiB / 128MiB 98.77% 648B / 0B 3.19MB / 461MB 5

 

 

рекомендация

отwww.cnblogs.com/baomaggie/p/11622769.html