4.4. 실시간 가상 머신의 캐시 보호 설정
캐시 라인을 제거하면 실시간 VM(가상 머신)에서 성능 문제가 발생할 수 있습니다. 선택적으로 이 문제를 방지하려면 사용자 인터페이스 리소스 제어(resctrlfs') 기능을 사용하여 캐시 및 캐시 파티션을 관리합니다.
- 호스트 시스템의 주 메모리 캐시를 파티션으로 분할
- 각 파티션에 별도의 작업 할당
- 실시간 애플리케이션을 실행하는 vCPU를 하나의 캐시 파티션에 할당
- 하우스키핑 워크로드를 실행하는 vCPU 및 호스트 CPU를 다른 캐시 파티션에 할당
사전 요구 사항
- 호스트에 실시간 가상 머신을 생성했습니다. 자세한 내용은 RHEL 실시간 게스트 운영 체제 설치를 참조하십시오.
호스트에서 L2 또는 L3 캐시 파티셔닝을 지원하는 Intel 프로세서를 사용하고 있습니다. 이러한 경우를 확인하려면 다음을 수행하십시오.
intel-cmt-cat유틸리티를 설치합니다.# dnf install intel-cmt-catpqos유틸리티를 사용하여 코어 캐시 세부 정보를 표시합니다.# pqos -d [...] Allocation Cache Allocation Technology (CAT) L3 CAT이 출력은 CPU가 L3 캐시 파티셔닝을 지원하는 것을 나타냅니다.
프로세스
다음 단계에서는 다음과 같은 NUMA vCPU 고정 할당이 CPU에 있다고 가정합니다.
<cputune>
<vcpupin vcpu='0' cpuset='16'/>
<vcpupin vcpu='1' cpuset='17'/>
<vcpupin vcpu='2' cpuset='18'/>
<vcpupin vcpu='3' cpuset='19'/>
resctrl파일 시스템을 마운트합니다. 이렇게 하면 프로세서의 리소스 제어 기능을 사용할 수 있습니다.# mount -t resctrl resctrl /sys/fs/resctrl시스템이
L2또는 L3 캐시 파티션을 지원하는지 여부에 따라 L2 또는L3이라는 하위 디렉터리는/sys/fs/resctrl/info디렉터리에 마운트됩니다. 다음 단계에서는 시스템이 L3 캐시 파티셔닝을 지원하는 것으로 가정합니다.캐시 디렉터리로 이동하고 해당 콘텐츠를 나열합니다.
# cd /sys/fs/resctrl/info/L3/; ls bit_usage cbm_mask min_cbm_bits num_closids shareable_bits sparse_maskscbm_mask파일의 값을 확인합니다.# cat cbm_mask ffff이 값은 16진수 코드의 캐시 비트마스크를 나타냅니다.
ffff는 모든 16비트의 캐시를 워크로드에서 사용할 수 있음을 의미합니다."shareable_bits" 파일의 값을 확인합니다.
# cat shareable_bits 0이 값은 I/O와 같은 다른 실행 중인 프로세스에서 공유하는 L3 캐시 파티션을 나타내며 전용 캐시 파티션에서는 사용해서는 안 됩니다.
0은 모든 L3 캐시 파티션을 사용할 수 있음을 의미합니다.스키마타파일을 보고 글로벌 캐시 할당을 확인합니다.# cat /sys/fs/resctrl/schemata L3:0=ffff;2=ffff;4=ffff;6=ffff;8=ffff;10=ffff;12=ffff;14=ffff이 출력은 L3 캐시 파티션, CPU 소켓 0, 2, 4, 6, 8, 10, 12 및 14의 경우 기본 제어 그룹에 완전히 할당되었음을 나타냅니다. 이 예에서 CPU 소켓 16 - 19는 vCPU 0-3에 고정되어 있습니다.
실시간 애플리케이션에 대해 설정할 캐시 배포를 결정합니다. 예를 들어 실시간 애플리케이션 및 하우스키핑 애플리케이션 모두에 대해 8MB를 균등하게 배포하는 경우 다음을 수행합니다.
-
실시간 애플리케이션의 캐시 비트마스크는
ff00입니다. -
하우스키핑 애플리케이션의 캐시 비트마스크는
00ff입니다.
-
실시간 애플리케이션의 캐시 비트마스크는
하우스키핑 프로세스에 필요한 캐시 할당으로 기본
schemata파일을 조정합니다. 예를 들어 CPU 소켓 8에 8MB를 할당하려면 다음을 수행합니다.# echo "L3:0=ffff;2=ffff;4=ffff;6=ffff;8=00ff;10=ffff;12=ffff;14=ffff" > /sys/fs/resctrl/schemata실시간 프로세스에 대한 특정 제어 그룹(예:
part1)을 생성합니다.# mkdir /sys/fs/resctrl/part1part1제어 그룹에 대한schemata파일을 만들고 하우스키핑 캐시 할당과 충돌하지 않는 캐시 할당을 사용하도록 설정합니다.# echo "L3:0=ffff;2=ffff;4=ffff;6=ffff;8=ff00;10=ffff;12=ffff;14=ffff" > /sys/fs/resctrl/part1/schemata이 설정을 통해 L3 캐시 8은 실시간 프로세스에 캐시 할당의 절반을 사용하고 나머지 절반은 하우스키핑 프로세스에 사용합니다. 다른 모든 L3 캐시는 실시간 프로세스와 하우스키핑에서 자유롭게 사용할 수 있습니다.
실시간 vCPU(이 경우 17, 18 및 19)에 고정된 CPU를 이 제어 그룹에 할당합니다.
# echo 17,18,19 > part1/cpus_list
검증
이전에 VM의 대기 시간을 테스트한 경우
cyclictest유틸리티를 다시 실행합니다. 자세한 내용은 실시간 가상화 시스템 테스트를 참조하십시오.최대 대기 시간이 이전보다 작으면 캐시 보호를 올바르게 설정했습니다.