Уменьшение скорости передачи при копировании большого количества данных

Я использую систему Ubuntu 16.04.3 LTS (4.10.0-40-generic) с двумя жесткими дисками и несколькими разделами на каждом диске. Когда я копирую данные (& lt; 5 ГБ) между двумя дисками, я получаю скорость передачи около 70 МБ / с. Однако, когда я пытаюсь скопировать большой объем данных (> 30 ГБ) с одного диска на другой, я замечаю несколько проблем с производительностью.

Мой вопрос: является ли это поведение нормальным и ожидается в системах Linux? Может ли кто-нибудь объяснить это мне и посоветовать мне, как избежать этого снижения производительности?

Ниже я опишу свои наблюдения. В этом примере я скопировал файл образа диска на 54 ГБ из sda8 (раздел 325 ГБ) на sdb8 (раздел 1.6 ТБ)

1) Скорость передачи уменьшается, а iowait увеличивается Когда я пытаюсь скопировать более 50 ГБ, я обратите внимание, что постепенно скорость передачи уменьшается. Я контролирую производительность, используя взгляды, поверх, iotop и iostat. При скорости 30 ГБ скорость передачи данных снизилась до 58 МБ / с, с 46 ГБ до 36 МБ / с, со скоростью от 52 до 12 МБ / с. После этого скорость передачи действительно начинает колебаться и опускается ниже 1 МБ / с. В то же время я вижу, что iowait растет с начала 0% до 62% в конце. Во время копирования диска sd8 имеет «занятый» процент от 40% до 60%. Disk sdb на все 100% занят. Скорость передачи не только снижается, но и моя система становится менее отзывчивой. Я ожидаю, что причина этого будет у iowait. Это нормальное поведение? Как можно избежать снижения производительности?

1) Скорость передачи уменьшается, а iowait увеличивается Когда копирование закончилось, я заметил, что iowait по-прежнему высок и постепенно начинает уменьшаться до нормальных значений. Это занимает пару минут. Я думаю, что за это время данные все еще записываются в sdb со скоростью около 1 или 2 Мбайт / с. Используя iotop, похоже, что процесс «jdb2 / sdb4-8» вызывает запись этого диска. В то время, когда IOwait уменьшается, моя система по-прежнему страдает от плохой реакции. Также видно, что диск sda больше не занят, но диск sdb все еще работает на 100% занят. Что вызывает у моей системы плохое реагирование на пару минут после действия копирования? [D8] Можно ли этого избежать?

3) Копирование с сетевого диска увеличивает эффекты Когда я пытаюсь скопировать из моего NAS Synology на мой локальный диск (sdb8), эффекты еще хуже. Сначала сетевой накопитель подключается к моей системе, а затем запускается копирование. Первоначально также реализуется скорость передачи 70 Мбайт / с, но скорость передачи данных должна быть быстрее. После пары GB скорость передачи снизилась значительно ниже 1 Мбайт / с. Копирование было проверено с помощью перетаскивания из Nautilus, команды «cp», команды rsync, приложения FreeFileSync, но все показали низкую производительность. Что может быть причиной того, что эффекты снижения производительности хуже с помощью сетевых дисков?

3) Копирование с сетевого диска увеличивает эффекты Во время копирования «iostat -dx 5» использовался для контроля производительности диска. Около 5 ГБ мониторинга выполнения копирования:

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 0,00 530,40 0,00 68064,80 0,00 256,65 1,62 3,06 3,06 0,00 1,63 86,72 sdb 0,00 18767,20 0,20 112,40 23,20 73169,60 1300,05 144,32 1345,39 308,00 1347,23 8,88 100,00

Когда копирование продвигалось до 52 ГБ, это показывает:

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 0,00 64,60 0,00 8268,80 0,00 256,00 0,22 3,41 3,41 0,00 1,76 11,36 sdb 0,00 1054,40 0,20 10,60 6,40 6681,60 1238,52 148,56 9458,00 0,00 9636,45 92,59 100,00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,00 0,00 50,20 0,00 6425,60 0,00 256,00 0,16 3,09 3,09 0,00 1,64 8,24 sdb 0,00 2905,80 0,40 17,00 8,80 10289,60 1183,72 141,86 10199,77 652,00 10424,42 57,47 100,00

Я понимаю, что это несколько вопросов, но я подозревайте, что все они связаны с одной и той же причиной и надеются, что кто-то может это разъяснить мне.

2
задан 15 January 2018 в 03:46

2 ответа

К сожалению, это нормально и ожидается для вашего большого использования файла. Ваш случай с двумя жесткими дисками и файл 50G + устраняет множество вводящих в заблуждение разговоров о «медленных устройствах», «медленных шинах» и «медленных файловых системах», и вы остаетесь с необъяснимой проблемой медленной копии. У вас должно быть довольно много памяти, чтобы получить производительность для файлов 30G. Системные буферы используются, заполняются и после завершения команды копирования, в конце концов, будут очищены до цели, что затруднит реальное время / ставки (даже команда «время» завершится задолго до того, как буферы, наконец, будут сброшены.

Единственный «обходной путь», который я нашел, - это использовать команду «copy», которая позволяет вам настраивать явные буферы самостоятельно, например tar или cpio. Установка 2M-буфера на tar позволила мне ускорить 10M / sec копия 50G-файла до 35 М / сек - все еще намного медленнее, чем номинальная 100M / sec, я получаю файлы меньшего размера (или в Windows).

0
ответ дан 17 July 2018 в 23:02

К сожалению, это нормально и ожидается для вашего большого использования файла. Ваш случай с двумя жесткими дисками и файл 50G + устраняет множество вводящих в заблуждение разговоров о «медленных устройствах», «медленных шинах» и «медленных файловых системах», и вы остаетесь с необъяснимой проблемой медленной копии. У вас должно быть довольно много памяти, чтобы получить производительность для файлов 30G. Системные буферы используются, заполняются и после завершения команды копирования, в конце концов, будут очищены до цели, что затруднит реальное время / ставки (даже команда «время» завершится задолго до того, как буферы, наконец, будут сброшены.

Единственный «обходной путь», который я нашел, - это использовать команду «copy», которая позволяет вам настраивать явные буферы самостоятельно, например tar или cpio. Установка 2M-буфера на tar позволила мне ускорить 10M / sec копия 50G-файла до 35 М / сек - все еще намного медленнее, чем номинальная 100M / sec, я получаю файлы меньшего размера (или в Windows).

0
ответ дан 24 July 2018 в 13:36
  • 1
    Спасибо за ваш ответ. Тем временем я пробовал несколько дополнительных тестов, и то, что я наблюдаю, соответствует вашему ответу. – user3074126 16 January 2018 в 18:22

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

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