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

Как измерить производительность XFS с большим количеством файлов?

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

Сам код создает файл, если он не существует, затем открывает файл и записывает в него одну строку. Если файл действительно существует, он откроет файл и добавит к нему одну строку.

С учетом сказанного, я тестировал свой код и вносил изменения по мере необходимости, но я хотел бы также протестировать XFS, чтобы увидеть, является ли это узким местом. У меня вопрос: как мне измерить производительность чтения / записи XFS?

Начните с вашего приложения и поймите, как оно работает.

  • Добавьте в свой код инструментарий, чтобы вы могли измерять, сколько времени занимает выполнение задач.
  • Отслеживайте такие показатели ОС хоста, как IOPS ЦП и хранилища.
  • Файловая система и время отклика блочного устройства с динамической трассировкой, например xfsslower и bioslower
  • Захватывайте профили с помощью таких инструментов, как perf record чтобы вы могли видеть, что нагревается на ЦП, с помощью визуализации графика пламени. Попробуйте использовать символы отладки для ядра и пользовательских программ.

Миллионы файлов в одном каталоге обычно не лучшая идея. Даже если он поддерживается, вы получаете гигантские метаданные каталога, список которых занимает много времени. Представьте, что ваше приложение создает структуру каталогов, которая ограничивает количество файлов на каталог до нескольких тысяч.