IT

쿠버네티스 메모리 축약 표현하기

only-one53 2024. 5. 29. 09:28

바이트 단위의 축약

쿠버네티스에서 메모리와 같은 리소스를 설정할 때, 다양한 축약 단위를 사용할 수 있습니다. 메모리의 경우에는 바이트 단위를 기준으로 축약 단위를 사용합니다. 다음은 일반적으로 사용되는 메모리 축약 단위입니다:

  1. K: 킬로바이트 (KB) - 1 KB = 1,024 바이트
  2. M: 메가바이트 (MB) - 1 MB = 1,024 KB
  3. G: 기가바이트 (GB) - 1 GB = 1,024 MB
  4. T: 테라바이트 (TB) - 1 TB = 1,024 GB
  5. P: 페타바이트 (PB) - 1 PB = 1,024 TB
  6. E: 엑사바이트 (EB) - 1 EB = 1,024 PB

쿠버네티스에서 메모리를 설정할 때는 이러한 단위를 사용할 수 있습니다. 예를 들어, 파드의 메모리 요청 및 제한을 설정할 때 다음과 같이 사용할 수 있습니다:

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
    resources:
      requests:
        memory: "128Mi"  # 메모리 요청
      limits:
        memory: "512Mi"  # 메모리 제한

 

이 예제에서 requests.memory는 128 메가바이트로 설정되었고, limits.memory는 512 메가바이트로 설정되었습니다.

이 외에도 더 큰 단위로 설정할 수 있습니다. 예를 들어, 2 기가바이트의 메모리 제한을 설정하고 싶다면 다음과 같이 설정할 수 있습니다:

limits:
  memory: "2Gi"

 

이와 같이 쿠버네티스에서는 메모리 리소스를 설정할 때 적절한 축약 단위를 사용하여 표현할 수 있습니다.

 


이진 접두어 기반의 축약

쿠버네티스에서 메모리 리소스를 설정할 때 Gi와 Mi와 같은 단위를 사용하는 것은 이진 접두어를 기반으로 한 표현입니다. 이진 접두어는 메모리 크기를 1024의 제곱 단위로 나타냅니다. 이는 메모리 주소 체계가 2의 제곱수를 사용하는 컴퓨터 시스템의 특성을 반영합니다. 다음은 이러한 단위들에 대한 설명입니다:

  1. Ki: 키비바이트 (Kibibyte) - 1 KiB = 1,024 바이트
  2. Mi: 메비바이트 (Mebibyte) - 1 MiB = 1,024 KiB = 1,048,576 바이트
  3. Gi: 기비바이트 (Gibibyte) - 1 GiB = 1,024 MiB = 1,073,741,824 바이트
  4. Ti: 티비바이트 (Tebibyte) - 1 TiB = 1,024 GiB = 1,099,511,627,776 바이트
  5. Pi: 페비바이트 (Pebibyte) - 1 PiB = 1,024 TiB = 1,125,899,906,842,624 바이트
  6. Ei: 엑스비바이트 (Exbibyte) - 1 EiB = 1,024 PiB = 1,152,921,504,606,846,976 바이트

이진 접두어는 SI 접두어와 비슷하지만, SI 접두어는 1000의 제곱 단위로 크기를 나타내기 때문에 다릅니다. 예를 들어:

  • 1 KB (킬로바이트) = 1,000 바이트
  • 1 MB (메가바이트) = 1,000 KB = 1,000,000 바이트
  • 1 GB (기가바이트) = 1,000 MB = 1,000,000,000 바이트

쿠버네티스에서 메모리 리소스를 설정할 때, 이진 접두어를 사용하여 더 정확한 메모리 크기를 지정할 수 있습니다. 예를 들어, 512 메비바이트의 메모리를 요청하려면 다음과 같이 설정합니다:

resources:
  requests:
    memory: "512Mi"
  limits:
    memory: "1Gi"

 

위 예제에서 requests.memory는 512 MiB로 설정되었고, limits.memory는 1 GiB로 설정되었습니다. 이와 같이 쿠버네티스에서 메모리를 설정할 때 이진 접두어를 사용하여 메모리 크기를 표현할 수 있습니다.

 

자바스크립트로  메모리 이진 접두어 단위로 변환

function convertMiToHumanReadable(memoryInMi) {
    const units = ["Mi", "Gi", "Ti", "Pi", "Ei"];
    let size = memoryInMi;
    let unitIndex = 0;

    while (size >= 1024 && unitIndex < units.length - 1) {
        size /= 1024;
        unitIndex += 1;
    }

    return `${size.toFixed(2)}${units[unitIndex]}`;
}

// 테스트 예제
const memoryInMi = 2048;  // 2 GiB
const humanReadableMemory = convertMiToHumanReadable(memoryInMi);
console.log(humanReadableMemory);  // 출력: "2.00Gi"

// 추가 테스트
console.log(convertMiToHumanReadable(1048576));  // 출력: "1.00Ti"
console.log(convertMiToHumanReadable(512));      // 출력: "512.00Mi"
console.log(convertMiToHumanReadable(10485760)); // 출력: "10.00Ti"

 

로직 설명

  1. 단위 배열 정의: 이진 접두어 단위 배열을 정의합니다. 여기에는 "Mi", "Gi", "Ti", "Pi", "Ei"가 포함됩니다.
  2. 초기 값 설정: 변환할 메모리 크기를 Mi 단위로 입력받고, 현재 단위를 나타내는 인덱스를 0으로 초기화합니다.
  3. 단위 변환 루프: 메모리 크기가 1024 Mi 이상이고, 단위 배열의 끝에 도달하지 않을 때까지 메모리 크기를 1024로 나누고 단위 인덱스를 증가시킵니다.
  4. 결과 반환: 변환된 메모리 크기와 단위를 문자열로 포맷하여 반환합니다.

이 로직을 사용하여 Mi 단위의 메모리를 더 큰 이진 접두어 단위로 변환할 수 있습니다. 예를 들어, 2048 Mi는 2.00 Gi로 변환되며, 1048576 Mi는 1.00 Ti로 변환됩니다. 이 방법을 통해 메모리 크기를 이해하기 쉽게 표현할 수 있습니다.

'IT' 카테고리의 다른 글

자바스크립트 0 나누기 0 (0/0) = NaN 인 이유  (0) 2024.05.30