3장. PerformanceProfile [performance.openshift.io/v2]
- 설명
- PerformanceProfile은 performanceprofiles API의 스키마입니다.
- 유형
-
object
3.1. 사양
속성 | 유형 | 설명 |
---|---|---|
|
| APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 표준 오브젝트의 메타데이터입니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| PerformanceProfileSpec은 원하는 PerformanceProfile 상태를 정의합니다. |
|
| PerformanceProfileStatus는 PerformanceProfile의 관찰 상태를 정의합니다. |
3.1.1. .spec
- 설명
- PerformanceProfileSpec은 원하는 PerformanceProfile 상태를 정의합니다.
- 유형
-
object
- 필수 항목
-
cpu
-
nodeSelector
-
속성 | 유형 | 설명 |
---|---|---|
|
| 추가 커널 인수입니다. |
|
| CPU는 CPU 관련 매개변수 세트를 정의합니다. |
|
| globallyDisableIrqLoadBalancing은 Isolated CPU 세트에 대해 IRQ 로드 밸런싱이 비활성화됩니다. 옵션을 "true"로 설정하면 Isolated CPU 세트에 대한 IRQs 로드 밸런싱이 비활성화됩니다. 옵션을 "false"로 설정하면 모든 CPU에서 IRQ를 조정할 수 있지만 irq-load-balancing.crio.io/cpu-quota.crio.io 주석을 사용하는 경우 Pod CPU별로 IRQ를 비활성화할 수 있습니다. 기본값은 "false"입니다. |
|
| HardwareTuning은 isolated 및 reserved cpus의 CPU 빈도 집합을 정의합니다. |
|
| hugepages는 대규모 페이지 관련 매개변수 세트를 정의합니다. 동시에 여러 크기 값으로 대규모 페이지를 설정할 수 있습니다. 예를 들어 hugepages는 1G 및 2M로 설정할 수 있으며 두 값은 Performance Profile Controller에 의해 노드에 설정됩니다. hugepages 기본 크기를 1G로 설정하면 노드에서 2M 관련 폴더가 모두 제거되고 노드 아래에 2M hugepages를 구성할 수 없습니다. |
|
| MachineConfigLabel은 Operator가 생성하는 MachineConfigs에 추가할 레이블을 정의합니다. 이 성능 프로필을 대상으로 하는 MachineConfigPool의 MachineConfigSelector에서 사용해야 합니다. 기본값은 "machineconfiguration.openshift.io/role=<same role as in NodeSelector label key>"입니다. |
|
| machineConfigPoolSelector는 Operator에서 생성한 KubeletConfig와 같은 리소스의 MachineConfigPoolSelector에서 사용할 MachineConfigPool 레이블을 정의합니다. 기본값은 "machineconfiguration.openshift.io/role=<same role as in NodeSelector label key>"입니다. |
|
| net은 네트워크 관련 기능 세트를 정의합니다. |
|
| nodeSelector는 Operator에서 생성한 Tuned와 같은 리소스의 NodeSelectors에서 사용할 Node 레이블을 정의합니다. 대부분의 경우 이 성능 프로필을 대상으로 하는 MachineConfigPool의 NodeSelector에 있는 노드 레이블과 일치하지 않아도 됩니다. machineConfigLabels 또는 machineConfigPoolSelector가 설정되지 않은 경우 이전에 언급된 필드의 기본값을 계산하기 위해 특정 NodeSelector 형식 <domain>/<role>: ""이 필요합니다. |
|
| NUMA는 토폴로지 인식 기능과 관련된 옵션을 정의합니다. |
|
| RealTimeKernel은 실시간 커널 관련 매개변수 세트를 정의합니다. RT 커널은 설정되지 않은 경우 설치되지 않습니다. |
|
| WorkloadHints는 다양한 유형의 워크로드에 대한 힌트를 정의합니다. 노드 상단에 적용해야 하는 정확한 tuned 및 커널 인수 세트를 정의할 수 있습니다. |
3.1.2. .spec.cpu
- 설명
- CPU는 CPU 관련 매개변수 세트를 정의합니다.
- 유형
-
object
- 필수 항목
-
분리됨
-
예약됨
-
속성 | 유형 | 설명 |
---|---|---|
|
| BalanceIsolated는 Isolated CPU 세트가 로드 밸런싱 작업 로드에 적합한지 여부를 전환합니다. 이 옵션을 "false"로 설정하면 격리 CPU 세트가 정적이므로 워크로드가 여러 CPU에서 작동하려면 각 스레드를 특정 cpu에 명시적으로 할당해야 합니다. 이를 "true"로 설정하면 CPU 간에 워크로드의 균형을 조정할 수 있습니다. 이를 "false"로 설정하면 보장된 워크로드에 대해 가장 예측 가능한 성능이 제공되지만 cpu 부하 분산의 복잡성이 애플리케이션에 오프로드됩니다. 기본값은 "true"입니다. |
|
| isolated는 애플리케이션 스레드에 가능한 가장 많은 실행 시간을 제공하는 데 사용할 CPU 세트를 정의합니다. 즉 CPU에서 가능한 많은 불필요한 작업을 제거하는 것을 의미합니다. CPU 관리자가 예약된 CPU를 제외하고 워크로드를 실행할 CPU를 선택할 수 있다는 점에 유의해야 합니다. 워크로드를 격리된 CPU에서 실행하기 위해 1. 예약된 CPU와 분리된 CPU의 통합에는 모든 온라인 CPU 2가 포함되어야 합니다. 분리된 CPU 필드는 예약된 CPU 필드에 보완적이어야 합니다. |
|
| 오프라인에서는 사용되지 않고 오프라인으로 설정할 CPU 세트를 정의합니다. |
|
| reserved는 kubelet에서 시작한 컨테이너 워크로드에 사용되지 않는 CPU 세트를 정의합니다. |
|
| shared는 해당 워크로드에서 이미 사용 중인 격리된 전용 리소스와 함께 독점이 아닌 추가 cpus가 필요한 보장된 워크로드 간에 공유할 CPU 세트를 정의합니다. |
3.1.3. .spec.hardwareTuning
- 설명
- HardwareTuning은 isolated 및 reserved cpus의 CPU 빈도 집합을 정의합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| IsolatedCpuFreq는 격리된 CPU에 설정할 최소 빈도를 정의합니다. |
|
| ReservedCpuFreq는 예약된 CPU에서 설정할 최대 빈도를 정의합니다. |
3.1.4. .spec.hugepages
- 설명
- hugepages는 대규모 페이지 관련 매개변수 세트를 정의합니다. 동시에 여러 크기 값으로 대규모 페이지를 설정할 수 있습니다. 예를 들어 hugepages는 1G 및 2M로 설정할 수 있으며 두 값은 Performance Profile Controller에 의해 노드에 설정됩니다. hugepages 기본 크기를 1G로 설정하면 노드에서 2M 관련 폴더가 모두 제거되고 노드 아래에 2M hugepages를 구성할 수 없습니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| DefaultHugePagesSize는 커널 부팅 매개변수에서 기본적으로 대규모 페이지 크기를 정의합니다. |
|
| 페이지는 부팅 시 할당할 대규모 페이지를 정의합니다. |
|
| hugepage는 특정 크기의 할당된 대규모 페이지 수를 정의합니다. |
3.1.5. .spec.hugepages.pages
- 설명
- 페이지는 부팅 시 할당할 대규모 페이지를 정의합니다.
- 유형
-
array
3.1.6. .spec.hugepages.pages[]
- 설명
- hugepage는 특정 크기의 할당된 대규모 페이지 수를 정의합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| count는 대규모 페이지 수를 정의하고 'hugepages' 커널 부팅 매개변수에 매핑됩니다. |
|
| node는 hugepages가 할당될 NUMA 노드를 정의합니다. 지정하지 않으면 NUMA 노드 간에 페이지가 동일하게 할당됩니다. |
|
| size는 대규모 페이지 크기를 정의하고 'hugepagesz' 커널 부팅 매개변수에 매핑됩니다. |
3.1.7. .spec.net
- 설명
- net은 네트워크 관련 기능 세트를 정의합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 장치에는 CPU.Reserved와 동일한 netqueue 수로 설정할 네트워크 장치 표현 목록이 포함되어 있습니다. 장치를 지정하지 않으면 기본값은 모든 장치입니다. |
|
| 장치는 장치 이름, 벤더 ID, 모델 ID, PCI 경로 및 MAC 주소 등 다양한 옵션으로 네트워크 장치를 나타내는 방법을 정의합니다. |
|
| userLevelNetworking when enabled - 모두 또는 지정된 네트워크 장치 대기열 크기를 예약된 CPU 양으로 설정합니다. 기본값은 "false"입니다. |
3.1.8. .spec.net.devices
- 설명
- 장치에는 CPU.Reserved와 동일한 netqueue 수로 설정할 네트워크 장치 표현 목록이 포함되어 있습니다. 장치를 지정하지 않으면 기본값은 모든 장치입니다.
- 유형
-
array
3.1.9. .spec.net.devices[]
- 설명
- 장치는 장치 이름, 벤더 ID, 모델 ID, PCI 경로 및 MAC 주소 등 다양한 옵션으로 네트워크 장치를 나타내는 방법을 정의합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 네트워크 장치 ID(모델)는 16비트 16비트 16진수로 대체됩니다. |
|
| 일치시킬 네트워크 장치 이름입니다. 양수 또는 음수인 쉘 스타일 와일드카드 구문을 사용합니다. |
|
| 네트워크 장치 벤더 ID는 16비트 Hexmadecimal 번호로 대체됩니다. |
3.1.10. .spec.numa
- 설명
- NUMA는 토폴로지 인식 기능과 관련된 옵션을 정의합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| TopologyManager가 활성화된 경우 적용되는 정책의 기본값은 "best-effort"입니다. |
3.1.11. .spec.realTimeKernel
- 설명
- RealTimeKernel은 실시간 커널 관련 매개변수 세트를 정의합니다. RT 커널은 설정되지 않은 경우 설치되지 않습니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| enabled는 실시간 커널 패키지를 설치해야 하는지 여부를 정의합니다. 기본값은 "false"입니다. |
3.1.12. .spec.workloadHints
- 설명
- WorkloadHints는 다양한 유형의 워크로드에 대한 힌트를 정의합니다. 노드 상단에 적용해야 하는 정확한 tuned 및 커널 인수 세트를 정의할 수 있습니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| HighPowerConsumption은 노드를 높은 전력 소비 모드로 구성해야 하는지 여부를 정의합니다. 플래그는 전력 소비에 영향을 미치지만 CPU 대기 시간이 향상됩니다. 기본값은 false입니다. |
|
| CryostatedCpus를 사용하면 노드에서 mix-cpu-node-plugin을 사용할 수 있습니다. 기본값은 false입니다. |
|
| PerPodPowerManagement는 Pod 전원 관리에 따라 노드를 구성해야 하는지 여부를 정의합니다. PerPodPowerManagement 및 HighPowerConsumption 힌트는 함께 활성화할 수 없습니다. 기본값은 false입니다. |
|
| Realtime은 노드를 실시간 워크로드에 맞게 구성해야 하는지 여부를 정의합니다. 기본값은 true입니다. |
3.1.13. .status
- 설명
- PerformanceProfileStatus는 PerformanceProfile의 관찰 상태를 정의합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 조건은 현재 상태에 대한 사용 가능한 최신 관찰을 나타냅니다. |
|
| Condition은 Operator 조정 기능의 상태를 나타냅니다. |
|
| RuntimeClass에는 Operator가 생성한 RuntimeClass 리소스의 이름이 포함되어 있습니다. |
|
| tuned는 이 Operator에서 생성한 튜닝 값이 포함된 Tuned 사용자 정의 리소스 오브젝트를 가리킵니다. |
3.1.14. .status.conditions
- 설명
- 조건은 현재 상태에 대한 사용 가능한 최신 관찰을 나타냅니다.
- 유형
-
array
3.1.15. .status.conditions[]
- 설명
- Condition은 Operator 조정 기능의 상태를 나타냅니다.
- 유형
-
object
- 필수 항목
-
status
-
type
-
속성 | 유형 | 설명 |
---|---|---|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| conditionType은 Operator 조정 기능의 상태입니다. |