>  기사  >  시스템 튜토리얼  >  리눅스 메모리가 먹히고 있다

리눅스 메모리가 먹히고 있다

PHPz
PHPz앞으로
2024-02-20 10:48:10716검색

윈도우와 리눅스의 메모리 관리 차이는 언뜻 보기에 리눅스 시스템이 우리의 메모리를 잡아먹는다(Linux가 내 램을 먹었다). 그러나 사실 이는 메모리 관리의 특징이기도 하다.

리눅스 메모리가 먹히고 있다

무료 명령 소개

다음은 우리 실험실 파일 서버의 메모리를 보기 위해 free 명령을 사용한 결과입니다. -m 옵션은 MB를 단위로 사용한다는 의미입니다.

리눅스 메모리가 먹히고 있다

출력의 두 번째 줄은 시스템 메모리 사용량을 나타냅니다.

Mem: 총 = 3920MB,

used(사용됨) = 1938MB,

무료(유휴) = 1982MB,

공유(공유 메모리) = 0MB,

버퍼 = 497MB,

캐시됨 = 1235MB

참고: 처음 4개 항목은 버퍼와 캐시를 번역하는 데 적합한 단어가 없습니다.

  • 버퍼는 아직 디스크에 "기록"되지 않은 것입니다.
  • 캐시는 디스크에서 "읽혀" 나중에 사용하기 위해 저장된 것입니다.

즉, 버퍼는 디스크에 출력할 데이터를 저장하는 데 사용되고, 캐시는 디스크에서 읽어 나중에 사용하기 위해 메모리에 저장하는 데이터입니다. IO 성능을 제공하기 위해 도입되었습니다.

출력의 세 번째 줄은 두 번째 줄을 기반으로 얻은 내용을 나타냅니다. -/+ 버퍼/캐시:

– 사용된 버퍼/캐시 = 사용된 메모리 – 버퍼 – 캐시됨 = 1938MB – 497MB – 1235MB = 205MB

+ 버퍼/캐시 없음 = 메모리 없음 + 버퍼 + 캐시됨 = 1982MB + 497MB + 1235MB = 3714MB

출력의 세 번째 줄은 스왑 파티션의 사용을 나타냅니다.

스왑: 총 = 4095MB

사용됨(사용됨) = 0MB

무료(유휴)= 4095MB

현재 시스템에 충분한 메모리가 있으므로 스왑 파티션은 사용되지 않습니다.

위 출력 결과의 세 번째 줄은 이해하기 더 어려울 수 있습니다. 이 데이터 줄이 사용자에게 표시되어야 하는 이유는 무엇입니까? 시스템 여유 메모리와 버퍼/캐시된 메모리를 뺀 값은 무엇을 의미하나요? 기억은 무엇을 의미하나요?

기억의 분류

우리는 메모리를 사용자와 운영 체제의 관점에서 용도에 따라 다른 이름을 사용하여 세 가지 범주로 나눕니다.

위 표의 내용은 free 명령의 "버퍼/캐시" 메모리를 나타냅니다. 이 메모리는 실제로 운영 체제 관점에서 사용되지만 사용자가 사용하려는 경우 이 메모리를 빠르게 재활용할 수 있습니다. 프로그램이 사용하므로 사용자 입장에서는 이 메모리를 유휴 메모리로 분류해야 합니다.

free 명령의 결과 출력으로 다시 돌아가세요. 세 번째 줄의 결과 출력은 사용자 관점에서 시스템 메모리 사용량을 나타냅니다. 따라서 top 또는 free 명령을 사용하여 시스템에 남은 메모리 양을 확인하려면 실제로 사용 가능한 메모리를 버퍼/캐시 메모리에 추가해야 합니다. 이것이 시스템의 실제 사용 가능한 메모리입니다.

버퍼/캐시된 혜택

Linux 메모리 관리는 캐싱 dentry(파일 경로 이름을 inode로 변환하는 속도를 높이기 위해 VFS에서 사용) 외에도 버퍼 캐시와 페이지 캐시라는 두 가지 주요 캐시 방법을 채택합니다. 디스크 IO 성능을 향상시킵니다. 느린 블록 장치에서 읽은 데이터는 해당 시점에 더 이상 필요하지 않더라도 다음 번에 애플리케이션이 데이터에 액세스할 때 메모리에서 직접 읽을 수 있으므로 느린 속도의 블록 장치를 우회합니다. , 따라서 시스템의 전반적인 성능이 향상됩니다.

Linux는 이 여유 메모리를 최대한 활용합니다. 메모리가 비어 있으면 다음에 프로그램이 데이터에 다시 액세스할 때 메모리를 사용하는 것이 더 빠르다는 것입니다. 프로그램이 메모리를 사용하려고 하는데 시스템 메모리가 부족할 경우, 이때 스왑 파티션을 사용하는 대신 캐시의 일부를 빠르게 재활용하여 사용자 프로그램이 사용할 수 있도록 남겨둡니다.

따라서 버퍼/캐시가 실제로 유익하고 무해하다는 것을 알 수 있습니다. 실제 단점은 Linux가 메모리를 소비한다는 착각을 사용자에게 줄 수 있습니다!

사실 그렇지 않습니다. Linux는 메모리를 소모하지 않았습니다. 스왑 파티션이 사용되지 않았고 메모리가 부족하다면 Linux가 많은 양의 데이터를 캐시하기 때문에 운이 좋다고 느낄 것입니다. 다음 번에는 그 혜택을 누릴 것입니다.

실험적 증거

위의 결론을 검증하기 위해 다음 실험이 사용됩니다.

대용량 파일을 차례로 읽고 두 번 읽는 방법을 비교합니다.

1. 먼저 1G 대용량 파일을 생성하세요

리눅스 메모리가 먹히고 있다

2. 캐시 지우기

리눅스 메모리가 먹히고 있다

3. 이 파일을 읽고 걸리는 시간을 테스트해 보세요

리눅스 메모리가 먹히고 있다

4. 파일을 다시 읽고 소요 시간을 테스트해 보세요

리눅스 메모리가 먹히고 있다

위에서 볼 수 있듯이 이 1G 파일을 처음 읽을 때는 약 18초가 걸렸고, 두 번째로 읽을 때는 0.3초밖에 걸리지 않았는데, 이는 완전히 60배 향상된 것입니다!

위 내용은 리눅스 메모리가 먹히고 있다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제