Операция на одном диске перегружает другие диски

Я использую Ubuntu 15.04 с MD RAID1, LVM и LXC сверху их как веб-сервер. У меня есть среднее число нормальной нагрузки приблизительно 1-2, и все работает хорошо, пока я не выполняю крупной операции IO. Странная вещь состоит в том, что я делаю эти операции на неиспользуемых дисках. Так, например, sdc и sdd находятся в RAID1, используемой веб-сервером, и я делаю dd если =/dev/zero =/dev/sdb или просто выполняю du. После нескольких секунд средние переходы загрузки к 10 и больше и система стали почти неприменимыми. Nmon показывает, что все диски стали перегруженными, и если я не остановлю операцию, перегрузка продолжит расти.

Я присоединяю снимки экрана nmon. Перегрузка с dd, если =/dev/zero =/dev/sdb.

Вывод uname:

... 3.19.0-39-универсальный # SMP с 44 Ubuntu вторник 1 декабря 14:39:05 GNU/Linux UTC 2015 x86_64 x86_64 x86_64

ОБНОВЛЕНИЕ:

Я изменил настройку дисков, заменили системные диски большим количеством устойчивого HGST. Псевдонимы системного диска были изменены после системной перезагрузки.

Вывод lsblk:

NAME                     FSTYPE              SIZE MOUNTPOINT
sda                                          1,8T 
├─sda1                                         1M 
├─sda2                   linux_raid_member    50G 
│ └─md0                  LVM2_member          50G 
│   ├─system-swap        swap                 10G [SWAP]
│   └─system-root        ext4                 40G /
└─sda3                   linux_raid_member 881,5G 
  └─md1                  LVM2_member       881,4G 
    ├─lxc-hosting        ext3                450G 
    ├─lxc-ns1-real                             1G 
    │ ├─lxc-ns1          ext3                  1G 
    │ └─lxc-ns1--snap6   ext3                  1G 
    └─lxc-ns1--snap6-cow                       1G 
      └─lxc-ns1--snap6   ext3                  1G 
sdb                                          1,8T 
├─sdb1                                         1M 
├─sdb2                   linux_raid_member    50G 
│ └─md0                  LVM2_member          50G 
│   ├─system-swap        swap                 10G [SWAP]
│   └─system-root        ext4                 40G /
├─sdb3                   linux_raid_member 881,5G 
│ └─md1                  LVM2_member       881,4G 
│   ├─lxc-hosting        ext3                450G 
│   ├─lxc-ns1-real                             1G 
│   │ ├─lxc-ns1          ext3                  1G 
│   │ └─lxc-ns1--snap6   ext3                  1G 
│   └─lxc-ns1--snap6-cow                       1G 
│     └─lxc-ns1--snap6   ext3                  1G 
└─sdb4                   ext4              931,5G 
sdc                      linux_raid_member 931,5G 
└─md2                    LVM2_member       931,4G 
  └─reserve-backups      ext4              931,4G /var/backups/mounted
sdd                      linux_raid_member 931,5G 
└─md2                    LVM2_member       931,4G 
  └─reserve-backups      ext4              931,4G /var/backups/mounted

Вывод lsscsi:

[0:0:0:0]    disk    ATA      HGST HUS726020AL W517  /dev/sda 
[1:0:0:0]    disk    ATA      HGST HUS726020AL W517  /dev/sdb 
[2:0:0:0]    disk    ATA      WDC WD1002FBYS-0 0C06  /dev/sdc 
[3:0:0:0]    disk    ATA      WDC WD1002FBYS-0 0C06  /dev/sdd 

Я выполнил новый тест с объемом плазмы (см. Загрузку с объемом плазмы </dev/zero>/dev/md2). Теперь ситуация лучше. Операция на дисках sdc и sdd все еще влияет на производительность sda, но среднее число загрузки сохраняет 6-7, и система не перегружается. И я думаю теперь, что я понимаю то, что может быть причиной проблемы. С тех пор sda и sdb (как части RAID) используемый для веб-сервера, у них есть постоянный поток параллельных запросов. Жесткие диски имеют к constanly, двигают их головами, таким образом, уменьшающими производительность IO, но система, кэш IO (я верю Linux, использует всю свободную память с этой целью) помогает минимизировать количество доступов к диску. Когда я начинаю интенсивно использовать другие диски, кэш becames заполненный новыми данными, именно поэтому это увеличивает нагрузку на главные диски. Если я буду прав, то увеличивание суммы RAM поможет. Теперь это - только 16 ГБ.

0
задан 25 December 2015 в 17:00

2 ответа

Скорее всего, диски - все на том же контроллере, и контроллер является узким местом. То есть существует предел пропускной способности суммарного итога io ко всем дискам, поэтому когда Вы начинаете использовать тот в большой степени, там менее доступно другим.

1
ответ дан 30 September 2019 в 00:14

Вы могли попробовать другой дисковый планировщик. Проверьте для наблюдения то, что используется в настоящее время на дисках (т.е. для sda):

кошка/sys/block/sda/queue/scheduler

Вы могли бы видеть:

noop упреждающий крайний срок [cfq]

Затем Вы могли решить, какой планировщик использовать для каждого диска, в зависимости от того, какой тип они (ssd, HDD) или какой контроллер они идут. Просто установите его на другой планировщик путем ввода:

эхо {ИМЯ ПЛАНИРОВЩИКА}>/sys/block/{ИМЯ УСТРОЙСТВА}/queue/scheduler

Таким образом, если бы Вы хотите использовать крайний срок для sda, это было бы:

крайний срок эха>/sys/block/sda/queue/scheduler

Вы могли бы найти, что крайний срок использования на сервере даст Вам лучшую скорость отклика в то время как под большой нагрузкой.

Если Вы хотите изменить планировщик для ВСЕХ дисков:

Редактирование/etc/default/grub:

нано sudo/etc/default/grub

Необходимо добавить elevator=deadline. Измените GRUB_CMDLINE_LINUX_DEFAULT = "тихий всплеск" к

GRUB_CMDLINE_LINUX_DEFAULT = "подавляют шумы всплеска elevator=deadline"

Затем выполненный

обновление-grub2 sudo

и перезапуск.

0
ответ дан 30 September 2019 в 00:14

Другие вопросы по тегам:

Похожие вопросы: