cronjob뿐만 아니라 에코를 에코하는 방법은 무엇입니까?

cronjob뿐만 아니라 에코를 에코하는 방법은 무엇입니까?

내가 읽고있다이 기사새 Linux VM이 RAM의 1/3을 차지하므로 버퍼/캐시를 지우기 위해 다음을 실행했습니다.

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

문제가 즉시 해결되었으므로 cronjob에 추가했습니다. 기사에는 clearcache.sh다음 내용으로 파일을 생성하라고 나와 있습니다.

#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"

무슨 일이에요 sync? 작동하려면 실행해야 하지 않나요? 이 명령을 실행하기 위해 cronjob에서 에코가 에코되는 이유는 무엇입니까? 명령줄에서 이것을 시도했는데 예상대로 명령이 에코되었습니다.

# echo "echo 3 > /proc/sys/vm/drop_caches"
echo 3 > /proc/sys/vm/drop_caches

이것은 내가 모르는 마법의 크론 기능인가요?

답변1

Linux가 RAM을 사용하는 방식에 대한 요점/철학을 완전히 놓쳤습니다.

RAM은 완전히 비어 있고 OS가 파일을 가져오기 위해 HDD에 액세스해야 하는 경우 낭비되는 리소스입니다. 따라서 Linux에서는 성능 향상을 위해 많은 RAM을 소비하는 버퍼와 캐시를 유지합니다.

이 RAM은 프로세스에서 언제든지 사용할 수 있습니다(실제로는 캐시임).

디스크에서 데이터를 읽는 것은 (실제) 메모리에 액세스하는 것에 비해 매우 느립니다. 또한 상대적으로 짧은 시간 내에 디스크의 동일한 부분을 여러 번 읽는 것이 일반적입니다. 예를 들어, 먼저 이메일을 읽은 다음 답장할 때 편집기로 편지를 읽은 다음 폴더에 복사할 때 메일 프로그램에서 다시 읽도록 할 수 있습니다. 또는 사용자가 많은 시스템에서 ls 명령이 얼마나 자주 실행되는지 고려하십시오. 디스크에서 정보를 한 번만 읽은 다음 더 이상 필요하지 않을 때까지 메모리에 보관하면 첫 번째 읽기를 제외한 모든 읽기 속도가 빨라질 수 있습니다. 이를 디스크 버퍼링이라고 하며, 이를 위해 사용되는 메모리를 버퍼 캐시라고 합니다.

인용하다: http://www.tldp.org/LDP/sag/html/buffer-cache.html

$ free -hw
              total        used        free      shared     buffers       cache   available
Mem:           992M         76M        202M         12M         68M        645M        739M
Swap:          2.0G          0B        2.0G

이 출력에서 ​​내 VM의 크기는 약 992MB이며 그 중 202MB만 사용할 수 있는 것으로 보입니다. 그러나 이것이 바로 많은 사람들이 혼동/오도하는 지점입니다.

이 Linux 시스템에는 실제로 739MB의 여유 공간이 있습니다(사용 가능한 열).

어떻게 이럴 수있어?

단순한. Linux는 매번 이러한 파일을 검색하기 위해 느린 HDD를 사용하는 대신 RAM(버퍼 및 캐시)에 파일, 라이브러리 등을 보관하여 성능을 향상시키기 위해 RAM을 사용합니다.

Linux 커널은 이러한 방식으로 버퍼와 캐시를 사용하며, 언제든지 메모리 관리자(커널의 일부)가 더 많은 RAM이 필요한 프로세스의 압력을 감지하면 커널은 실제로 처리 중인 모든 데이터를 삭제할 수 있습니다. 즉시 더 많은 RAM을 확보하려면 여기에 캐시하세요.

너의 문제

귀하의 질문은 스크립트에 관한 것입니다 clearcache.sh. 대답은 간단합니다. 이 글을 쓴 사람의 오타입니다. 다음과 같아야 합니다.

$ echo "echo 3 > /proc/sys/vm/drop_caches" | sudo sh

이 질문에 대한 내 U&L Q&A 답변을 실수로 복사/붙여넣었을 수 있습니다.Linux 시스템에서 버퍼와 캐시를 지우는 방법은 무엇입니까?

인용하다

관련 정보