스토리지 읽기 캐싱
읽기 캐싱은 외부 디스크에서 처음 읽은 후 호스트의 사용 가능한 메모리 내에 데이터가 캐시되므로 VM의 디스크 성능이 향상됩니다. 여러 VM이 단일 기본 VM에서 복제되는 경우 디스크에서 읽는 블록 수가 크게 줄어들기 때문에 성능이 향상됩니다. Citrix Virtual Desktops 환경 MCS(컴퓨터 생성 서비스) 환경을 예로 들 수 있습니다.
데이터가 메모리에 캐시되므로 디스크에서 두 번 이상 데이터를 읽을 때마다 성능이 향상됩니다. 이 변경 사항은 I/O가 많은 상황에서 발생하는 서비스 성능 저하에서 가장 두드러집니다. 예를 들어, 다음과 같은 상황에서는
- 매우 좁은 시간 내에 상당수의 최종 사용자가 부팅하는 경우 (부트 스톰)
- 상당수의 VM이 동시에 맬웨어 검사를 실행하도록 예약된 경우 (바이러스 백신 스톰)
적절한 라이센스 유형이 있으면 읽기 캐싱이 기본적으로 활성화됩니다.
참고:
스토리지 읽기 캐싱은 XenServer 프리미엄 에디션 고객이 사용할 수 있습니다.
읽기 캐싱 활성화 및 비활성화
NFS, EXT3/EXT4, SMB 및 GFS2 SR 유형과 같은 파일 기반 SR의 경우 기본적으로 읽기 캐싱이 활성화됩니다. 읽기 캐싱은 다른 모든 SR에 대해 비활성화됩니다.
xe CLI를 사용하여 특정 SR에 대한 읽기 캐시를 비활성화하려면 다음 명령을 실행합니다.
xe sr-param-set uuid=sr-uuid other-config:o_direct=true
<!--NeedCopy-->
XenCenter를 사용하여 특정 SR에 대한 읽기 캐시를 사용하지 않도록 설정하려면 SR의 속성 대화상자로 이동합니다. 읽기 캐시 탭에서 읽기 캐시를 사용하거나 사용하지 않도록 선택할 수 있습니다.
자세한 내용은 SR 속성 변경을 참조하십시오.
제한 사항
-
읽기 캐싱은 NFS, EXT3/EXT4, SMB 및 GFS2 SR에서만 사용할 수 있습니다. 다른 SR 유형에서는 사용할 수 없습니다.
-
읽기 캐싱은 읽기 전용 VDI 및 VDI 상위에만 적용됩니다. 이러한 VDI는 ‘Fast Clone’ 또는 디스크 스냅샷에서 VM이 생성되는 곳에 존재합니다. 하나의 ‘골든’ 이미지에서 많은 VM을 복제할 때 성능이 크게 향상됩니다.
-
성능 향상은 호스트의 제어 도메인 (dom0) 에서 사용 가능한 메모리 양에 따라 달라집니다. dom0 메모리의 양을 늘리면 읽기 캐시에 더 많은 메모리를 할당할 수 있습니다. dom0 메모리를 구성하는 방법에 대한 자세한 내용은 CTX134951을 참조하십시오.
-
메모리 읽기 캐싱이 켜져 있을 때 캐시 누락으로 인해 I/O가 직렬화됩니다. 읽기 캐시를 끄면 I/O가 병렬화될 수 있기 때문에 이렇게 하면 읽기 캐시를 끄는 것보다 비용이 많이 들 수 있습니다. 캐시 실패의 영향을 줄이려면 사용 가능한 dom0 메모리 양을 늘리거나 SR에 대한 읽기 캐시를 비활성화하십시오.
IntelliCache와의 비교
IntelliCache와 메모리 기반 읽기 캐시는 어떤 측면에서 보면 상호 보완적입니다. IntelliCache는 다른 계층에 캐시할 뿐만 아니라 읽기 외에도 쓰기도 캐시합니다. IntelliCache는 네트워크에서 로컬 디스크로 읽기를 캐시합니다. 인 메모리 읽기 캐싱은 네트워크 또는 디스크에서 호스트 메모리로 읽기를 캐시합니다. 인 메모리 읽기 캐싱의 장점은 메모리가 솔리드 스테이트 디스크 (SSD) 보다 훨씬 빠르다는 것입니다. 부트 스톰 및 기타 과중한 I/O 상황에서의 성능이 향상됩니다.
읽기 캐싱과 IntelliCache를 동시에 사용하도록 설정할 수 있습니다. 이 경우 IntelliCache는 네트워크에서 로컬 디스크로 읽기를 캐시합니다. 로컬 디스크에서의 읽기는 읽기 캐시를 사용하여 메모리에 캐시됩니다.
읽기 캐시 크기 설정
XenServer의 제어 도메인(dom0)에 더 많은 메모리를 제공하여 읽기 캐시 성능을 최적화할 수 있습니다.
중요:
최적화를 위해 풀의 모든 호스트에서 읽기 캐시 크기를 개별적으로 설정합니다. 읽기 캐시 크기에 대한 이후의 모든 변경 사항도 풀의 모든 호스트에 적용해야 합니다.
XenServer 호스트에서 로컬 셸을 열고 루트로 로그온합니다.
읽기 캐시의 크기를 설정하려면 다음 명령을 실행하십시오.
/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=nnM,max:nnM
<!--NeedCopy-->
초기값과 최대값을 모두 동일한 값으로 설정합니다. 예를 들어 dom0 메모리를 20,480MiB로 설정하려면 다음을 수행하십시오.
/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=20480M,max:20480M
<!--NeedCopy-->
중요:
읽기 캐시 크기를 변경한 후 모든 호스트를 재부팅합니다.
현재 dom0 메모리 할당을 보는 방법은 무엇입니까?
현재 dom0 메모리 설정을 보려면 다음을 입력합니다.
free -m
<!--NeedCopy-->
free -m
의 출력에는 현재 dom0 메모리 설정이 표시됩니다. 여러 가지 오버헤드로 인해 이 값이 예상한 것보다 작을 수 있습니다. 아래 예제 표에는 dom0이 2.6GiB로 설정된 호스트의 출력이 나와 있습니다.
| | Total | Used | Free | Shared | Buffer/cache | Available |
|---------------------|--------|------|-------|--------|--------------|-----------|
| Mem: | 2450 | 339 | 1556 | 9 | 554 | 2019 |
| Swap: | 1023 | 0 | 1023 | | | |
<!--NeedCopy-->
사용할 수 있는 값 범위
XenServer 제어 도메인(dom0)은 64비트이므로 큰 값(예: 32,768 MiB)을 사용할 수 있습니다. 그러나 dom0 메모리를 1GiB 이하로 줄이지 않는 것이 좋습니다.
XenCenter 디스플레이 노트
전체 호스트의 메모리는 Xen 하이퍼바이저, dom0, VM 및 사용 가능한 메모리를 구성하는 것으로 간주할 수 있습니다. dom0 및 VM 메모리는 일반적으로 크기가 고정되어 있지만 Xen 하이퍼바이저는 다양한 양의 메모리를 사용합니다. 사용되는 메모리의 양은 다양한 요인에 따라 다릅니다. 이러한 요소에는 언제든지 호스트에서 실행되는 VM의 수와 해당 VM이 구성되는 방법이 포함됩니다. Xen이 사용하는 메모리 양을 제한할 수는 없습니다. 메모리 양을 제한하면 호스트에 사용 가능한 메모리가 있는 경우에도 Xen의 메모리가 부족하여 새 VM이 시작되지 않을 수 있습니다.
호스트에 할당된 메모리를 보려면 XenCenter에서 호스트를 선택한 다음 메모리 탭을 클릭합니다.
XenServer 필드에는 dom0과 Xen 메모리에 할당된 메모리의 합계가 표시됩니다. 따라서 표시되는 메모리 양은 관리자가 지정한 것보다 많을 수 있습니다. 메모리 크기는 관리자가 dom0에 대해 고정 크기를 설정한 경우에도 VM을 시작하고 중지할 때 달라질 수 있습니다.