iSCSI와 AoE 모두 낮은 성능


9

우리는 공진 속도 저장 장치를 찾고 있습니다. 예산이 적기 때문에 소프트웨어 iSCSI 또는 AoE 대상을 사용하기로 결정했습니다. 생산 인프라를 변경하기 전에 최상의 기술을 선택하기 위해 몇 가지 테스트를 수행하고 있습니다.

테스트를 위해 다음을 사용합니다.

  • 후지쯔 지멘스 RX200 S4 대상
  • 개시 자로 후지쯔 지멘스 RX200 S4
  • NetGear 관리 1GBit 스위치
  • 온보드 NIC (Broadcom w / TOE), EdiMax NIC, Broadcom NIC w / TOE-모두 1GBit
  • 대상 서버가 6 개의 2TB WD Blue SATA 드라이브와 함께 QLogic 컨트롤러를 사용하고 있습니다.
  • 대상 및 이니시에이터 운영 체제는 모든 업데이트가 포함 된 Ubuntu 16.04 LTS입니다. 스위치는 스토리지 전용입니다. 우리는 채권과 다중 경로를 테스트합니다.

우리의 문제는 읽기 속도가 느리다는 것입니다. 테스트 dd에는 40-100GB 파일을 사용 합니다.

  • 대상 서버에서 로컬 읽기 및 쓰기가 300MB / s를 초과합니다.
  • iSCSI 또는 AoE로 서버에 쓰는 것은 200MB / s 이상이며 이는 우리를 만족시킵니다.
  • 서버에서 읽기는 항상 95-99MB / s입니다.

우리는 ietd, aoetools, LIO를 시도했습니다. 우리는 2 개의 NIC 본드를 사용했습니다 : balance-rr과 LACP, rr과의 다중 경로. 일반 및 점보 프레임을 사용했습니다. 마지막으로 대상과 호스트간에 직접 이더넷 연결을 수행했습니다 (스위치 없음).

모든 테스트는 동일한 결과를 줄입니다 (물론 TOE없이 일반 NIC를 사용하고 iSCSI는 20-30 % 더 나쁜 결과를 나타냄).

iperf를 사용한 테스트 네트워크는 약 200MB / s (2GBit)의 전송을 보여주었습니다. bmon을 사용하여 대상에서 NIC 사용량을 관찰하면 두 장치의 사용량이 동일하게 표시됩니다 (각각 약 50MB / s, 약 100MB / s).

운이 없었기 때문에 우리는 세 번째 NIC (물론 양쪽)를 사용하기로 결정했습니다. 결과는 이상했다 :

  • NIC 2 개-각 50MB / s
  • NIC 3 개-각 33MB / s

1GBit / s보다 높은 출력을 비활성화하는 대상 소프트웨어에 제한이 있습니까?

우리는 무엇을 잘못합니까?


5
요즘 10GbE는 충분히 싸다. 더 많은 대역폭이 필요한 경우 (권장하지 않을 수 있음) 이것이 권장되는 경로입니다.
ewwhite

1
10GbE는 ATAoE를 지원하지 않으며 매우 이더넷 프레임 비효율적 인 프로토콜입니다. 특히 점보 프레임의 경우!
BaronSamedi1958

1
iSCSI를 언급하고있었습니다. ATAoE가 죽었으므로 이것을 사용해서는 안됩니다.
ewwhite

답변:


11

iSCSI로 연결된 스토리지에서 최대 성능을 발휘하려면 점보 프레임 및 MPIO (LACP 아님)를 사용해야합니다. 가능하면 RDMA / iSER를 권장합니다.

AOE (ATA over Ethernet)가 오래되어 똥입니다. 우리는 이미 몇 년 전에 Coraid를 제거했습니다. 우리는 이미 iSCSI 대상으로 StarWind https://www.starwindsoftware.com/ 을 사용 하고 있으며 StarWind는 우리가 할 수있는 모든 스토리지로 Coraid를 마이그레이션하도록 요청했습니다.

지금 우리는 StarWind가 제공하는 iSCSI와 Linux의 초 기자로서 Windows, ESX 및 SCST http://scst.sourceforge.net/ 을 사용하는 iSCSI에 매우 능숙 합니다. RDMA / iSER를 사용하면 최대 10Gbit까지 가능하며 지금까지 매우 만족합니다.


6

이더넷 링크 집계 작동 방식에 대한 예상이 올바르지 않습니다.

balance-rr 이외의 모든 집계 방법 (즉, 모드가 0 보다 큰 모든 방법)은 더 큰 단일 연결 처리량을 제공 하지 않습니다 . 대신 영향을받는 호스트 간에 여러 연결 이 설정 될 때 사용 가능한 총 대역폭이 증가 합니다. 다시 말해 LAG / LACP는이 단일 연결 시나리오에 대한 이점을 제공하지 않습니다.

단일 인터페이스에서 일반적으로 가질 수있는 것보다 더 큰 단일 세션 처리량을 제공 할 수있는 유일한 집계 방법 은 라운드 로빈 방식으로 패킷을 배포하는 balance-rr 입니다. 당신은 설정했다 균형-RR을 기자와 대상입니다. 그러나 문제는 이것이 스위치에 크게 의존한다는 것입니다.

어쨌든 대상과 개시자를 모두 balance-rr로 설정하면 두 시스템을 직접 연결하면 성능이 향상됩니다. 그렇지 않은 경우, iperfbalance-rr을 사용하여 두 기계를 직접 연결하여 게시 할 수 있습니까 (스위치 없음)? 또한 dd벤치마킹에 사용한 정확한 명령을 게시하십시오 .


2

참고 : 여기서는 iSCSI에 대해서만 이야기하고 있습니다. 나는 AoE에 대해 읽은 것 이상의 경험이 없으며 어쨌든 새로운 인프라에서 구현하지 않을 것입니다 (거의 없어졌습니다).

특정 지점 간 프로토콜 이외의 다른 것에는 balance-rr을 사용하지 마십시오. 거의 모든 종류의 실제로드에서 끔찍한 성능을 발휘하며 많은 네트워크 문제 (예 : 많은 지터)가 발생합니다. 스위치와 함께 사용하지 마십시오.

이니시에이터 측에서 본딩없이 MPIO를 사용하여로드 밸런싱 및 내결함성을 달성하십시오. 모든 트래픽을 단일 경로로 전송하여 경로가 "혼합"되지 않도록하려면 개별 경로 (개별의 경우 대상과 초 기자 사이의 기가비트 NIC)를 별도의 서브넷에 배치하십시오.

LACP와 대상 측 접합 자유롭게 경로를 따라 (예를 들어 대상 포트 구성으로, 네 개의 NIC 총 두 개의 경로에 대한 결합에서와 같이). 이것은 훌륭하게 작동하며 동일한 경로를 사용하는 여러 초 기자 연결의 균형을 맞출 수 있습니다. 또한 가능하면 점보 프레임과 iSER를 사용하십시오. 대상에서 LACP를 사용하면 여러 NIC간에 각 경로에 대한 연결의 균형이 유지됩니다.

이니시에이터에서 LACP를 사용하는 것은 동시 사용으로 많은 대상 포털 연결을 만드는 경우에만 효과적입니다 (일부 작업에는 일반적이지 않음). 이니시에이터에서 경로당 LACP를 효과적으로 구현하더라도 각 상자에 4 개의 추가 패브릭을 사용하는 케이블 링 악몽이됩니다. 단일 이니시에이터에 ~ 2Gib / s 이상의 처리량이 필요한 경우 10GiB / s 이더넷을 고려하십시오.


1

AoE에 대한 대부분의 응답은 완전히 부정확하고 반 상식적이며 AoE 지식과 경험이 부족함을 나타냅니다. 우선, 그것은 소멸되지 않습니다. CORAID는 AoE의 공급 업체이며 CORAID 상표를 유지하면서“SouthSuite”로 다시 시작했습니다. 그들은 같은 개발자입니다. 그들은 새로운 제품을 만들고 있으며 오래된 제품을 대부분 지원합니다. 공개 기술 메일 링리스트가 명확하게 보여 주듯이 AoE 개발도 추진하고 있습니다. 웹 사이트를 확인하십시오. 모든 것이 최신 상태이며 기록 페이지에서 전체 이야기를 알려줍니다.

누군가 AoE는 점보 프레임의 이점을 얻지 못하고 평평하지 않다고 말했다. 'vbladed'버전 13이 릴리스 된 후에 지원되었습니다. 새 프레임 크기를 지원하기 위해 MTU를 조정해야하지만 그렇지 않으면 훌륭하게 작동합니다.

iSCSI는 OSI 모델의 계층 5에서 실행됩니다. 일반적인 전송은 TCP입니다. 그러면 TCP의 체크섬으로 인해 오류가 수정되고 계층 3에서 IP를 통해 트래픽을 라우팅 할 수 있습니다. 그것이 iSCSI의 장점이 멈추는 곳입니다. 실제로 실제 성능을 FCP, AoE 또는 FCoE와 비교하면 상당히 끔찍합니다. 공포 쇼를 위해 Google의 "iscsi 성능 비교"에 초대합니다.

읽기 속도 문제는 네트워크 구성 오류로 인한 것일 수 있으며 흐름 제어를 끄고 충분히 큰 소켓 버퍼를 사용해야합니다. 또한 기본 파일 시스템이 읽기 프리 페치에 맞게 조정되었는지 여부에 대해서는 언급하지 않았습니다. 시나리오에 따라 많은 도움이 될 수 있지만 캐싱을 비활성화해야하는 특정 데이터베이스에서는 사용하지 않도록주의하십시오.

라운드 로빈 시나리오에서도 802.3ad 집계는 단일 스트림 처리량을 크게 늘리지 않습니다. 또한 네트워크 구성을 복잡하게 만들고 PDU 간격이 일치하지 않거나 Cisco VPC 링크를 잘못 구성하여 활성-활성 상태를 지원함으로써 발을 잡을 수있는 몇 가지 새로운 기회를 제공합니다. LACP를 AoE와 함께 사용하지 말고 자체 다중 경로 지정 및 다중화를 처리하십시오. 최신 버전의 AoE는이를 자동으로 처리하므로 대부분의 경우 FCP보다 더 우아하게 처리합니다. 추가 이더넷 포트는 더 많은 대역폭과 복원력을 제공합니다. 호스트 및 이니시에이터 이더넷 포트를 여러 스위치에 분산 시키면 더 많은 중복성을 제공 할 수 있습니다. 본딩 모드를 구성 할 필요가 없습니다. 또한 AoE에 사용하는 것과 동일한 인터페이스에서 IP를 실행하지 마십시오.

요컨대, AoE naysayers를 듣지 말고 경험이 많지 않고 유행 적 인 뇌파를 타고 있다고 들었습니다. 무리를 피하십시오. 수동 튜닝 프리 페치를 사용하여 백업 저장소를 구성하면 읽기 처리량이 증가하는 것을 볼 수 있습니다. 집계 프로토콜 사용을 중단하고 iSCSI에서 비명을 지르십시오. 마지막으로 'dd'사용을 중단하십시오. 훌륭한 테스트가 아니며 캐싱 효과가 좋지 않습니다. 'fio', 'iozone'또는 'dbench'와 같은 실제 벤치 마크 도구를 사용하십시오. 그것들은 훨씬 더 안정적인 결과를 제공합니다.


1

LACP가 여러 연결을위한 것임을 알고 있습니다. 테스트는 절망의 행위였습니다 :)

모든 테스트는 balance-rr과 2 개의 NIC로 수행되었습니다.

iSCSI 대상에 쓰기 :
dd if = / dev / zero of = / mnt / zero.bin bs = 1M count = 2000
2000 + 0 przeczytanych 레코드
-2000 + 0 zapisanych 레코드-2097152000
바이트 ( 2,1GB, 2,0GiB ) 복사 , 10,1093 s, 207 MB / s

iSCSI 대상에서 읽기 :
dd if = / mnt / zero.bin of = / dev / null bs = 1M
2000 + 0 przeczytanych 레코드
-2000 + 0 zapisanych 레코드-2097152000
바이트 (2,1 GB , 2,0 GiB) 복사, 16,1684 초, 130MB / s

네트워크 속도 :
iperf -c 172.16.10.80
------------------------ ------------------------------------
172.16.10.80에 연결하는 클라이언트, TCP 포트 5001
TCP 창 크기 : 325KB (기본값)
--------------------------------------------- ---------------
[3] 172.16.10.80 포트 5001에 연결된 로컬 172.16.10.70 포트 37024
[ID] 간격 전송 대역폭
[3] 0.0-10.0 초 2.30GB 1.98Gbits / sec

iperf 및 점보 프레임을 사용한 테스트에서도 동일한 결과가 나타납니다. hdparm -a 2048 / dev / dm-1

이니시에이터에서 실행하여 약간의 읽기 속도를 얻었습니다. 이전에는 256이고 읽기 속도는 96MB / s였습니다. 내 목표는 약 200MB / s의 읽기 속도를 달성하는 것입니다. 편집 : 1. 우리는 LACP를 사용하지 않습니다-한 번만 테스트했습니다. 2. balance-rr 및 MPIO를 사용한 테스트는 정확히 동일한 결과를 제공합니다. 다중 경로 지정은 다른 서브넷의 NIC로 테스트되었습니다. 3. NIC를 더 추가해도 읽기 속도는 증가하지 않지만 각 NIC의 사용률은 감소합니다.








4. 문제는 더 빨리 읽을 수없는 몇 가지 제한 사항 (드라이버, 모듈?)이라고 생각합니다. 그러나 그것이 목표 또는 개시 자 측인지 확실하지 않습니다.


편집 2 : 추가 테스트를 수행했습니다. 네트워킹 하드웨어 문제를 제거하기 위해 대상 및 이니시에이터와 동일한 호스트를 구성했습니다. 나는 충격을 받았다 : 정확히 같은 독서 속도! 130MB / 초! 쓰기는 227MB / s입니다.


iSCSI를 사용할 때 LACP에서 가져 오려면 세션 당 여러 개의 연결을 활성화해야합니다. mc / s 없음 = 성능 향상 없음. scst.sourceforge.net/mc_s.htmlstarwindsoftware.com/blog/… 가 도움이 될 수 있습니다.
BaronSamedi1958

-2

모든 버퍼가 올바르게 설정되었는지, 네트워크 버퍼에 충분한 램을 할당했는지 확인하십시오. 또한 본딩을 사용하지 마십시오. 2 개의 iscsi 채널을 사용하고 이니시에이터에서 다중 경로를 지정할 수 있습니다. 경로의 선반 및 lun ID를 통한 이니시에이터 다중 경로를 ATAoE와 동일합니다.


확인 제안 및 / 또는 구성 변경이 있습니까? 완전한 답변을 얻지 못하더라도 올바른 방향으로
asker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.