네트워킹 SONiC: SONiC의 시스템 메모리 사용량 - "버프/사용 가능"
Summary: 이 문서에서는 Dell Networking SONiC의 기본 CLI에서 "top" 출력에 있는 buff/cache" 및 "avail Mem" 필드의 의미에 대해 설명합니다.
Instructions
-
질문 1: 버프/캐시란 무엇인가요?
buff/cache"는 파일 시스템 버퍼 및 캐시에 사용되는 메모리 양입니다. 이 메모리 사용량은 Linux가 시스템 성능을 관리하고 최적화하는 방법의 중요한 부분입니다. "buff/cache"가 무엇을 의미하는지 분석해 보겠습니다.
버퍼:
이 컨텍스트에서 버퍼는 디스크에서 읽거나 쓰는 데이터를 임시로 보관하는 데 사용되는 시스템 메모리(RAM)의 일부를 나타냅니다. 예를 들어, 프로그램이 파일에서 데이터를 읽을 때 데이터는 먼저 메모리의 버퍼에 로드됩니다. 버퍼는 RAM을 읽거나 쓰는 것이 물리적 디스크에 액세스하는 것보다 빠르기 때문에 디스크 I/O 성능을 향상시키는 데 도움이 됩니다. 또한 버퍼는 데이터가 디스크에 보다 효율적으로 기록되도록 하여 디스크 I/O 작업 수를 줄일 수 있습니다.캐시:
이 컨텍스트에서 캐시는 파일 및 디렉토리에서 자주 액세스하는 데이터를 저장하는 데 사용되는 메모리 부분을 나타냅니다. Linux는 "페이지 캐시"라는 메커니즘을 사용하여 최근에 읽거나 쓴 파일 및 디렉토리의 데이터를 캐시합니다. 이렇게 캐싱된 데이터는 메모리에 보관되므로 동일한 데이터가 다시 필요할 경우 속도가 느린 디스크 스토리지에서 데이터를 읽는 대신 RAM에서 빠르게 가져올 수 있습니다. 이 캐시는 자주 사용하는 데이터를 위해 디스크에 액세스해야 하는 요구 사항을 줄여 시스템 성능을 크게 향상시킬 수 있습니다.애플리케이션 또는 운영 체제에서 활성 프로세스에 더 많은 메모리가 필요한 경우 이러한 요구를 수용하기 위해 버퍼/캐시 메모리를 신속하게 해제할 수 있습니다.
"top" 명령은 이 값을 표시합니다. 또한 시스템의 현재 상태, CPU 사용량, 메모리 사용량을 표시합니다.
참고: "top" 명령은 SONiC의 기본 CLI에서만 작동하며 Dell의 MF-CLI(MF-CLI는 Dell의 맞춤형 "관리 프레임워크" CLI)에서는 작동하지 않습니다. 기본 CLI는 SONiC 스위치를 처음 부팅할 때 나타나는 명령줄 인터페이스입니다. MF-CLI는 초기 네이티브 cli에 "sonic-cli"를 입력하면 연결됩니다.admin@sonic:~$ top top - 16:43:51 up 8 days, 18:15, 1 user, load average: 1.54, 1.50, 1.51 Tasks: 365 total, 2 running, 363 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.8 us, 4.2 sy, 0.0 ni, 93.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 15482.2 total, 11292.8 free, 2299.6 used, 1889.8 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 12965.1 avail Mem
-
질문 2: 높은 버퍼/캐시 메모리 사용률에 대한 임계값은 무엇입니까?
버퍼/캐시 메모리는 자주 액세스하는 데이터를 저장하기 위한 캐시로 사용됩니다. 따라서 사용 가능한 RAM의 상당 부분이 이 목적을 위해 할당될 수 있습니다. 주목할 점은 버퍼/캐시 메모리 사용량이 매우 동적이며 시스템 요구에 따라 지속적으로 변경된다는 것입니다. 따라서 전체 메모리 사용량(또는 해당 "가용 메모리")을 모니터링하고 시스템에 애플리케이션 및 프로세스를 실행하기에 충분한 여유 메모리가 있는지 확인하는 것이 더 중요합니다.
top - 14:17:13 up 207 days, 1:59, 1 user, load average: 2.66, 2.19, 2.03 Tasks: 386 total, 2 running, 384 sleeping, 0 stopped, 0 zombie %Cpu(s): 12.5 us, 9.7 sy, 0.0 ni, 77.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 15482.6 total, 8571.4 free, 2692.5 used, 4218.8 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 12773.1 avail Mem <--- system's total available RAM
Dell Enterprise SONiC 스위치에서 사용할 수 있는 시스템 RAM의 백분율을 표현하는 유용한 명령:
free | grep Mem | awk '{print $7/$2 * 100 }'이 명령은 "avail Mem"을 "MiB Mem total"로 나눕니다.
다음은 위의 명령을 비교하고 참조용으로 관계를 나타내는 또 다른 예입니다.
admin@Leaf3B:~$ top top - 21:49:49 up 1:25, 1 user, load average: 0.59, 0.60, 0.64 Tasks: 329 total, 1 running, 328 sleeping, 0 stopped, 0 zombie %Cpu(s): 7.9 us, 4.2 sy, 0.0 ni, 87.5 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st KiB Mem : 15928852 total, 12074024 free, 2439884 used, 1414944 buff/cache KiB Swap: 0 total, 0 free, 0 used. 13120520 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21685 root 20 0 172992 33116 8436 S 52.9 0.2 3:16.11 python3.6 1278 root 20 0 92872 15116 3264 S 17.6 0.1 2:24.49 redis-serv+ 5366 admin 20 0 43540 3812 3020 R 17.6 0.0 0:00.03 top 18469 root 20 0 1643080 451968 78276 S 11.8 2.8 8:17.32 syncd 1097 root 20 0 136440 15188 5912 S 5.9 0.1 0:07.75 watchdogd 19856 admin 20 0 334880 61900 35296 S 5.9 0.4 0:00.44 docker 20985 root 20 0 159488 18616 5036 S 5.9 0.1 0:19.22 xcvrd 1 root 20 0 57768 7820 5544 S 0.0 0.0 0:32.58 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.91 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:01.90 kworker/0:0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+ 7 root 20 0 0 0 0 S 0.0 0.0 0:06.93 rcu_sched 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root rt 0 0 0 0 S 0.0 0.0 0:00.39 migration/0 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dr+ 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 admin@Leaf3B:~$ free total used free shared buff/cache available Mem: 15928852 2438836 12074940 36060 1415076 13121528 Swap: 0 0 0 admin@Leaf3B:~$ free | grep Mem | awk '{print $7/$2 * 100 }' 82.3662 admin@Leaf3B:~$