Назад | Перейти на главную страницу

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

Я пытаюсь ограничить использование ввода-вывода для записи на моем сервере с помощью контрольных групп.

Вот моя информация о таблице разделов:

major minor  #blocks  name    
   8        0   10485760 sda
   8        1    9437184 sda1
   8        2    1047552 sda2

Вот моя структура файловой системы:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       8.9G  8.4G   37M 100% /
none           1004M     0 1004M   0% /dev/shm

Вот моя конфигурация cgroups:

mount { 
    blkio = /cgroup/blkio;      
}

group test2 {
    blkio {
        blkio.throttle.write_iops_device="";
        blkio.throttle.read_iops_device="8:0 10485760";
        blkio.throttle.write_bps_device="";
        blkio.throttle.read_bps_device="8:0 10485760";
        blkio.weight="";
        blkio.weight_device="";
    }
}

Когда я выполняю следующую команду чтения, она ограничивает операцию чтения, чтобы использовать только 10 бит / с

dd if=file_1 of=/dev/zero

Когда я выполняю следующую команду записи, она не ограничивает конфигурацию

dd of=file_1 if=/dev/zero

Что мне не хватает?

Вы, наверное, уже разобрались, но согласно это сообщение в блоге тебе нужно сказать dd чтобы открыть выходной файл с флагом O_DIRECT, иначе кеширование сработает и ваша конфигурация cgroup станет бесполезной:

dd of=file_1 if=/dev/zero oflag=direct