바이트 단위의 축약
쿠버네티스에서 메모리와 같은 리소스를 설정할 때, 다양한 축약 단위를 사용할 수 있습니다. 메모리의 경우에는 바이트 단위를 기준으로 축약 단위를 사용합니다. 다음은 일반적으로 사용되는 메모리 축약 단위입니다:
- K: 킬로바이트 (KB) - 1 KB = 1,024 바이트
- M: 메가바이트 (MB) - 1 MB = 1,024 KB
- G: 기가바이트 (GB) - 1 GB = 1,024 MB
- T: 테라바이트 (TB) - 1 TB = 1,024 GB
- P: 페타바이트 (PB) - 1 PB = 1,024 TB
- 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의 제곱수를 사용하는 컴퓨터 시스템의 특성을 반영합니다. 다음은 이러한 단위들에 대한 설명입니다:
- Ki: 키비바이트 (Kibibyte) - 1 KiB = 1,024 바이트
- Mi: 메비바이트 (Mebibyte) - 1 MiB = 1,024 KiB = 1,048,576 바이트
- Gi: 기비바이트 (Gibibyte) - 1 GiB = 1,024 MiB = 1,073,741,824 바이트
- Ti: 티비바이트 (Tebibyte) - 1 TiB = 1,024 GiB = 1,099,511,627,776 바이트
- Pi: 페비바이트 (Pebibyte) - 1 PiB = 1,024 TiB = 1,125,899,906,842,624 바이트
- 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"
로직 설명
- 단위 배열 정의: 이진 접두어 단위 배열을 정의합니다. 여기에는 "Mi", "Gi", "Ti", "Pi", "Ei"가 포함됩니다.
- 초기 값 설정: 변환할 메모리 크기를 Mi 단위로 입력받고, 현재 단위를 나타내는 인덱스를 0으로 초기화합니다.
- 단위 변환 루프: 메모리 크기가 1024 Mi 이상이고, 단위 배열의 끝에 도달하지 않을 때까지 메모리 크기를 1024로 나누고 단위 인덱스를 증가시킵니다.
- 결과 반환: 변환된 메모리 크기와 단위를 문자열로 포맷하여 반환합니다.
이 로직을 사용하여 Mi 단위의 메모리를 더 큰 이진 접두어 단위로 변환할 수 있습니다. 예를 들어, 2048 Mi는 2.00 Gi로 변환되며, 1048576 Mi는 1.00 Ti로 변환됩니다. 이 방법을 통해 메모리 크기를 이해하기 쉽게 표현할 수 있습니다.
'IT' 카테고리의 다른 글
자바스크립트 0 나누기 0 (0/0) = NaN 인 이유 (0) | 2024.05.30 |
---|