PowerFlex. Поиск и устранение конфликтов за ресурсы
요약: PowerFlex: поиск и устранение конфликтов за ресурсы
증상
Когда процессы PowerFlex сталкиваются с конкуренцией за ресурсы с другими программными или аппаратными компонентами, происходит аномальное поведение этих процессов.
Симптомы здесь могут быть многочисленными и разнообразными. Это неполный список симптомов и результатов
Проблемы с MDM:
- Переключение владения MDM происходит из-за зависания процессов MDM и потери связи с другими MDM.
From exp.0:
Panic in file /emc/svc_flashbld/workspace/ScaleIO-RHEL7/src/mos/umt/mos_umt_sched_thrd.c, line 1798, function mosUmtSchedThrd_SuspendCK, PID 36721.Panic Expression ALWAYS_ASSERT Scheduler guard seems to be dead.
From trc.*
24/02 15:54:16.087919 0:schedThrdGuard_SampleLivnes:01463: WARNING: pThread 0x106d9360(0) in scheduler 0x7fff580c4880, running UMT 0x7f39ad00ceb8, found to be stuck.
24/02 15:54:16.088226 ad417eb8:actorLoop_IsSchedThredStuck:10932: Stuck scheduler thread identified
24/02 15:54:16.088253 ad417eb8:actor_Loop:11257: Lost quorum. ourVoters: 0 votersOwnedByOther: [0,0]
24/02 15:54:16.088299 ---Planned crash, reason: Lost quorum, going down to let another MDM become master ---
- Процесс MDM будет постоянно отключаться и переподключаться в течение некоторого времени
2017-02-23 14:00:43.241 MDM_CLUSTER_LOST_CONNECTION WARNING The MDM, ID 089012db4d536880, lost connection
2017-02-23 14:00:43.422 MDM_CLUSTER_CONNECTED INFO The MDM, ID 089012db4d536880, connected
2017-02-23 23:05:25.852 MDM_CLUSTER_LOST_CONNECTION WARNING The MDM, ID 089012db4d536880, lost connection
2017-02-23 23:05:26.422 MDM_CLUSTER_CONNECTED INFO The MDM, ID 089012db4d536880, connected
2017-02-24 15:54:16.141 MDM_CLUSTER_LOST_CONNECTION WARNING The MDM, ID 089012db4d536880, lost connection
2017-02-24 15:54:16.238 MDM_CLUSTER_CONNECTED INFO The MDM, ID 089012db4d536880, connected
Проблемы с паспортами безопасности:
- SDS будет постоянно отключаться и снова подключаться в течение некоторого времени
2017-02-15 13:18:16.881 SDS_RECONNECTED INFO SDS: siosds2 (ID 1eb052fe00000001) reconnected
2017-02-16 03:37:37.327 SDS_DECOUPLED ERROR SDS: siosds2 (id: 1eb052fe00000001) decoupled.
2017-02-16 03:39:54.300 SDS_RECONNECTED INFO SDS: siosds2 (ID 1eb052fe00000001) reconnected
2017-02-17 04:03:41.757 SDS_DECOUPLED ERROR SDS: siosds2 (id: 1eb052fe00000001) decoupled.
2017-02-17 04:09:13.604 SDS_RECONNECTED INFO SDS: siosds2 (ID 1eb052fe00000001) reconnected
- SDS может показывать осциллирующие ошибки в trc-файлах, связанные с потерей подключения к другим узлам SDS:
14/02 19:13:24.096983 1be7eb8:contNet_OscillationNotif:01675: Con 1eb052fe00000005 - Oscillation of type 5 (RPC_LINGERED_1SEC) reported
14/02 19:13:24.196814 1be7eb8:contNet_OscillationNotif:01675: Con 1eb053000000000b - Oscillation of type 5 (RPC_LINGERED_1SEC) reported
14/02 19:13:24.296713 1be7eb8:contNet_OscillationNotif:01675: Con 1eb0530000000007 - Oscillation of type 5 (RPC_LINGERED_1SEC) reported
14/02 21:48:43.917218 afb28eb8:contNet_OscillationNotif:01675: Con 1eb052fe00000007 - Oscillation of type 1 (SOCKET_DOWN) reported
14/02 21:48:43.917296 afb28eb8:contNet_OscillationNotif:01675: Con 1eb052fe00000005 - Oscillation of type 1 (SOCKET_DOWN) reported
- SDS может показывать взаимозаблокированные или застрявшие потоки в trc-файлах:
14/02 19:13:24.147938 9aa4eeb8:netPath_IsKaNeeded:01789: DEBUG ASSERT, Reason:Socket deadlocked. Crashing.
14/02 19:13:24.148113 9aa4eeb8:netPath_IsKaNeeded:01789: DEBUG ASSERT, Reason:Socket deadlocked. Crashing.
14/02 19:13:24.148121 9aa4eeb8:netPath_IsKaNeeded:01789: DEBUG ASSERT, Reason:Socket deadlocked. Crashing.
14/02 20:52:54.097765 242f0eb8:kalive_StartIntr:00346: KA aborted due to stuck sched thread
14/02 21:48:43.510602 7fa30eb8:kalive_StartIntr:00346: KA aborted due to stuck sched thread
14/02 21:48:44.776713 1b67ceb8:kalive_StartIntr:00346: KA aborted due to stuck sched thread
14/02 02:44:41.532007 e2239eb8:contNet_OscillationNotif:01675: Con 1eb052fd00000001 - Oscillation of type 3 (RCV_KA_DISCONNECT) reported
14/02 02:44:43.799135 0:schedThrdGuard_SampleLivnes:01463: WARNING: pThread 0x1a0de10(0) in scheduler 0x7fff01bec400, running UMT 0x7f94e221eeb8, found to be stuck.
14/02 02:44:43.799155 0:schedThrdGuard_SampleLivnes:01463: WARNING: pThread 0x1a0e050(1) in scheduler 0x7fff01bec400, running UMT 0x7f94e2227eb8, found to be stuck.
14/02 02:44:43.799257 e0e38eb8:cont_IsSchedThredStuck:01678: Stuck scheduler thread identified
14/02 02:44:43.799267 e0e38eb8:kalive_StartIntr:00346: KA aborted due to stuck sched thread
- SDS может показывать «ошибку разветвления» в файлах trc:
01/09 00:37:51.329020 0x7f1001c58eb0:mosDbg_BackTraceAllOsThreads:00673: Error forking.
- SDS не может запуститься из-за невозможности выделения необходимой памяти.
В файлах журнала exp сообщается следующее:
07/09 00:41:52.713502 Panic in file /data/build/workspace/ScaleIO-SLES12-2/src/mos/usr/mos_utils.c, line 235, function mos_AllocPageAlignedOrPanic, PID 25342.Panic Expression pMem != ((void *)0) .
- ОС также может иметь некоторые симптомы в /var/log/messages или журналах системных событий:
/var/log/messages:
Feb 14 13:25:08 ScaleIO-192-168-1-2 kernel: [7461116.683555] TCP: Possible SYN flooding on port 7072. Sending cookies.
Feb 14 13:25:08 ScaleIO-192-168-1-2 kernel: [7461116.683561] TCP: Possible SYN flooding on port 7072. Sending cookies.
Feb 14 13:25:08 ScaleIO-192-168-1-2 kernel: [7461116.683566] TCP: Possible SYN flooding on port 7072. Sending cookies.
Feb 14 13:25:08 ScaleIO-192-168-1-2 kernel: [7461116.683570] TCP: Possible SYN flooding on port 7072. Sending cookies.
Feb 14 13:27:39 ScaleIO-192-168-1-2 kernel: [7461266.566145] sched: RT throttling activated
Сообщения «SYN flooding on port 7072» означают, что пакеты сетевых данных отправляются в SDS на этом хосте, и SDS не может принимать пакеты на этом порте. По умолчанию SDS использует порт 7072.
«RT throttling activated» — это сообщение о том, что планировщик ОС обнаружил некоторые потоки реального времени, перегружающие процессор и нагружающие другие потоки. ОС делает это, чтобы ограничить количество задач в режиме реального времени и предотвратить зависание или сбой ОС.
SDC также может испытывать ошибки ввода-вывода, если SDS часто отключаются или не могут достаточно быстро реагировать на SDC и все еще пытаются обслуживать принадлежащие ему блоки ввода-вывода.
Воздействие
Вышеперечисленные симптомы могут приводить к DATA_DEGRADED, DATA_FAILED событиям, а также к CLUSTER_DEGRADED.
원인
Если все перечисленные выше признаки повторяются, скорее всего, проблема связана с нехваткой ресурсов ЦП или памяти. Поищите запущенные сторонние приложения или процессы, которые могут сокращать нагрузку на ЦП и память из-за процессов MDM или SDS.
В виртуальной среде пару раз процессор работал низко. Это вызвано тем, что SVM определены в одном пуле ресурсов.
В таких случаях рекомендуется не помещать SVM в пул ресурсов, а использовать для них выделенные ресурсы, как определено в SVM.
해결
Убедитесь, что компоненты PowerFlex (MDM, SDS, SDC) настроены для настройки производительности. См. руководства по «точной настройке» и «устранению неполадок» для производительности, которые можно найти здесь.
Проверка конфигурации:
- Сначала убедитесь, что настройки ЦП и ОЗУ SVM соответствуют передовым практикам.
- Параметры процессора SVM: (Можно настроить на лету)
- Ядер на сокет: все в одном сокете, поэтому "Sockets" имеет значение "1". (Общее количество ядер определяется потребностями SDS, в котором оно размещается: All-Flash, FG, DASCache, Cloudlink, 3.5 и т. д. влияют (увеличивают) требования к ЦП.)
- Резервирование: В раскрывающемся списке выберите значение «Максимальный»
- Акции: Высокий
- Это должно выглядеть следующим образом:
- Параметры процессора SVM: (Можно настроить на лету)

b. Настройки оперативной памяти SVM: (Можно настроить на лету)
- Установите флажок «Зарезервировать всю гостевую память (все заблокировано)»
- Акции: Высокий
- Это должно выглядеть следующим образом:

c. Настройки превышения памяти гостевой ОС SVM: (Требуется перезагрузка)
-
- Выполните команду sysctl -a|grep overcommit, чтобы убедиться, что настройки overcommit верны:
# sysctl -a|grep overcommit vm.overcommit_memory = 2 vm.overcommit_ratio = 100 -
Если указанные выше значения не заданы, некоторые модули памяти SVM не могут использоваться процессом SDS. Исправьте это, отредактировав файл /etc/sysctl.conf и отредактировав/добавив вышеуказанные значения
- Переведите SDS в режим обслуживания и перезагрузите SVM, чтобы применить настройки
- Подтвердите, выполнив команду «cat /etc/sysctl.conf|grep overcommit» после перезагрузки
- Выйдите из режима обслуживания
- Выполните команду sysctl -a|grep overcommit, чтобы убедиться, что настройки overcommit верны:
- Чтобы найти их в журналах, выполните следующие действия.
- Конфигурация SVM (vmsupport):
-
Правильно настроенный файл SVM .vmx будет содержать следующее:
-
- Конфигурация SVM (vmsupport):
sched.cpu.units = "mhz"
sched.cpu.affinity = "all"
sched.cpu.min = "25930" (nonzero value that's equal to core speed * the # of cores allocated)
sched.cpu.shares = "high"
sched.mem.min = "24576" (nonzero value that's a full allocation of configured memory)
sched.mem.minSize = "24576" (nonzero value that's a full allocation of configured memory)
sched.mem.shares = "high"
cpuid.coresPerSocket = "10" (value equal to total # of cores allocated, so they're all in one socket)
sched.mem.pin = "TRUE"
- Неверные (устаревшие) конфигурации SVMconfig будут иметь следующие значения:
sched.cpu.min = "0"
sched.cpu.shares = "normal"
sched.mem.pin = "FALSE"
sched.mem.shares = "normal"
cpuid.coresPerSocket = "4" (value less than total # of cores allocated, usually 1/2 or 1/4)
-
Правильно настроенное выделение памяти:
Файловый сервер/sysctl.txt содержит:
vm.overcommit_memory = 2
vm.overcommit_ratio = 100
-
PowerFlex использует значительный объем ОЗУ для работы каждой из служб в памяти и с высокой скоростью. Поэтому он не поддерживает использование подкачки для разгрузки каких-либо служб PowerFlex.
Значение по умолчанию, которое ожидается для модулей Storage Only и SVM в решении HCI, равно чрезмерному выделению памяти значения 2. Таким образом, ядро не будет чрезмерно выделять память, а без настроек подкачки гарантирует, что значение commit_as не будет больше, чем общая свободная/доступная память.
Коэффициент 100 также гарантирует, что подкачка также не используется, для большего контроля над блочной заменой.
-
Неправильно настроенное выделение памяти:
файловый сервер/sysctl.txt содержит:
vm.overcommit_memory = 0 (value not 2)
vm.overcommit_ratio = 50 (value less than 95)
Другие возможные способы решения проблемы:
- Остановите приложения, вызывающие нехватку ресурсов ЦП/памяти, или обратитесь к поставщику приложения за обновлениями, чтобы уменьшить потребление ресурсов.
- Используйте средства определения тенденций процессора/памяти (top/sar/cron jobs и т. д.), чтобы узнать, какое приложение использует ресурсы. Рекомендуется использовать интервалы в 1 секунду, чтобы получить необходимую детализацию, чтобы показать, когда возникает проблема и кто несет ответственность
- Модернизируйте ЦП и/или память хоста, чтобы предоставить ему больше ресурсов
- Изменение архитектуры для двухуровневой конфигурации, а не для конвергентной системы (если SDS/SDC находятся на одном хосте)