성능 최적화

이 페이지에서는 Google Cloud NetApp Volumes 성능을 최적화하는 방법을 자세히 설명합니다.

시작하기 전에

성능을 최적화하기 위해 볼륨을 변경하기 전에 성능 고려사항을 검토하세요.

볼륨 설정 조정

다음 볼륨 설정을 조정하여 성능을 최적화할 수 있습니다.

  • 볼륨 용량 늘리기: 프리미엄, 익스트림 또는 표준 서비스 수준 볼륨의 용량을 늘려 달성 가능한 최대 볼륨 처리량을 개선할 수 있습니다. Flex 서비스 수준 볼륨의 경우 대신 스토리지 풀 용량을 늘리세요.

  • 서비스 수준 업그레이드: Premium 서비스 수준 볼륨을 Extreme 서비스 수준으로 업그레이드하여 처리량을 개선할 수 있습니다. 서비스 수준이 다른 다른 스토리지 풀에 볼륨을 할당하는 것이 좋습니다.

볼륨 용량을 늘리고 서비스 수준을 업그레이드해도 볼륨에서 처리 중인 I/O 워크로드에 영향을 주지 않으며 볼륨 액세스에 영향을 주지 않습니다.

클라이언트 조정

클라이언트에서 다음 설정을 조정하여 성능을 개선할 수 있습니다.

  • 클라이언트 공동 배치: 지연 시간 결과는 클라이언트의 기능과 위치에 직접적인 영향을 받습니다. 최상의 결과를 얻으려면 클라이언트를 볼륨과 동일한 리전 또는 최대한 가까운 곳에 배치하세요. 각 영역의 클라이언트에서 지연 시간을 테스트하여 영역별 영향을 테스트하고 지연 시간이 가장 짧은 영역을 사용합니다.

  • Compute Engine 네트워크 대역폭 구성: Compute Engine 가상 머신의 네트워크 기능은 사용되는 인스턴스 유형에 따라 다릅니다. 일반적으로 인스턴스가 클수록 더 많은 네트워크 처리량을 사용할 수 있습니다. 적절한 네트워크 대역폭 기능이 있는 클라이언트 가상 머신을 선택하고, Google 가상 NIC (gVNIC) 네트워크 인터페이스를 선택하고, Tier_1 성능을 사용 설정하는 것이 좋습니다. 자세한 내용은 Compute Engine 문서의 네트워크 대역폭을 참고하세요.

  • 여러 TCP 세션 열기: 애플리케이션에 높은 처리량이 필요한 경우 결국 일반 NFS 및 SMB 세션의 기반이 되는 단일 전송 제어 프로토콜 (TCP) 세션이 포화될 수 있습니다. 이 경우 NFS 및 SMB 연결에서 사용하는 TCP 세션 수를 늘립니다.

    다음 탭 중 하나를 사용하여 클라이언트 유형에 따라 클라이언트를 조정합니다.

    Linux

    기존에는 NFS 클라이언트가 스토리지 엔드포인트를 공유하는 모든 NFS 마운트 파일 시스템에 단일 TCP 세션을 사용했습니다. nconnect 마운트 옵션을 사용하면 지원되는 TCP 세션 수를 최대 16개까지 늘릴 수 있습니다.

    nconnect를 최대한 활용할 수 있도록 Linux 클라이언트 유형을 조정하려면 다음 권장사항을 따르세요.

    • nconnect를 사용하여 TCP 세션 수 늘리기: TCP 세션을 추가할 때마다 대기 중인 128개 요청의 대기열이 추가되어 잠재적인 동시 실행 능력이 향상됩니다.

    • sunrpc.max_tcp_slot_table_entries 매개변수 설정: sunrpc.max_tcp_slot_table_entries는 성능을 제어하도록 수정할 수 있는 연결 수준 조정 매개변수입니다. sunrpc.max_tpc_slot_table_enteries를 요청당 또는 연결당 128로 설정하고 NetApp 볼륨에 연결되는 단일 프로젝트 내의 모든 NFS 클라이언트의 슬롯을 10,000개를 초과하지 않는 것이 좋습니다. sunrpc.max_tcp_slot_table_entries 매개변수를 설정하려면 /etc/sysctl.conf 파일에 매개변수를 추가하고 sysctl -p 명령어를 사용하여 매개변수 파일을 새로고침합니다.

    • 세션당 지원되는 최대 값을 180으로 조정: NFSv3와 달리 NFSv4.1 클라이언트는 세션에서 클라이언트와 서버 간의 관계를 정의합니다. NetApp 볼륨은 NFSv3을 사용하여 연결당 최대 128개의 대기 중인 요청을 지원하지만 NFSv4.1은 세션당 대기 중인 요청이 180개로 제한됩니다. Linux NFSv4.1 클라이언트는 기본적으로 세션당 64 max_session_slots로 설정되지만 필요에 따라 이 값을 조정할 수 있습니다. 세션당 지원되는 최대 값을 180으로 변경하는 것이 좋습니다.

      max_session_slots를 조정하려면 /etc/modprobe.d 아래에 구성 파일을 만듭니다. 인라인에 따옴표 (" ")가 표시되지 않아야 합니다. 그렇지 않으면 옵션이 적용되지 않습니다.

      $ echo "options nfs max_session_slots=180" > /etc/modprobe/d/nfsclient/conf
      $ reboot
      
      Use the systool -v -m nfs command to see the current maximum in use
      by the client. For the command to work, at least one NFSv4.1 mount
      must be in place.
      
      $ systool -v -v nfs
      {
      Module = "nfs"
      
      Parameters:
      
      Max_session_slots = "63" <-
      
      }
      

    다음 NFS nconnect 비교 그래프는 nconnect 구성을 사용하면 NFS 워크로드에 미칠 수 있는 영향을 보여줍니다. 이 정보는 다음 설정으로 Fio를 사용하여 캡처되었습니다.

    • 100% 읽기 워크로드

    • 단일 볼륨에 대한 8KiB 블록 크기

    • Red Hat 9 OS를 사용하는 n2-standard-32 가상 머신

    • 6TiB 작업 세트

    nconnect 값을 16으로 사용하면 사용 설정하지 않은 경우보다 성능이 5배 향상되었습니다.

    8KiB 블록 크기의 단일 Red Hat 9 가상 머신을 사용한 NFS nconnect 비교

    Windows

    Windows 기반 클라이언트의 경우 클라이언트는 수신 측 확장 (RSS)과 함께 SMB 멀티채널을 사용하여 여러 TCP 연결을 열 수 있습니다. 이 구성을 사용하려면 가상 머신에 RSS를 지원하는 할당된 네트워크 어댑터가 있어야 합니다. RSS를 4 또는 8 값으로 설정하는 것이 좋지만 1보다 큰 값을 사용하면 처리량이 증가합니다.

    다음 그래프는 RSS 구성을 사용하면 SMB 워크로드에 미칠 수 있는 차이를 보여줍니다. 이 정보는 다음 설정으로 Fio를 사용하여 캡처되었습니다.

    • 100% 읽기 워크로드

    • 단일 볼륨에 대한 8KiB 블록 크기

    • Windows 2022 OS를 실행하는 단일 n2-standard-32 가상 머신

    • 6TiB 작업 세트

    테스트 실행 간에 SMB 클라이언트 RSS 옵션만 변경하여 8개의 작업을 실행했습니다. RSS 값을 4, 8, 16으로 사용하면 값 1을 사용할 때보다 성능이 두 배 향상되었습니다. 각 RSS 인스턴스는 numjobs 매개변수가 8인 상태로 9번 실행되었습니다. 최대 처리량에 도달할 때까지 실행할 때마다 iodepth 매개변수가 5씩 증가했습니다.

    블록 크기가 8KiB인 단일 Windows 2022 VM의 SMB RSS 비교

다음 단계

스토리지 풀에 대해 알아보세요.