Acoplable --- Gestión de Recursos

directorio

Un .docker Gestión de Recursos general

Optimización de los recursos .CPU

III. Optimizar los recursos de memoria

III. Optimizar el disco E / S de lectura y escritura


Un .docker Gestión de Recursos general

  • Desde el anfitrión puede poner una pluralidad de recipientes, de forma predeterminada, no hay límite en el espejo contenedor recursos de hardware acoplables
  • Cuando el contenedor de carga es demasiado alta se ocupará de los recursos de acogida tanto como sea posible, así que a veces tenemos que utilizar recursos para establecer un límite superior para el envase
  • Uso systemctl-cgtop visión dinámica del uso de varios recursos (asignación de recursos de acuerdo con la situación del contenedor ventana acoplable)
[root@cloud ~]# systemd-cgtop
Path                                                                                 Tasks   %CPU   Memory  Input/s Output/s

/                                                                                       55    4.5     2.7G        -        -
/system.slice                                                                            -    3.6   468.6M        -        -
/system.slice/aegis.service                                                              3    3.3   109.5M        -        -
/user.slice                                                                              3    0.9    11.0M        -        -
/system.slice/containerd.service                                                         1    0.2    83.0M        -        -
/system.slice/aliyun.service                                                             1    0.0     2.4M        -        -
/system.slice/tuned.service                                                              1    0.0    13.0M        -        -
/system.slice/rsyslog.service                                                            1    0.0     2.9M        -        -
/system.slice/atd.service                                                                1      -        -        -        -
/system.slice/auditd.service                                                             1      -     1.3M        -        -
/system.slice/chronyd.service                                                            1      -   532.0K        -        -
/system.slice/crond.service                                                              1      -   716.0K        -        -
/system.slice/dbus.service                                                               1      -    36.0K        -        -
/system.slice/docker.service                                                             1      -   228.5M        -        -
/system.slice/lvm2-lvmetad.service                                                       1      -        -        -        -
/system.slice/network.service                                                            1      -     1.9M        -        -
/system.slice/polkit.service                                                             1      -     7.9M        -        -
  • Docker recursos para el control, respectivamente, por la memoria, CPU, disco de lectura y escritura, etc., que se describe en detalle más adelante

Optimización de los recursos .CPU

  • Por defecto, cada contenedor se puede utilizar todos los recursos de la CPU en el host, pero el sistema de planificación de recursos utilizados por la mayoría de SFC (Completamente programador de reparto justo)
  • CFS justo programación de cada proceso de trabajo
  • Proceso se divide en dos tipos de IO CPU-intensivo e intensivo
  • El núcleo del sistema procesará sistema de monitoreo en tiempo real, cuando un proceso recursos de la CPU durante demasiado tiempo, el núcleo ajustar la prioridad del proceso de
  • Éstos son algunos de los parámetros de los recursos de la CPU ventana acoplable límite de mando
nombre del parámetro explicación
--cpu-acciones

recursos de la CPU proporciona un conjunto de contenedores, el contenedor utilizado en los recursos de CPU escala de grupo, la carga de recursos golpeado cpu ocupada recipiente (relación de compresión de acuerdo con la asignación),

Estar en funcionamiento cuando está en reposo, los recursos de CPU se asignarán a otros recipientes

--cpus = valor

Especifica el número de núcleo de la CPU
--cpuset CPUs contenedor especificado sólo se puede ejecutar en el núcleo de la CPU (CPU de unión); número de la base usando 0,1,2,3
--cpu de cuotas El límite superior del porcentaje especificado de cpu
  • Ver CPU detalles del sistema Linux

##查看详细信息
[root@cloud ~]# cat /proc/cpuinfo

##查看CPU的核数
[root@cloud ~]# cat /proc/cpuinfo | grep "processor"
processor	: 0
processor	: 1
[root@cloud ~]# 
  • Para las restricciones de uso de la CPU

## --name 指定容器的名字
## --cpu-quota 200000 指定该容器对于cpu的使用率上限是20%

[root@cloud ~]# docker run --name c0 --cpu-quota 200000 nginx:latest

[root@cloud ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2a0222c54f1a        nginx:latest        "nginx -g 'daemon of…"   About an hour ago   Up 1 second         80/tcp              c0
[root@cloud ~]# 

  • Para la asignación proporcional de cpu

##-i表示输入,-t表示绑定终端,-d表示开启守护进程


[root@cloud ~]# docker run -itd --name c1 --cpu-shares 512 httpd
cfa4b5f14f75ef2f30d884d11341582396401c767675a11b43e029a40a1ea207
[root@cloud ~]# docker run -itd --name c2 --cpu-shares 1024 httpd
118e74d7fa84f5d1fcac7e6ed028e185fde6d2c6edceab89a10ab609d7bd9052
[root@cloud ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
118e74d7fa84        httpd               "httpd-foreground"       9 seconds ago       Up 8 seconds               80/tcp              c2
cfa4b5f14f75        httpd               "httpd-foreground"       20 seconds ago      Up 18 seconds              80/tcp              c1
2a0222c54f1a        nginx:latest        "nginx -g 'daemon of…"   2 hours ago         Exited (0) 2 minutes ago                       c0
[root@cloud ~]# 
  • Para la CPU limitar el número de armas nucleares
[root@cloud ~]# cat /proc/cpuinfo | grep processor
processor	: 0
processor	: 1
[root@cloud ~]# docker run -itd --name c3 --cpuset-cpus 0,1 httpd
271eaa8de989f1decf23ddada071db801348e607c6a4ed3b6ee2ad0671482d4a
[root@cloud ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
271eaa8de989        httpd               "httpd-foreground"       5 seconds ago       Up 4 seconds               80/tcp              c3
118e74d7fa84        httpd               "httpd-foreground"       3 minutes ago       Up 3 minutes               80/tcp              c2
cfa4b5f14f75        httpd               "httpd-foreground"       3 minutes ago       Up 3 minutes               80/tcp              c1
2a0222c54f1a        nginx:latest        "nginx -g 'daemon of…"   2 hours ago         Exited (0) 6 minutes ago                       c0
[root@cloud ~]# 

III. Optimizar los recursos de memoria

  • Por defecto, el recipiente acoplable hay límite de memoria, es decir, el contenedor se puede utilizar toda la memoria proporcionada por el anfitrión.
  • Si el recipiente no restringe la memoria, causará algún peligro. Por ejemplo, un envase de consumo de memoria para ejecutar el software malicioso, o código tiene pérdidas de memoria, es probable que la memoria principal de plomo se agota, lo que resulta en el servicio no está disponible.
  • Para el caso anterior, la ventana acoplable daemon acoplable establece OOM (de memoria) valor, a fin de disminuir mató a la memoria de baja prioridad. Además, se puede proporcionar el límite superior de la memoria para cada recipiente, una vez excedido este límite, el contenedor será matado, sin consumir la memoria del anfitrión
  • A pesar de que, a pesar de que puede limitar el límite de memoria para proteger al huésped, sino que también podría perjudicar al servicio de contenedores. Si la memoria es demasiado pequeña para establecer el límite superior del servicio, conducirá el servicio aún funciona bien cuando lo mataron OOM. Si es muy grande, porque algoritmo planificador de memoria emaciación. enfoque razonable incluyen:

1. La memoria para la solicitud de hacer pruebas de esfuerzo, para entender la memoria cuando se utiliza en las necesidades normales de trabajo, a continuación, utilizar para entrar en el entorno de construcción

2. El contenedor de uso de la memoria límite superior

3. medida de lo posible para garantizar recursos suficientes para anfitrión, una vez encontrado mediante el control de la falta de recursos, es para la expansión o la migración del recipiente

4. Si suficientes recursos de memoria, reducir al mínimo el uso de intercambio, el canje causaría una memoria complejidad computacional del planificador muy antipático

  • En los parámetros de arranque estibador, y las limitaciones de memoria comprenden asociado (parámetro se refiere en general al tamaño de la memoria, las unidades de memoria, respectivamente, b (bytes), k (KB), M (mb), G (GB)), los parámetros son como sigue :
parámetros explicación
-m o --memory El tamaño máximo de memoria del recipiente se puede utilizar, para el 4m mínimo
--memory-swap tamaño del recipiente se puede utilizar para intercambio
--memory-swappiness

Por defecto, el anfitrión puede utilizar la página contenedores anónima (página anónima) intercambiar, que se puede configurar un valor entre 0-100, representantes

Permitir que el intercambio fuera de proporción

--memory-reserva

Configuración de un uso de la memoria límite blando, si se encuentra la memoria del host ventana acoplable insuficiente, OOM realizará la operación.

Este valor debe ser menor que el valor establecido -m

--kernel memoria kernel tamaño de la memoria del recipiente se puede utilizar, para el 4m mínimo
--oom-kill-disable El tiempo se acaba contenedor matanza OOM. Sólo -m conjunto, se puede poner esta opción es falso, de lo contrario el contenedor se quede sin memoria anfitrión, y haciendo que la aplicación host se mató
  • Los ejemplos son como sigue
[root@cloud ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3789         223         664           0        2900        3282
Swap:             0           0           0
[root@cloud ~]# docker run -itd --name c4 -m 512m httpd:latest 
a1834d69cb55e6809211d381d6ca7c2acfe52cbc11be37293f48c2bfb52e2d0a
[root@cloud ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
a1834d69cb55        httpd:latest        "httpd-foreground"       5 seconds ago       Up 4 seconds                80/tcp              c4
271eaa8de989        httpd               "httpd-foreground"       28 minutes ago      Exited (0) 27 minutes ago                       c3
118e74d7fa84        httpd               "httpd-foreground"       32 minutes ago      Exited (0) 27 minutes ago                       c2
cfa4b5f14f75        httpd               "httpd-foreground"       32 minutes ago      Exited (0) 27 minutes ago                       c1
2a0222c54f1a        nginx:latest        "nginx -g 'daemon of…"   2 hours ago         Exited (0) 34 minutes ago                       c0
[root@cloud ~]# 

  • Observe recurso recipiente Docke uso
[root@cloud ~]# docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
a1834d69cb55        c4                  0.00%               14.1MiB / 512MiB    2.75%               0B / 0B             0B / 0B             82

 

III. Optimizar el disco E / S de lectura y escritura

  • IO recursos, el sistema operativo es también un recurso muy importante, a menudo contienen leer y escribir en el disco duro, el intercambio de datos de red, etc.
  • El método de control de escritura recipiente duro:

1. Establecer el disco duro para leer y escribir el peso del contenedor recursos

2. límite bps (cantidad de datos) y de IOPS (veces)

bps: bytes por segundo, el número de bytes que se leen por segundo (, es decir, leen y las tasas de escritura)

iops: el número de io por segundo, IO por segundo

  • conjunto de peso

Al utilizar carrera ventana acoplable a partir parámetros de suministro de contenedores --blkio peso int priority nos puede ayudar en el disco contenedor de control leer y escribir (bloque IO) de

  • Restricciones bps y iops

1 .-- dispositivo-read-bps (restricciones lectura de un dispositivo bps)

2 .-- dispositivo de lectura-escritura-bps (bps escribiendo un dispositivo de restricción)

3 .-- dispositivo-read-iops (restricciones lectura de un dispositivo iops)

4 .-- dispositivo de escritura IOPS (IOPS un dispositivo de escritura límite)

  • Ejemplos

 

 

 

 

Publicados 139 artículos originales · ganado elogios 168 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/qq_42761527/article/details/104876498
Recomendado
Clasificación