스토리지 읽기 캐싱
읽기 캐싱은 외부 디스크에서 처음 읽은 후 데이터가 호스트의 사용 가능한 메모리에 캐시되므로 VM의 디스크 성능을 향상시킵니다. 단일 기본 VM에서 많은 VM이 복제되는 상황에서 디스크에서 읽는 블록 수를 크게 줄여 성능을 향상시킵니다. 예를 들어, Citrix Virtual Desktops 환경 Machine Creation Services™ (MCS) 환경에서 그렇습니다.
데이터가 디스크에서 두 번 이상 읽힐 때마다 메모리에 캐시되므로 성능 향상을 확인할 수 있습니다. 이러한 변화는 과도한 I/O 상황에서 발생하는 서비스 저하에서 가장 두드러집니다. 예를 들어, 다음과 같은 상황에서 그렇습니다.
- 상당수의 최종 사용자가 매우 짧은 시간 내에 부팅할 때 (부트 스톰)
- 상당수의 VM이 동시에 맬웨어 검사를 실행하도록 예약될 때 (안티바이러스 스톰).
적절한 라이선스 유형이 있는 경우 읽기 캐싱은 기본적으로 활성화됩니다.
참고:
스토리지 읽기 캐싱은 XenServer® Premium Edition 고객에게 제공됩니다.
읽기 캐싱 활성화 및 비활성화
NFS, EXT3/EXT4, SMB 및 GFS2 SR 유형과 같은 파일 기반 SR의 경우 읽기 캐싱은 기본적으로 활성화됩니다. 다른 모든 SR의 경우 읽기 캐싱은 비활성화됩니다.
NFS, EXT3/EXT4 또는 SMB SR에서 읽기 캐싱을 비활성화하도록 선택할 수 있습니다. GFS2 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는 VM이 ‘빠른 복제’ 또는 디스크 스냅샷에서 생성될 때 존재합니다. 단일 ‘골든’ 이미지에서 많은 VM을 복제할 때 가장 큰 성능 향상을 볼 수 있습니다.
-
성능 향상은 호스트의 제어 도메인(dom0)에서 사용 가능한 여유 메모리 양에 따라 달라집니다. dom0 메모리 양을 늘리면 읽기 캐시에 더 많은 메모리를 할당할 수 있습니다. dom0 메모리 구성 방법에 대한 자세한 내용은 제어 도메인에 할당된 메모리 양 변경을 참조하십시오.
-
메모리 읽기 캐싱이 켜져 있을 때 캐시 미스가 발생하면 I/O가 직렬화됩니다. 읽기 캐싱이 꺼져 있을 때는 I/O를 병렬화할 수 있기 때문에, 때로는 읽기 캐싱을 끄는 것보다 더 많은 비용이 들 수 있습니다. 캐시 미스의 영향을 줄이려면 사용 가능한 dom0 메모리 양을 늘리거나 SR에 대한 읽기 캐싱을 비활성화하십시오.
인텔리캐시™와 비교
IntelliCache와 메모리 기반 읽기 캐싱은 어떤 면에서는 상호 보완적입니다. IntelliCache는 다른 계층에서 캐싱할 뿐만 아니라 읽기 외에 쓰기도 캐싱합니다. IntelliCache는 네트워크에서 로컬 디스크로 읽기를 캐싱합니다. 인메모리 읽기 캐싱은 네트워크 또는 디스크에서 호스트 메모리로 읽기를 캐싱합니다. 인메모리 읽기 캐싱의 장점은 메모리가 솔리드 스테이트 디스크(SSD)보다 여전히 훨씬 빠르다는 것입니다. 부트 스톰 및 기타 과도한 I/O 상황에서 성능이 향상됩니다.
읽기 캐싱과 IntelliCache를 동시에 활성화할 수 있습니다. 이 경우 IntelliCache는 네트워크에서 로컬 디스크로 읽기를 캐싱합니다. 해당 로컬 디스크의 읽기는 읽기 캐싱을 통해 메모리에 캐싱됩니다.
읽기 캐시 크기 설정
XenServer의 제어 도메인(dom0)에 더 많은 메모리를 할당하여 읽기 캐시 성능을 최적화할 수 있습니다.
중요:
최적화를 위해 풀의 모든 호스트에 읽기 캐시 크기를 개별적으로 설정하십시오. 읽기 캐시 크기에 대한 후속 변경 사항도 풀의 모든 호스트에 설정해야 합니다.
XenServer 호스트에서 로컬 셸을 열고 root로 로그인합니다.
읽기 캐시 크기를 설정하려면 다음 명령을 실행하십시오.
/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,768MiB와 같은 큰 값을 사용할 수 있습니다. 그러나 dom0 메모리를 1GiB 미만으로 줄이지 않는 것을 권장합니다.
XenCenter 표시 참고 사항
전체 호스트의 메모리는 Xen® 하이퍼바이저, dom0, VM 및 여유 메모리로 구성된다고 볼 수 있습니다. dom0 및 VM 메모리는 일반적으로 고정된 크기이지만, Xen 하이퍼바이저는 가변적인 양의 메모리를 사용합니다. 사용되는 메모리 양은 다양한 요인에 따라 달라집니다. 이러한 요인에는 특정 시점에 호스트에서 실행 중인 VM의 수와 해당 VM이 구성되는 방식이 포함됩니다. Xen이 사용하는 메모리 양을 제한하는 것은 불가능합니다. 메모리 양을 제한하면 Xen의 메모리가 부족해져 호스트에 여유 메모리가 있더라도 새 VM이 시작되지 않을 수 있습니다.
호스트에 할당된 메모리를 보려면 XenCenter에서 호스트를 선택한 다음 메모리 탭을 클릭하십시오.
XenServer 필드는 dom0 및 Xen 메모리에 할당된 메모리의 합계를 표시합니다. 따라서 표시되는 메모리 양은 관리자가 지정한 것보다 높을 수 있습니다. 관리자가 dom0에 고정된 크기를 설정했더라도 VM을 시작하고 중지할 때 메모리 크기가 달라질 수 있습니다.