제품 분류
저희에 게 연락
주소 : 중국 항주 서호 과학 공원 Xiyuanyi Road 8 번 3A 빌딩 5 층
전화 : + 86-571-87858811
Mob : +8613616520351
전자 메일 : trade@qiyangtech.com
뉴스
> 뉴스 > 내용
리눅스 메모리를 수동으로 해제하는 방법? 예제로 I.mx6 가져 가라.
Jul 27, 2018

첫째, 일반적인 상황

먼저 "자유"명령을 말하십시오 :

인용 부호:

[root @ server ~] # free -m 캐시 된 사용 된 총 공유 빈 버퍼 Mem : 249 163 86 0 10 94 - / + buffers / cache : 58 191 Swap : 511 0 511

그들 중 :

인용 부호:

사용 된 메모리의 총 수, 여유 메모리의 수, 공유 된 다중 프로세스의 총 메모리 양, 버퍼 디스크의 크기 버퍼 캐시 및 캐시 된 페이지 캐시 - 버퍼 / 캐시 메모리 : 사용 된 메모리의 수 - 버퍼 - 캐시 된 + 버퍼 / 캐시가없는 + 버퍼 + 캐시 된 사용 가능한 메모리 = 사용 가능한 메모리 + 버퍼 + 캐시 됨.

이 기초를 사용하면 지금 내가 163MB 용으로, 86MB 용으로 무료로 사용할 수 있으며 캐시 된 크기는 10MB, 94MB라는 것을 알 수 있습니다.

그럼 내가 복사 파일을 실행하면 메모리에 변화가 있는지 보자.

인용 부호:

[root @ server ~] # cp-r / etc ~ / test / [root @ 서버 ~] # free -m 사용 된 총 사용 가능한 공유 된 공유 버퍼의 양 Mem : 249 244 4 0 8 174 - / + buffers / cache : 62 187 스왑 : 511 0 511

내가 마지막 구현을 명령 한 후 244MB, 4MB는 무료, 8MB는 버퍼, 174MB는 캐시했다. 하느님, 모두 캐쉬로 먹었습니다. 긴장하지 마십시오. 파일 읽기 실습의 효율성을 높이기위한 것입니다.

디스크 액세스 효율성을 높이기 위해 리눅스는 dentry 캐시 (VFS의 경우 파일 경로 이름을 inode로 변환하는 속도를 높임) 외에도 몇 가지 정교한 설계를 수행했으며 두 가지 주요 캐시 방식을 사용했습니다. 버퍼

캐시 및 페이지 캐시. 전자는 디스크 블록 읽기 및 쓰기 용이고, 후자는 파일 inode 읽기 및 쓰기 용입니다. 이러한 캐시는 효과적으로 단축됩니다.

I / O 시스템 호출 시간 (예 : 읽기, 쓰기, getdents).

그런 다음 누군가가 일정 기간이 지나면 Linux가 자동으로 사용 된 메모리를 해제한다고 말했습니다. 잠시 기다려주세요, 우리는 공개가 있는지 다시보기 위해 자유롭게 사용합니까?

인용 부호

[root @ server test] # free -m 캐시 된 사용 된 총 공유 빈 버퍼 Mem : 249 244 5 0 8 174 - / + buffers / cache : 61 188 Swap : 511 0 511

변화가없는 것 같습니다. (실제 상황에서 메모리 관리는 스왑에도 해당됩니다)

수동으로 메모리를 해제 할 수 있습니까? 대답은 '예'입니다!

둘째, 수동으로 캐시를 해제하십시오.

/ proc는 가상 파일 시스템이므로 커널 엔티티와의 통신 수단으로 읽고 쓸 수 있습니다. 즉, / proc 파일을 수정하여 현재 커널 동작을 조정할 수 있습니다. 그런 다음 / proc / sys / vm / drop_caches를 조정하여 메모리를 확보 할 수 있습니다. 작업은 다음과 같습니다.

[root @ server test] # cat / proc / sys / vm / drop_caches 0 먼저 / proc / sys / vm / drop_caches의 값은 0입니다. [root @ server test] # sync

sync 명령을 수동으로 실행하십시오 (설명 : sync 명령을 사용하여 sync 서브 루틴을 실행하십시오.) 시스템을 중지해야하는 경우 sync 명령을 실행하여 파일 시스템 무결성을 확인하십시오.

수정 된 i-node, 지연된 블록 I / O 및 읽기 - 쓰기 매핑 파일을 포함하여 모든 미기식 시스템 버퍼를 디스크에 쓰는 명령)

[루트 @ 서버 테스트] # echo 3> / proc / sys / vm / drop_caches [루트 @ 서버 테스트] # cat / proc / sys / vm / drop_caches 3 / proc / sys / @server test] # free -m 캐시 된 사용 된 총 공유 빈 버퍼 Mem : 249 66 182 0 0 11 - / + buffers / cache : 55 194 Swap : 511 0 511

그런 다음 free 명령을 실행하면 현재 66MB, 182MB, 0MB 버퍼가 11MB로 캐시됩니다. 따라서 버퍼와 캐시의 효과적인 릴리스입니다.

/ proc / sys / vm / drop_caches를 사용하는 방법은 다음과 같습니다

Quote / proc / sys / vm / drop_caches (Linux 2.6.16부터)이 파일을 쓰면 커널이 깨끗한 캐시, dentry, inodes를 메모리에서 삭제하여 메모리를 비울 수있게한다. pagecache를 해제하려면 echo 1> / proc / sys / vm / drop_caches;를 사용하십시오. dentries와 inode를 해제하려면 echo 2> / proc / sys / vm / drop_caches를 사용하십시오. pagecache, dentries 및 inode를 해제하려면 echo 3> / proc / sys / vm / drop_caches를 사용하십시오. 이것은 비파괴적인 작업이고 더티 개체는 해제 할 수 없으므로 먼저 사용자가 동기화를 실행해야합니다.

셋째, 내 의견

위의 기사는 수년 동안 많은 사용자가 Linux 메모리 관리 질문에 대해 "직관적 인"답변을주었습니다. 핵심 개발 팀의 침입과 같은 느낌입니다.

이 값을 사용해야하는지 또는 값을 사용자에게 언급해야하는지에 대한 예약이 있습니다.

인용 부호

1, 그것은 남자에서 볼 수 있습니다,이 값은 2.6.16 코어 버전 이후에 제공됩니다, 그래서 레드 플래그 DC 5.0과 같은 운영 체제의 이전 버전, RHEL 4.x 전에 verison이 없었어요 ;

2, 시스템 메모리가 관찰을 위해 충분하다면, 나는 여전히 스왑의 사용과 두 값의 크기를 볼 생각이다.

사용자가 자주 묻는 질문은 왜 응용 프로그램을 닫은 후에 메모리가 해제되지 않았습니까?

그러나 사실 우리 모두는 리눅스가 메모리 관리에서 Windows와 다르다는 것을 알고 있습니다. 무료 작은 것은 메모리가 충분하지 않다는 것이 아니라 무료의 두 번째 라인의 마지막 값을보아야합니다.

인용 부호

- / + 버퍼 / 캐시 : 58 191

이것은 시스템에서 사용할 수있는 메모리의 양입니다.

실제 프로젝트에서는 응용 프로그램에 메모리 누수, 오버플로 문제 등의 문제가있는 경우 스왑의 사용으로 판단하는 것이 더 빠를 수 있지만 위의 무료는 위급하다는 것을 알 수 있습니다.

반대로 이번에는 사용자에게 시스템에 값을 수정하도록 지시하면 메모리를 해제 할 수 있으며 자유는 더 커집니다. 사용자가 생각하는 것은 무엇입니까? 그들은 운영 체제에 "문제가 있다고 생각하지 않습니까?"

따라서 코어가 버퍼 나 캐시를 신속하게 지울 수 있기 때문에 위의 작업에서 볼 수있는 것처럼 어렵지는 않지만 핵심에서 수행하지 않았습니다 (기본값은 0). 변경하지 않아야합니다. 우연히.

정상적인 상황에서는 응용 프로그램이 시스템에서 안정적으로 작동하며 무료 값은 안정된 값으로 유지됩니다.

불충분 한 메모리가있을 때, 응용 프로그램은 사용 가능한 메모리, OOM 오류 및 기타 문제를 얻을 수 없습니다, 우리는 아마도 사용자의 양과 같은 응용 프로그램의 이유를 분석해야 더 많은 메모리 부족으로 이어질 응용 프로그램의 메모리 오버플로, 그렇지 않으면 강제로 버퍼를 비우십시오. 따라서 비어있는 공간의 크기를 늘리면 임시 방패에 문제가 생길 수 있습니다.

그래서 저는 메모리 부족을 제외하고, 소프트웨어 개발 단계에 있지 않으면 버퍼를 일시적으로 지우고 메모리 사용량을 결정해야한다고 생각합니다. 또는 응용 프로그램이 더 이상 지원을 제공하지 않는 경우에도 응용 프로그램에 메모리 문제가 있어도이를 피할 수는 없으므로 버퍼의 타이밍 지우기 만 고려할 수 있습니다. (불행히도 이러한 응용 프로그램은 일반적으로 이전 운영 체제 버전에서 실행되지만 위 작업도 해결할 수 없습니다).


QY-IMX6-V.jpg

  • Newsletter
  • 제품 분류
  • 저희에 게 연락
    주소 : 중국 항주 서호 과학 공원 Xiyuanyi Road 8 번 3A 빌딩 5 층
    전화 : + 86-571-87858811
    Mob : +8613616520351
    전자 메일 : trade@qiyangtech.com
  • QR Code
  • 저작권 © 절강 Qiyang 지능형 기술 유한 회사 판권 소유.