Todos sabemos que cgroups en el sistema Linux se puede usar para administrar los recursos de la CPU. Hoy en día, Xiaobian desea presentarle cómo usar cgroups para administrar el proceso del disco io. Si está interesado en esto, es posible que desee entenderlo.
Esta característica se logra mediante blkio subsistema.
Hay muchas cosas en el subsistema blkio. Sin embargo, la mayoría de ellos son informes de estado de solo lectura. Los únicos parámetros que se pueden escribir son los siguientes:
El código es el siguiente:
blkio.throttle.read_bps_device
blkio. Throttle.read_iops_device
blkio.throttle.write_bps_device
blkio.throttle.write_iops_device
blkio.weight
blkio.weight_device
Estos son Ambos se utilizan para controlar el proceso del disco io. Obviamente, se divide en dos categorías, que con "aceleración", como su nombre indica es una aceleración, lo que limita el flujo a un cierto valor. Y "peso" es el peso asignado a io.
" throttle " Los cuatro parámetros miran el nombre para saber qué hacer. Tome blkio.throttle.read_bps_device para limitar el número de bytes que se pueden leer por segundo. Ejecute io primero
El código es el siguiente:
dd if = /dev /sda of = /dev /null &
[1] 2750
Utilice iotop para ver el código io
actual de la siguiente manera:
TID PRIO USER DISK READ DISK WRITE SWAPIN IO "COMMAND
2750 be /4 root 66.76 M /s 0.00 B /s 0.00% 68.53% dd if = /dev /sda of = /dev /null
. . .
Luego modifique el límite de recursos y agregue el proceso al grupo de control
El código es el siguiente:
echo ‘ 8: 0 1048576 ’ ”/sys /fs /cgroup /blkio /Foo /blkio.throttle.read_bps_device
echo 2750 sy /sys /fs /cgroup /blkio /foo /tasks
Aquí 8: 0 es el número de dispositivo principal y el sub-dispositivo del dispositivo de bloque correspondiente No Se puede ver con el nombre de archivo del dispositivo ls -l. Por ejemplo, el código
es el siguiente:
# ls -l /dev /sda
brw-rw ----. 1 disco raíz 8, 0 oct 24 11:27 /dev /sda
Aquí, 8, 0 es el número de dispositivo correspondiente. Por lo tanto, cgroups puede imponer diferentes restricciones en diferentes dispositivos. Luego observe el efecto
El código es el siguiente:
TID PRIO USER DISK READ DISK WRITE SWAPIN IO "COMMAND
2750 be /4 root 989.17 K /s 0.00 B /s 0.00% 96.22% dd if = /dev /sda de = /dev /null
. . .
Se puede ver que la lectura del proceso por segundo se reduce a aproximadamente 1 MB. Para eliminar la restricción, escriba a " 8: 0 0 " en el archivo
Sin embargo, debe tenerse en cuenta que este método no sirve para una gran cantidad de io generada en el intervalo de muestreo. Por ejemplo, incluso si genera un pico de 100M por segundo en 1 s, no estará limitado.
Mira blkio.weight de nuevo. Los métodos de aceleración y peso de Blkio son un poco como la cuota y las acciones del subsistema de CPU. Ambos son límites absolutos, el otro es relativo y los recursos pueden utilizarse completamente cuando no están ocupados. Los valores de peso varían de 10 a ndash; 1000 entre.
Probar pesos es un poco más problemático. Debido a que no es un límite absoluto, se ve afectado por el caché del sistema de archivos. Si está realizando pruebas en una máquina virtual, debe desactivar el almacenamiento en caché de la máquina virtual, como el VirtualBox que uso en el host. Para probar el efecto de leer io, Mr. es un archivo grande de dos G /tmp /file_1, /tmp /file_2, que se puede hacer con dd. Luego, establezca los dos pesos
El código es el siguiente:
# echo 500》 /sys/fs/cgroup/blkio/foo/blkio.weight
# echo 100》 /sys /fs/cgroup/blkio/bar/blkio.weight
Vacíe la caché del sistema de archivos antes de realizar pruebas para evitar interferir con los resultados de las pruebas.
El código es el siguiente:
sync
echo 3 proc /proc /sys /vm /drop_caches
Use dd para generar resultados de pruebas de io en estos dos grupos de control.
El código es el siguiente:
# cgexec -g " blkio: foo " dd if = /tmp /file_1 of = /dev /null &
[1] 1838
#cgexec -g " blkio: barra " dd if = /tmp /file_2 de = /dev /null &
[2] 1839
Todavía utilizo iotop Mire el efecto
El código es el siguiente:
TID PRIO USUARIO DISCO LEER DISCO ESCRIBIR SWAPIN IO "COMANDO
1839 be /4 root 48.14 M /s 0.00 B /s 0.00% 99.21% dd if = /tmp /file_2 of = /dev /null
1838 be /4 root 223.59 M /s 0.00 B /s 0.00% 16.44% dd if = /tmp /file_1 of = /dev /Nulo
Aunque el número de bytes leídos por segundo por los dos procesos cambia constantemente, la tendencia general se mantiene en alrededor de 1: 5, lo que es consistente con la relación de peso establecida. Blkio.weight_device es un sub-dispositivo. Al escribir, agregue el número de dispositivo en el frente.
Hay muchas estadísticas en el subsistema blkio
blkio.time
io para cada dispositivo Tiempo de acceso, en milisegundos
blkio.sectors
Entrante o Fuera Número de sectores en el dispositivo
blkio.io_serviced
Los diversos tipos de operaciones de io realizadas, sub-lectura, escritura, sincronización, asíncrono y total
Blkio.io_service_bytes
Cada tipo de cambiador io o fuera de cada dispositivo Número de bytes
blkio.io_service_time
Ejecución en cada dispositivo Cada tipo de tiempo io, en microsegundos
Blkio.io_wait_time
Tiempo de espera para cada tipo de io en la cola en el dispositivo
blkio.io_merged
Número de veces que cada tipo de solicitud de io se fusiona en cada dispositivo
blkio.io_queued
El número de solicitudes de io actualmente en la cola para cada tipo _
Mejores estadísticas y monitoreo del estado de io del proceso mediante estas estadísticas.
Use el código de
de la siguiente manera :
echo 1 "blkio.reset_stats
Todas las estadísticas se pueden borrar.
Lo anterior es el uso del disco de proceso de administración cgroups io en Linux introducido, el subsistema blkio se usará en el disco de proceso de administración io, puede limitar y monitorear el proceso del disco io a través del método anterior. Lo es
Bajo el sistema Linux, las variables de entorno deben modificarse al mismo tiempo.
JITwatch es una herramienta de análisis de código para sistemas Linux. Para usar JITwatch, primero d
Cuando está operando el sistema Linux, aparece el error en el montaje del disco dur
Recientemente, algunos usuarios han informado que tienen problemas al utilizar gulp
¿Qué debo hacer si la zona horaria del sistema Linux es incorrecta?
¿Qué pasa si la versión de CentOS es demasiado baja para instalar Chrome?
Cómo utilizar las herramientas de la unidad de fusión en Linux
¿Cómo implementar la función ioctl en el sistema Linux?
Linux cómo usar ControlPersist para acelerar la velocidad de conexión SSH
Resumen de ejemplos de operación de comando grep en el sistema Linux
Linux cómo configurar git para compartir con svn
Ubuntu instala el método Simple Screen Recorder
Cómo volver a montar la partición var en el sistema Linux
Manual práctico de Windows 10 Easy to Learn
¿Cómo restaurar la interfaz de inicio de sesión de WinXP en el sistema Win7?
Cierre completamente Win10 Xiaona Assistant para liberar memoria
Algunos pequeños trucos establecidos por Win7
¿Qué puedo hacer si el menú contextual de la partición Win8.1 no puede crear un archivo nuevo?
Cómo configurar la red inalámbrica de búsqueda automática para computadoras portátiles Win8
Win7 /Win8.1 actualización Win10 Word /Excel /PPT 2013 documento no puede abrir la solución
Nueva forma de instalar Windows 7 bajo el disco duro de XP
360 System Reload Master admite los sistemas que admiten la recopilación de sistemas