8x более медленная кошка для тех же файлов на том же диске, но другом каталоге

У меня есть проблема, где я имею 8x более медленный доступ к ряду файлов по сравнению с теми же файлами в другом каталоге на машине Linux.

Файловая система является файловой системой RAID-5 на 36 ТБ, экспортируемой из PERC H810 Dell, и она отформатирована с ext4. Машина имеет 256 ГБ RAM, и я использую OpenSuSE 12.3 с 3.7.10-1.45-настольным ядром.

Проблема замечена с чем-то простым как "кошка времени slowdir /*>/dev/null", но "кошка времени fastdir /*>/dev/null" о 8x быстрее. Я очищаюсь, кэш IO между тестами (отзовитесь эхом 3>/proc/sys/vm/drop_caches), так, чтобы не должен был влиять на мои результаты.

И slowdir и fastdir находятся в той же файловой системе и том же родительском каталоге.

Вот еще некоторые причуды о проблеме. Если я делаю следующее, проблема сохраняется в новом каталоге, alsoslowdir:

  • CD/parentdir
  • CP-r slowdir alsoslowdir
  • отзовитесь эхом 3>/proc/sys/vm/drop_caches
  • кошка времени alsoslowdir /*>/dev/null (ПЛОХО: занимает 8 минут),

Но, если я делаю новый каталог, alsofastdir, и копирую все файлы в него, затем это 8x быстрее с этим методом:

  • CD/parentdir
  • mkdir alsofastdir
  • CP slowdir /* alsofastdir/
  • отзовитесь эхом 3>/proc/sys/vm/drop_caches
  • кошка времени alsofastdir /*>/dev/null (ХОРОШИЙ: занимает 1 минуту),

Все файлы между 7 и 15 МБ в каждом из каталогов и существует несколько тысяч файлов с в общей сложности 58 ГБ в dir.

Я проверил/usr/sbin/filefrag статистику на все файлы в быстрых и медленных каталогах, и они - все или 1 или 2 степени приблизительно с тем же количеством 1 и 2 степеней между ними.

Что я пропускаю?

0
задан 13 March 2015 в 05:26
2 ответа

При условии, что структура каталогов абсолютно одинакова (и вы действительно должны это проверить), ваши результаты могут быть искажены кэшированием (как на уровне контроллера, так и на уровне операционной системы) и/или сильно отличающейся раскладкой физического диска для этих двух каталогов.

Попробуйте:

  1. удостоверьтесь, что у вас есть двоичный iostat (обычно это часть пакета sysstat)
  2. аннулируйте PERC кэш, выпустив
    dd if=/dev/zero of=bigfile bs=4k count=1M oflag=direct; sync
  3. invalidate OS cache by issuing
    sync; echo 3 > /proc/sys/vm/drop_caches
  4. gather disk statistics issuing
    iostat -x -k 5 > stat. txt & cat dir/* > /dev/null; killall iostat
  5. повторите все эти шаги для другого каталога, загрузите статистику диска (для обоих каталогов) и дайте мне их увидеть
0
ответ дан 5 December 2019 в 12:54

В вашем "быстром" тесте вы показали, что скопировали рекурсивно: cp -r slowdir alsoslowdir

-в вашем "медленном" тесте, вы скопировали не рекурсивным флагом, а подстановочным знаком: cp slowdir/* alsofastdir/

Есть ли у вас подкаталоги в slowdir? Не уверен на 100%, включает ли подстановочный символ в себя подкаталоги, но уверен, что нет, а только расширяется до всех соответствующих "объектов" в каталоге, то есть подкаталоги останутся пустыми.

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

Если это вас ни к чему не приведет... Может быть, просто добавить "быстро" ко всем именам каталогов? (j/k) Посмотрите в поиске хорошего инструмента тестирования производительности, хотя - кот действительно не является хорошим методом для измерения IMO. Найти инструмент, который позволяет регулировать потоки, I / O размер, чтение / запись смеси и т.д. с тестами, выполняемыми на конкретном файле (к сожалению, на данный момент не приходят на ум конкретные имена инструментов).

Кстати - что даже привело вас к тестированию производительности в отдельных каталогах, как вы делаете? Уверен, что для начала вы столкнулись с каким-то странным поведением...

0
ответ дан 5 December 2019 в 12:54

Теги

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