Как управлять связями между процессами и ядрами?
Я использую распределенную файловую систему пользовательского пространства (GlusterFS) и хотел бы быть уверенным, что процессы GlusterFS всегда будут обладать необходимой вычислительной мощностью.
Каждый исполнительный узел моей сетки имеет 2 ЦП, с 4 ядрами на ЦП и 2 потоками на ядро (Linux видит 16 "процессоров").
Моя цель - гарантировать, чтобы процессы GlusterFS имели достаточную вычислительную мощность, чтобы быть надежными, быстро реагирующими и быстрыми. (Здесь нет маркетинга, только мечты сисадмина;-)
Я рассматриваю два основных момента:
- Процессы GlusterFS
- Ввод / вывод для доступа к данным (на локальных или удаленных дисках)
Я думал о связывании экземпляров GlusterFS на конкретном "процессоре".
Я хотел бы быть уверен, что:
- Никакое сеточное задание не повлияет на ядро и экземпляры GlusterFS.
- На системные задания не влияют системные задания (я хотел бы зарезервировать пул ядер для выполнения задания и быть уверенным, что ни один системный процесс не будет использовать эти процессоры).
Но как насчет ввода / вывода? Поскольку мы обрабатываем огромное количество данных (несколько терабайт), у нас будет много перерывов.
Как я могу распределить эти операции на моих процессорах? Каковы "лучшие практики"?
Спасибо за ваши комментарии!
2 ответа
Прикрепление пользовательского пространства к определенному процессору иногда может заставить его работать более последовательно; но не ядро. (проверьте набор задач)
если бы это было возможно, вы бы превратили переключатель пространства пользователя / ядра (уже поддающийся измерению в производительность ОС) в проблему межпроцессорного взаимодействия / синхронизации. На много порядков хуже.
редактировать: теперь, когда вы удалили идею "закрепить ядро", она стала более разумной. Да, вы можете использовать набор задач для запуска всех процессов сетки и оставить один или два процессора свободными для GlusterFS. Для аналогичного примера в системах Xen считается "лучшей практикой" зарезервировать один процессор для Dom0, который обрабатывает все операции ввода-вывода.
Вот почему я не хочу использовать файловые системы FUSE в производстве... Вместо этого я использую PVFS2.