Как управлять связями между процессами и ядрами?

Я использую распределенную файловую систему пользовательского пространства (GlusterFS) и хотел бы быть уверенным, что процессы GlusterFS всегда будут обладать необходимой вычислительной мощностью.

Каждый исполнительный узел моей сетки имеет 2 ЦП, с 4 ядрами на ЦП и 2 потоками на ядро ​​(Linux видит 16 "процессоров").

Моя цель - гарантировать, чтобы процессы GlusterFS имели достаточную вычислительную мощность, чтобы быть надежными, быстро реагирующими и быстрыми. (Здесь нет маркетинга, только мечты сисадмина;-)

Я рассматриваю два основных момента:

  • Процессы GlusterFS
  • Ввод / вывод для доступа к данным (на локальных или удаленных дисках)

Я думал о связывании экземпляров GlusterFS на конкретном "процессоре".

Я хотел бы быть уверен, что:

  • Никакое сеточное задание не повлияет на ядро ​​и экземпляры GlusterFS.
  • На системные задания не влияют системные задания (я хотел бы зарезервировать пул ядер для выполнения задания и быть уверенным, что ни один системный процесс не будет использовать эти процессоры).

Но как насчет ввода / вывода? Поскольку мы обрабатываем огромное количество данных (несколько терабайт), у нас будет много перерывов.

Как я могу распределить эти операции на моих процессорах? Каковы "лучшие практики"?

Спасибо за ваши комментарии!

2 ответа

Решение

Прикрепление пользовательского пространства к определенному процессору иногда может заставить его работать более последовательно; но не ядро. (проверьте набор задач)

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

редактировать: теперь, когда вы удалили идею "закрепить ядро", она стала более разумной. Да, вы можете использовать набор задач для запуска всех процессов сетки и оставить один или два процессора свободными для GlusterFS. Для аналогичного примера в системах Xen считается "лучшей практикой" зарезервировать один процессор для Dom0, который обрабатывает все операции ввода-вывода.

Вот почему я не хочу использовать файловые системы FUSE в производстве... Вместо этого я использую PVFS2.

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