웹사이트 검색

Linux에서 RAM 메모리 캐시, 버퍼 및 스왑을 지우는 방법


다른 운영 체제와 마찬가지로 GNU/Linux는 메모리 관리를 그 이상으로 효율적으로 구현했습니다. 그러나 프로세스가 메모리를 소모하고 이를 지우고 싶은 경우 Linux는 RAM 캐시를 플러시하거나 지우는 방법을 제공합니다.

이 기사에서는 Linux 시스템에서 RAM 메모리 캐시, 버퍼 및 스왑 공간을 지워 전반적인 성능을 향상시키는 방법을 살펴보겠습니다.

RAM 메모리 캐시, 버퍼 및 스왑 공간 이해

Linux 시스템의 RAM 메모리 캐시, 버퍼 및 스왑 공간을 살펴보겠습니다.

RAM 메모리 캐시

RAM 메모리 캐시는 정기적으로 액세스되는 데이터를 유지하기 위해 커널에서 사용하는 메커니즘입니다. 이렇게 하면 시스템 응답성이 향상되지만 캐시가 과부하되면 사용되지 않는 데이터가 보존되어 성능에 영향을 줄 수 있습니다.

완충기

캐시와 마찬가지로 버퍼는 데이터를 일시적으로 보관하지만 용도가 다릅니다. 버퍼는 CPU와 하드 디스크 등의 구성 요소 간에 전송되는 데이터를 저장하여 원활한 통신을 지원합니다. 그러나 버퍼링된 데이터가 너무 많으면 시스템 속도가 저하될 수 있습니다.

스왑 공간

스왑 공간은 물리적 RAM이 고갈되었을 때 가상 메모리 역할을 하는 하드 디스크에 할당된 영역입니다. 메모리 부족으로 인한 시스템 충돌을 방지하지만 과도하게 사용하면 시스템 속도가 느려질 수 있습니다.

Linux에서 캐시, 버퍼 및 스왑 공간 지우기

특정 상황에서는 아래 설명에 따라 캐시, 버퍼 또는 스왑 공간을 지워야 할 수도 있습니다.

Linux에서 RAM 메모리 캐시를 지우는 방법은 무엇입니까?

모든 Linux 시스템에는 프로세스나 서비스를 중단하지 않고 캐시를 지울 수 있는 세 가지 옵션이 있습니다.

페이지 캐시 지우기

1. PageCache만 지우려면 다음 명령을 사용하면 됩니다. 이는 특히 PageCache를 지워 메모리 리소스를 확보하는 데 도움이 됩니다.

sudo sync; echo 1 > /proc/sys/vm/drop_caches

덴트리 및 아이노드 지우기

2. dentriesinodes만 지우려면 다음 명령을 사용하면 파일 시스템을 동기화하고 dentries와 inode를 모두 지울 수 있습니다. 캐시된 디렉토리 및 inode 정보를 공개하여 시스템 성능을 향상시킵니다.

sudo sync; echo 2 > /proc/sys/vm/drop_caches

PageCache, Dentries 및 Inode 지우기

3. pagecache, dentriesinodes를 지우려면 다음 명령을 사용하면 됩니다. 파일 시스템을 삭제하고 페이지 캐시, 덴트리 및 inode를 지워 메모리를 확보하고 시스템 성능을 향상시킵니다.

sudo sync; echo 3 > /proc/sys/vm/drop_caches 

위 명령의 각 부분에 대한 설명은 다음과 같습니다.

  • sudo는 슈퍼유저로 명령을 실행하는 데 사용됩니다.
  • sync는 파일 시스템 버퍼를 플러시합니다.
  • <코드>“; ” 세미콜론은 한 줄에 여러 명령을 구분하는 데 사용됩니다.
  • echo 3 > /proc/sys/vm/drop_caches 명령은 최근에 액세스한 파일의 임시 저장 영역인 페이지 캐시를 삭제하는 데 사용됩니다.

참고: drop_caches 파일은 지워야 하는 캐시된 데이터 유형을 제어하며 값은 다음과 같습니다.

  • 1 – 페이지 캐시만 지웁니다.
  • 2 – 덴트리와 아이노드를 지웁니다.
  • 3 – 페이지 캐시, 덴트리 및 inode를 지웁니다.

커널 문서에서 언급했듯이 drop_caches에 쓰면 애플리케이션/서비스를 종료하지 않고 캐시를 정리하며, echo 명령은 파일에 쓰는 작업을 수행합니다.

디스크 캐시를 지워야 하는 경우 “...echo 1 > …과 같은 첫 번째 명령이 엔터프라이즈 및 프로덕션에서 가장 안전합니다. ”PageCache만 지웁니다.

페이지 캐시, 페이지 캐시가 지워지기 때문에 수행 중인 작업을 알 때까지 프로덕션에서 “...echo 3 > ” 위의 세 번째 옵션을 사용하지 않는 것이 좋습니다. >dentries,inode.

Linux에서 스왑 공간을 지우는 방법은 무엇입니까?

스왑 공간을 지우려면 -a 옵션과 함께 swapoff 명령을 사용하면 모든 스왑 파티션이 비활성화됩니다.

sudo swapoff -a

그런 다음 다음 명령을 실행하여 다시 되돌리면 모든 스왑 파티션이 활성화됩니다.

sudo swapon -a

Linux에서 버퍼, 캐시 및 스왑을 해제하는 것이 권장됩니까?

일반적으로 이러한 리소스를 효율적으로 관리하도록 설계된 Linux 커널에서 사용할 수 있는 Linux의 버퍼캐시를 수동으로 해제하는 것은 좋지 않습니다. 수동으로 지우면 시스템 성능이 저하될 수 있습니다.

그러나 메모리 부족이 심하고 다른 방법으로 메모리를 확보할 수 없는 경우와 같이 버퍼캐시를 지워야 하는 드문 상황이 있을 수 있습니다. 이러한 경우 주의해서 진행해야 하며 잠재적인 성능 영향을 알고 있어야 합니다.

마찬가지로 Linux에서 스왑 공간을 지우는 것은 일반적으로 일반적인 상황에서 일상적이거나 권장되는 관행이 아닙니다.

메모리 최적화 자동화

프로세스를 자동화하고 정기적으로 메모리를 지우려면 지정된 간격으로 명령을 실행하도록 크론 작업을 설정할 수 있습니다.

crontab 구성을 엽니다.

crontab -e

매일 자정에 캐시, 버퍼 및 스왑 공간을 지우려면 다음 줄을 추가하세요.

0 0 * * * sudo sync; echo 3 > /proc/sys/vm/drop_caches
0 0 * * * sudo echo 1 > /proc/sys/vm/drop_caches
0 0 * * * sudo sync; echo 2 > /proc/sys/vm/drop_caches
0 0 * * * sudo swapoff -a && sudo swapon -a

cron을 사용한 작업 예약에 대한 추가 정보는 '11 Cron Scheduling Jobs'라는 제목의 기사를 참조할 수 있습니다.

Linux 프로덕션 서버에서 RAM 캐시를 지우는 것이 좋습니다?

전혀 그렇지 않다. 매일 오전 2시에 RAM 캐시를 지우도록 스크립트를 예약한 시나리오를 생각해 보세요. 매일 오전 2시에 스크립트가 실행되어 RAM 캐시가 플러시됩니다. 그러나 어느 날 귀하의 웹 사이트에 예기치 않게 많은 수의 사용자가 온라인 상태가 되어 서버 리소스에 상당한 수요가 발생하게 되었습니다.

동시에 예약된 스크립트가 실행되고 캐시의 모든 내용이 지워집니다. 이제 모든 사용자가 디스크에서 데이터를 검색하고 있으므로 잠재적으로 서버 충돌 및 데이터베이스 손상이 발생할 수 있습니다. 따라서 필요한 경우에만 RAM 캐시를 지우고 작업에 주의하는 것이 중요합니다. 그렇지 않으면 Cargo Cult 시스템 관리자가 될 위험이 있습니다.

결론

효율적인 메모리 관리는 원활하게 실행되는 Linux 시스템에 매우 중요합니다. RAM 메모리 캐시, 버퍼 및 스왑 공간을 정기적으로 지우면 시스템 성능이 크게 향상될 수 있습니다. 이러한 메커니즘을 이해하고 제공된 명령을 사용하면 Linux 시스템을 최상의 상태로 실행할 수 있습니다.

지금은 여기까지입니다. 기사가 마음에 드셨다면 댓글로 소중한 피드백을 공유해 주세요. 프로덕션 및 엔터프라이즈 환경에서 RAM 캐시와 버퍼를 지우는 좋은 접근 방식이라고 생각하는 것에 대한 귀하의 생각을 알려주십시오.