Как настроить Luster для блокировки клиентских запросов при загрузке, а не при сбое?

Мы используем Luster в кластере с приблизительно 200 ТБ хранилища, 12 объектными хранилищами (которые подключаются к системе хранения DDN с помощью QDR Infiniband) и примерно 160 четырехъядерных и 8-ядерных вычислительных заметок. У большинства пользователей этой системы вообще нет проблем, но мои задачи требуют интенсивного ввода-вывода. Когда я запускаю задание массива, в котором 250-500 процессов одновременно обрабатывают файловую систему, обычно между 10 и 20 моими процессами произойдет сбой. Файлы журнала указывают, что нагрузка на OST превышает 2, и что клиент Lustre возвращает либо неверные данные, либо произошел сбой read() вызовы функций.

В настоящее время единственный способ решить мою проблему - запустить меньше одновременных заданий. Это неудовлетворительно, потому что нет никакого способа узнать заранее, будет ли моя рабочая нагрузка загружена ЦП или I/O. Кроме того, просто выключить нагрузку - это не способ запустить суперкомпьютер: мы хотели бы, чтобы он работал медленнее при работе под нагрузкой, а не давал неправильных ответов.

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

Как настроить Luster для блокировки клиентов?

1 ответ

Решение

Задумывались ли вы о добавлении дополнительных OSS и распространении OST? Это должно уменьшить нагрузку. В этом ключе, какой тип ввода / вывода вы делаете? Много ли у вас больших файлов, если это так, они полосатые? По умолчанию чередование равно 1, что означает, что каждый файл находится только в 1 OST, который может быть изменен для каждого файла (при создании) или для каждого каталога (для новых файлов).

Вы также можете попробовать увеличить таймауты в блеске (lctl get_param/set_param), а именно:

  • Тайм-аут
  • ldlm_timeout
Другие вопросы по тегам