Problemas de desempenho de gravação do PowerFlex
Summary: Depois de executar a manutenção da rede, o desempenho de gravação de determinados SDSs agora é ruim.
Symptoms
Cenário
- Esse problema ocorre após a manutenção da rede nos switches topo de rack (TORs), normalmente uma reinicialização dos switches.
- Os nós SDS estão usando uma ligação LACP para as redes de dados.
- Somente os nós SDS que usam os switches onde a manutenção foi realizada são afetados.
- O desempenho de gravação pode ser de até centenas de milissegundos para um determinado pool de armazenamento/PD.
- O desempenho de leitura do mesmo conjunto de SDSs é normal.
- O "NET_LONG_RCV_GRP_PROCESS" no diag_counters.txt mostra os valores subindo rapidamente, enquanto a última vez incrementada está permanecendo baixa.
Exemplo:
Comp :: Counter :: Value :: ExtData :: Last Counted(Ms) NET :: NET_LONG_RCV_GRP_PROCESS :: 3756453 :: 0xffffffff :: 3120 NET :: NET_LONG_RCV_GRP_PROCESS :: 3825395 :: 0xffffffff :: 960 NET :: NET_LONG_RCV_GRP_PROCESS :: 3705906 :: 0xffffffff :: 1320 NET :: NET_LONG_RCV_GRP_PROCESS :: 4094919 :: 0xffffffff :: 1230 NET :: NET_LONG_RCV_GRP_PROCESS :: 3954725 :: 0xffffffff :: 1390 NET :: NET_LONG_RCV_GRP_PROCESS :: 3594178 :: 0xffffffff :: 420 NET :: NET_LONG_RCV_GRP_PROCESS :: 3702403 :: 0xffffffff :: 680 NET :: NET_LONG_RCV_GRP_PROCESS :: 3830299 :: 0xffffffff :: 510 NET :: NET_LONG_RCV_GRP_PROCESS :: 3491713 :: 0xffffffff :: 330 NET :: NET_LONG_RCV_GRP_PROCESS :: 4155343 :: 0xffffffff :: 690
Neste exemplo, o valor na terceira coluna é alto (e aumentando se estiver assistindo ao vivo). A quinta coluna mostra a última vez que foi encontrado, o que é menos de um segundo para uma boa parte dos SDSs.
Em um sistema PowerFlex íntegro, a terceira coluna não será contada para cima e a quinta coluna será contada para cima, pois a última vez encontrada aumenta com o tempo.
Para assistir aos contadores ao vivo, os seguintes comandos podem ser executados:
#Set a variável dos SDSs no domínio de proteção afetado. Digite o nome adequado do PD aqui.
pd=<PD_NAME>
#Set a variável para o número de SDSs no domínio de proteção. Execute como está.
num=`scli --query_protection_domain --protection_domain_name $pd |grep Protection |awk '{print $16}'`
#login permitir que o último comando funcione.
scli --login --username admin
#Watch o contador correto do comando "query_diag_counters" para cada SDS.
watch -d -n 1 "for x in \$(scli --query_all_sds | grep -A $num $pd | grep ID | awk '{print \$5}'); do echo \$x; scli --query_diag_counters | grep -A30 \$x | grep -Em1 '\$x|NET_LONG_RCV_GRP_PROCESS'; done"
Em um sistema saudável, espere que a quinta coluna esteja contando regularmente com o passar do tempo e que a terceira coluna seja estática. Se o tempo da quinta coluna está ficando baixo e a terceira coluna está contando para cima, isso é um sintoma do problema.
Impacto
O desempenho de gravação é ruim para clients.
Cause
O "NET_LONG_RCV_GRP_PROCESS" que está sendo rastreado acima indica que o envio de dados TCP para um SDS remoto levou mais de 1 s para ser concluído.
Esse atraso pode ocorrer devido a uma pequena janela inicial de congestionamento do TCP após a manutenção da rede e à ausência do parâmetro de pacotes OOO (fora de ordem) definido adequadamente no sistema operacional. Isso faz com que os soquetes de SDS para SDS não consigam se comunicar efetivamente, levando a várias retransmissões de TCP e redução do tamanho do segmento. Isso cria uma latência mais alta nas gravações, pois isso afetará apenas o SDS para soquetes SDS.
A latência de leitura permanece inalterada, pois os SDCs (clients) se comunicam com um único SDS por solicitação de E/S de leitura e não dependem da comunicação de SDS para SDS TCP.
Resolution
Para uma solução temporária imediata, reinicie o serviço SDS em cada nó afetado. Use o modo de manutenção ao reiniciar o processo do SDS. Um "pkill sds" é suficiente quando o nó está em manutenção.
Para evitar que o problema ocorra no futuro, faça o seguinte:
- Aplique as configurações sysctl discutidas neste artigo da KB pública:
Os nós do servidor de dados de armazenamento podem não conter parâmetros corretos de ajuste do sistema, o que pode resultar em problemas de desempenho
- Se estiver usando RHEL/CentOS 7, atualize a versão do kernel do sistema operacional nos nós do SDS para "3.10.0-1160.66.1" ou posterior
Versão afetada
PowerFlex 3.x
Correção feita na versão
RCM versão 3.6.3.2 ou posterior
IC versão 38.363.02 ou posterior