PowerFlex 쓰기 성능 문제
Summary: 네트워크 유지 보수 수행 후 특정 SDS의 쓰기 성능이 저하되었습니다.
Symptoms
시나리오
- 이 문제는 TOR(Top of Rack 스위치)의 네트워크 유지 관리(일반적으로 스위치 재부팅)가 수행된 후에 나타납니다.
- SDS 노드가 데이터 네트워크에 LACP 본드를 사용하고 있습니다.
- 유지 보수가 수행된 스위치를 사용하는 SDS 노드만 영향을 받습니다.
- 쓰기 성능은 특정 스토리지 풀/PD에 대해 최대 수백 밀리초가 될 수 있습니다.
- 동일한 SDS 집합의 읽기 성능이 정상입니다.
- diag_counters.txt의 "NET_LONG_RCV_GRP_PROCESS"는 값이 빠르게 상승하는 반면 마지막으로 증가한 시간은 낮게 유지됨을 나타냅니다.
예:
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
이 예에서 세 번째 열의 값은 높습니다(실시간으로 시청하는 경우 증가). 다섯 번째 열은 SDS의 상당 부분에 대해 1초 미만인 마지막으로 발생한 시간을 보여줍니다.
정상 PowerFlex 시스템에서는 마지막으로 발생한 시간이 시간이 지남에 따라 증가하므로 세 번째 열은 계산되지 않고 다섯 번째 열은 계산됩니다.
카운터를 실시간으로 보려면 다음 명령을 실행할 수 있습니다.
영향을 받는 보호 도메인의 SDS에 대한 변수를 #Set. 여기에 적절한 PD 이름을 입력합니다.
pd=<PD_NAME>
보호 도메인의 SDS 수에 대한 변수를 #Set. 이 옵션을 그대로 실행합니다.
num=`scli --query_protection_domain --protection_domain_name $pd |grep Protection |awk '{print $16}'`
마지막 명령이 작동할 수 있도록 #login.
scli --login --username admin
각 SDS의 "query_diag_counters" 명령에서 올바른 카운터를 #Watch.
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"
정상 시스템에서는 시간이 지남에 따라 다섯 번째 열이 정기적으로 계산되고 세 번째 열이 정적일 것으로 예상합니다. 다섯 번째 열 시간이 낮게 유지되고 세 번째 열이 카운트업되는 경우 이는 문제의 증상입니다.
영향
클라이언트의 쓰기 성능이 좋지 않습니다.
Cause
위에서 추적되는 "NET_LONG_RCV_GRP_PROCESS"는 TCP 데이터를 원격 SDS로 전송하는 데 1초 이상 걸렸음을 나타냅니다.
이러한 지연은 네트워크 유지 보수 후 초기 TCP 정체 기간이 짧고 운영 체제에서 OOO(순서가 잘못된) 패킷 매개변수가 적절하게 설정되지 않은 경우 발생할 수 있습니다. 이로 인해 SDS-SDS 소켓이 효과적으로 통신할 수 없게 되어 TCP 재전송이 여러 번 발생하고 세그먼트 크기가 줄어듭니다. 이 경우 SDS-SDS 소켓에만 영향을 미치므로 쓰기 레이턴시가 길어집니다.
SDC(클라이언트)는 읽기 입출력 요청당 단일 SDS와 통신하고 SDS-SDS TCP 통신에 의존하지 않으므로 읽기 레이턴시는 영향을 받지 않습니다.
Resolution
즉시 해결하려면 영향을 받는 각 노드에서 SDS 서비스를 재시작하십시오. SDS 프로세스를 재시작할 때 유지 보수 모드를 사용하십시오. 노드가 유지 보수 중이면 "pkill sds"로 충분합니다.
나중에 문제가 발생하지 않도록 하려면 다음을 수행합니다.
- 이 공용 KB 문서에 설명된 sysctl 설정을 적용합니다.
스토리지 데이터 서버 노드에 올바른 시스템 튜닝 매개변수가 포함되어 있지 않아 성능 문제가 발생할 수 있음
- RHEL/CentOS 7을 사용하는 경우 SDS 노드의 OS 커널 버전을 "3.10.0-1160.66.1" 이상으로 업데이트합니다.
영향을 받는 버전
PowerFlex 3.x
수정된 버전
RCM 버전 3.6.3.2 이상
IC 버전 38.363.02 이상