PowerFlex: Solução de problemas de conflito de recursos
요약: Problemas e solução de problemas de conflito de recursos do PowerFlex
증상
O comportamento anormal dos processos do PowerFlex resulta quando os processos do PowerFlex entram em conflito de recursos com outros componentes de software ou hardware.
Os sintomas aqui podem ser muitos e variados. Esta é uma lista parcial dos sintomas e resultados
Problemas de MDM:
- O failover de propriedade do MDM ocorre quando os processos do MDM ficam presos e perdem a comunicação com os outros MDMs
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 ---
- O processo de MDM irá se desconectar e se reconectar constantemente ao longo de algum tempo
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
Problemas de SDS:
- SDS irá se desconectar e se reconectar constantemente ao longo de algum tempo
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 pode mostrar erros oscilantes em arquivos trc em relação à perda de conectividade com outros nós 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
- O SDS pode mostrar threads bloqueados ou presos em arquivos 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 pode mostrar "erro forking" em arquivos trc:
01/09 00:37:51.329020 0x7f1001c58eb0:mosDbg_BackTraceAllOsThreads:00673: Error forking.
- O SDS não pode iniciar devido a uma falha na alocação da memória necessária.
Os itens a seguir são relatados nos arquivos de log 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) .
- O sistema operacional também pode ter alguns sintomas em /var/log/messages ou logs de eventos do sistema:
/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
As mensagens "SYN flooding on port 7072" significam que os pacotes de dados de rede estão sendo enviados para o SDS nesse host e o SDS não pode aceitar os pacotes nessa porta. O SDS usa a porta 7072 por padrão.
A mensagem "RT throttling activated" é uma mensagem informando que o agendador do sistema operacional identificou alguns threads em tempo real sobrecarregando a CPU e privando outros threads. O sistema operacional faz isso em uma tentativa de acelerar essas tarefas em tempo real e evitar que o sistema operacional trave ou trave.
O SDC também pode sofrer erros de E/S quando os SDSes se desconectam com frequência ou não conseguem responder ao SDC com rapidez suficiente e ainda estão tentando atender aos blocos de E/S que ele possui.
Impacto
Os sintomas acima podem resultar em DATA_DEGRADED, eventos DATA_FAILED, bem como CLUSTER_DEGRADED.
원인
Se todos os sintomas acima corresponderem, provavelmente é um problema de falta de recursos de CPU ou memória. Procure aplicativos ou processos de terceiros em execução que possam estar privando a CPU e a memória dos processos MDM ou SDS.
Em um ambiente virtual, algumas vezes a CPU teve desempenho ruim. Isso é causado pelas SVMs que estão sendo definidas no mesmo pool de recursos.
Nesses casos, devemos aconselhar não colocar as SVMs no pool de recursos, mas ter seus recursos dedicados, conforme definido na SVM.
해결
Certifique-se de que os componentes do PowerFlex (MDM, SDS, SDC) foram ajustados para as configurações de desempenho. Consulte os guias de "Ajuste fino" e "Solução de problemas" de desempenho encontrados aqui.
Análise de configuração:
- Primeiro, confirme se as configurações de CPU e RAM da SVM atendem à prática recomendada:
- Configurações de CPU SVM: (Pode ser definido na hora)
- Núcleos por soquete: tudo em um soquete, portanto, "Soquetes" tem um valor de "1". (O número geral de núcleos é determinado pelas necessidades do SDS que hospeda: All-Flash, FG, DASCache, Cloudlink, 3.5, etc., todos impactam (aumentam) os requisitos de CPU.)
- Reserva: Selecione o valor "Máximo" na lista suspensa
- Ações: High
- Deve ter a seguinte aparência:
- Configurações de CPU SVM: (Pode ser definido na hora)

b. Configurações de RAM SVM: (Pode ser definido na hora)
- Marque "Reserve all guest memory (All locked)"
- Ações: High
- Deve ter a seguinte aparência:

c. Configurações de superconfirmação de memória do SO SVM no convidado: (Requer reinicialização)
-
- Execute sysctl -a|grep overcommit para confirmar se as configurações de overcommit estão corretas:
# sysctl -a|grep overcommit vm.overcommit_memory = 2 vm.overcommit_ratio = 100 -
Se os valores acima não forem definidos, algumas memórias SVM serão inutilizáveis para o processo de SDS. Corrija isso editando /etc/sysctl.conf e editando/adicionando os valores acima
- Coloque o SDS no modo de manutenção e reinicialize o SVM para aplicar as configurações
- Confirme executando "cat /etc/sysctl.conf|grep overcommit" após a reinicialização
- Sair do modo de manutenção
- Execute sysctl -a|grep overcommit para confirmar se as configurações de overcommit estão corretas:
- Para encontrá-los nos logs:
- Configuração de SVM (vmsupport):
-
Um arquivo .vmx do SVM configurado corretamente conterá o seguinte:
-
- Configuração de 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"
- Os SVMconfigs incorretos (desatualizados) terão o seguinte:
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)
-
Confirmação excessiva de memória configurada corretamente:
O servidor de arquivos/sysctl.txt contém:
vm.overcommit_memory = 2
vm.overcommit_ratio = 100
-
O PowerFlex usa uma quantidade considerável de RAM para que cada um dos serviços seja executado na memória e em alta velocidade. Por isso, ele não é compatível com o uso de swap para descarregar qualquer um dos serviços do PowerFlex.
A configuração padrão, esperada para Storage Only e SVMs em uma solução de HCI, é uma memória supercomprometida de 2. Dessa forma, o kernel não fará a assinatura excessiva de memória e, sem configurações em nenhuma troca sendo usada, garantirá que nenhum valor de commit_as seja maior do que a memória total livre/disponível.
A proporção de 100 garante que nenhuma troca também esteja sendo usada, para mais controle sobre a swap de bloco que está sendo usada.
-
Superconfirmação de memória configurada incorretamente:
O servidor de arquivos/sysctl.txt contém:
vm.overcommit_memory = 0 (value not 2)
vm.overcommit_ratio = 50 (value less than 95)
Outras possíveis soluções temporárias:
- Interrompa os aplicativos que causam a falta de recursos de CPU/memória ou verifique com o fornecedor do aplicativo se há atualizações para aliviar o excesso de recursos.
- Use ferramentas de análise de tendências de CPU/memória (top/sar/cron jobs/etc.) para descobrir qual aplicativo está usando os recursos. Intervalos de 1 segundo são recomendados para obter a granularidade necessária para mostrar quando o problema acontece e quem é responsável
- Fazer upgrade da CPU e/ou da memória do host para dar a ela mais recursos
- Reprojete para uma configuração de duas camadas em vez de um sistema convergente (se o SDS/SDC estiver no mesmo host)