Я пытаюсь скопировать файл размером 200 ГБ с монтирования NFS на локальный диск. Локальный диск представляет собой файловую систему XFS в LVM поверх системы RAID 5 (аппаратный контроллер RAID).

Я использую rsync для контроля скорости передачи. Вначале скорость ввода-вывода составляет около 200 МБ / с, стабильно для первых 18 ГБ. Но затем производительность падает в 10-20 раз и никогда не восстанавливается до первоначального уровня. Иногда он достигает примерно 50-100 МБ / с, но всего на несколько секунд, а затем процесс, кажется, немного зависает.

В то же время все операции file-stat в целевой файловой системе блокируются на длительное время (минуты). Также прерывая процесс копирования блоков на несколько минут. Последующее удаление частично скопированного файла также занимает несколько минут.

Есть идеи, что может быть причиной этого?

1 ответ1

0

Благодаря комментарию Jet я посмотрел на кеширование дискового ввода-вывода под Linux. Оказывается, так как система имеет много оперативной памяти (48 ГБ), которая почти свободна, много используется для кэша ввода-вывода.

Я отслеживал /proc /meminfo и искал поля «Грязные» (грязные страницы кэша ввода / вывода) и «Обратная запись» (записанные грязные страницы на диск).

watch -n1 -- "grep -E Dirty|Writeback /proc/meminfo"

Показывает, что Dirty увеличивается примерно до 18 ГБ, затем снова уменьшается, в то время как запись увеличивается, после того, как грязные страницы были записаны, она снова растет и т.д. Наблюдая за диском io с помощью iostat вы видите, что во время кэширования диск не записывает, только при «обратной записи» уменьшает данные записывается на диск. Скорость записи составляет около 15 МБ / с.

Таким образом, первые 18 ГБ являются быстрыми, записываются в кэш, но затем, когда происходит фактическая запись, она замедляется и во время записи дисковый ввод-вывод насыщается и блокируется, пока все грязные страницы не будут отправлены на диск.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .