Skip to content

[Design] Dynamic Resource Scaling for Performance-Based Reconcile #514

Description

@Chulhee1Lee

Background / 배경

Korean

App Performance 기반 Reconcile Use Case에서는 애플리케이션 성능 저하 시 Pullpiri가 Runtime에서 CPU 및 Memory 리소스를 동적으로 변경할 수 있어야 합니다.

현재 Pullpiri는 App 성능 정보 및 시스템 리소스 정보를 수집할 수 있지만, 실행 중인 Workload에 대한 Dynamic Resource Scaling 기능은 제공하지 않습니다.

본 이슈는 구현에 앞서 Dynamic Resource Scaling을 위한 SW Architecture 및 Component Interface를 설계하기 위한 목적입니다.

관련 Use Case

  • App Performance-based Reconcile
  • Strategy A: Dynamic Resource Scaling (CPU/Memory)

English

As part of the App Performance-based Reconcile use case, Pullpiri should support runtime CPU and memory updates for running workloads when application performance degrades.

Currently, Pullpiri can monitor application performance metrics and node resource usage, but it does not support dynamic resource scaling.

Before implementation, we need to define the software architecture, interfaces, workflows, and component responsibilities required for Dynamic Resource Scaling.

Related Use Case

  • App Performance-based Reconcile
  • Strategy A: Dynamic Resource Scaling (CPU/Memory)

Objective / 목표

Korean

실행 중인 Workload의 CPU 및 Memory를 Runtime에서 변경할 수 있도록 Pullpiri Software Architecture를 설계합니다.

설계 범위는 다음을 포함합니다.

  • Architecture Design
  • Component Responsibilities
  • API / Proto Changes
  • End-to-End Workflow
  • Resource State Synchronization Strategy

English

Design a software architecture that enables runtime CPU and Memory updates for running workloads.

The design should cover:

  • Architecture Design
  • Component Responsibilities
  • API / Proto Changes
  • End-to-End Workflow
  • Resource State Synchronization Strategy

Design Scope / 설계 범위

1. End-to-End Scaling Flow

Korean

Dynamic Resource Scaling을 위한 전체 Workflow를 정의합니다.

예시:

MonitoringServer
→ PolicyManager
→ ActionController
→ NodeAgent
→ Podman Update
→ Resource Allocation Updated

각 컴포넌트의 역할과 책임을 정의해 주세요.

English

Define the overall workflow for Dynamic Resource Scaling.

Example:

MonitoringServer
→ PolicyManager
→ ActionController
→ NodeAgent
→ Podman Update
→ Resource Allocation Updated

Clearly define component responsibilities.


2. API / Proto Design

Korean

필요한 인터페이스 및 Proto 변경 사항을 정의합니다.

검토 대상:

  • PolicyManager
  • ActionController
  • NodeAgent
  • Resource Manager

특히 Runtime Resource Update를 지원하기 위한 신규 Operation이 필요한지 검토해 주세요.

예시:

UpdateResources
UpdateCpuLimit
UpdateMemoryLimit

English

Identify required interfaces and protocol changes.

Potential targets:

  • PolicyManager
  • ActionController
  • NodeAgent
  • Resource Manager

Review whether additional operations are required to support runtime resource updates.

Examples:

UpdateResources
UpdateCpuLimit
UpdateMemoryLimit

3. Runtime Resource Update Mechanism

Korean

실행 중인 Workload의 CPU 및 Memory 변경 방법을 조사해 주세요.

검토 항목:

  • Podman API
  • podman update
  • cgroup limitations
  • Runtime constraints

산출물:

  • 지원 가능한 기능
  • 지원 불가능한 기능
  • 제약사항
  • 알려진 리스크

English

Investigate how runtime CPU and Memory updates can be applied to running workloads.

Topics:

  • Podman API
  • podman update
  • cgroup limitations
  • Runtime constraints

Deliverables:

  • Supported operations
  • Unsupported operations
  • Limitations
  • Known risks

4. Resource Availability Check

Korean

리소스 변경 수행 전 현재 노드의 Available Resource를 어떻게 검증할 것인지 정의합니다.

검토 항목:

  • Available CPU
  • Available Memory
  • Resource 부족 상황 처리 방법
  • 최대 할당 가능 범위

English

Define how resource availability should be validated before applying resource updates.

Consider:

  • Available CPU
  • Available Memory
  • Handling insufficient resources
  • Maximum allocation limits

5. Resource State Synchronization

Korean

다음 컴포넌트 간 Resource 상태 동기화 방안을 정의합니다.

  • Resource Manager
  • ActionController
  • NodeAgent
  • Monitoring Server

실제 할당된 리소스 정보와 Pullpiri 내부 관리 상태가 항상 일관성을 유지할 수 있어야 합니다.

English

Define synchronization strategies between:

  • Resource Manager
  • ActionController
  • NodeAgent
  • Monitoring Server

The actual allocated resources and the Pullpiri-managed state must remain consistent.


Deliverables / 결과물

Design Document

Korean

다음 내용을 포함한 설계 문서를 작성해 주세요.

  • Architecture Diagram
  • Sequence Diagram
  • Component Responsibilities
  • API / Proto Changes
  • Resource Synchronization Strategy
  • Known Limitations
  • Risk Analysis

English

The design document should include:

  • Architecture Diagram
  • Sequence Diagram
  • Component Responsibilities
  • API / Proto Changes
  • Resource Synchronization Strategy
  • Known Limitations
  • Risk Analysis

Out of Scope / 제외 범위

Korean

본 이슈에서는 아래 항목을 다루지 않습니다.

  • Resource Scaling Policy
  • Priority-based Application Termination
  • Victim Selection Algorithm
  • Stateful Offloading
  • Storage Resource Scaling
  • eBPF Monitoring

Resource Scaling Policy는 별도 Task로 진행 예정입니다.

English

The following items are out of scope for this issue.

  • Resource Scaling Policy
  • Priority-based Application Termination
  • Victim Selection Algorithm
  • Stateful Offloading
  • Storage Resource Scaling
  • eBPF Monitoring

Resource scaling policies will be handled separately.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions