어떻게 리 눅 스 기계 의 메모리 사용 상황 을 정확하게 봅 니까?
3677 단어 shell
업무 상 리 눅 스 기기 와 관련 되 기만 한다 면 기본적으로 이러한 수요 가 있 고 메모리 사용 상황 을 살 펴 볼 수 있 지만 어떻게 봐 야 정확 합 니까?이전에 사 용 된 것 은 top 명령 으로 잘못된 부분 이 있 었 습 니 다.
왜 top 명령 으로 메모리 에 오류 가 있 습 니까?
top 은 프로 세 스, cpu 사용률, 메모리 사용률 등 을 실시 간 으로 볼 수 있 는 좋 은 시스템 분석 도구 입 니 다. windows 의 작업 관리자 와 같 습 니 다.나 는 예전 에 top 이 본 것 이 진정한 메모리 사용 상황 이 라 고 생각 했 는데 나중에 baidugoogle 은 오 랜 만 에 자신의 그림 을 발견 했다. 먼저 top 명령 을 내 린 후에 보 여 준 메모리 사용 상황 을 보고 저 는 제 기와 공 vps 로 시범 을 보 여 드 리 겠 습 니 다.
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 73728k total, 70048k used, 3680k free, 0k buffers
Swap: 16384k total, 4696k used, 11688k free, 64716k cached
Mem: 73728 k total, 70048 k used, 3680 k free, 0k buffers 라 는 줄 을 볼 수 있 습 니 다. 바로 메모리 사용 상황 입 니 다.처음 엔 나 도 이 줄 만 봤 어.나중에 회사 의 생산 기계 에서 보 았 을 때 의 심 스 러 웠 습 니 다. 한 동안 작 동 된 기계 라면 메모리 의 totalk 과 used 는 항상 매우 가 깝 고 free 값 이 적 습 니 다. 즉, '메모리 사용률' 이 매우 높 습 니 다. 제 가 각종 서 비 스 를 모두 껐 더 라 도.그러나 그럼 에 도 서버 는 아무런 문제 가 없 었 고 tomcat 서 비 스 를 다시 시작 하여 작은 압력 측정 을 하 는 것 도 정상 이 었 다.그러면 문제 가 생 겼 다. 메모리 상황 이 이렇게 긴 장 했 는데 어떻게 이렇게 많은 서 비 스 를 실행 할 수 있 고 심지어 스트레스 테스트 를 할 수 있 습 니까? ->답 은 간단 합 니 다. 많이 사 용 된 메모리 중 하 나 는 캐 시 입 니 다. 이것 은 리 눅 스 의 메모리 관리 체제 라 고 할 수 있 습 니 다.
Linux 의 Cache 메모리
캐 시 메모리 (캐 시 메모리):
파일 을 읽 고 쓸 때 리 눅 스 커 널 은 읽 기와 쓰기 성능 과 속 도 를 높이 기 위해 파일 을 메모리 에 캐 시 합 니 다. 이 부분 메모 리 는 Cache Memory (캐 시 메모리) 입 니 다.프로그램 이 끝 난 후에 도 Cache Memory 는 자동 으로 방출 되 지 않 습 니 다.이것 은 리 눅 스 시스템 에서 프로그램 이 파일 을 자주 읽 고 쓴 후에 사용 가능 한 물리 적 메모리 가 매우 적 다 는 것 을 알 게 될 것 이다. 사실 이 캐 시 메모리 (Cache Memory) 는 메모 리 를 사용 해 야 할 때 자동 으로 방출 되 기 때문에 메모리 가 사용 되 지 않 을 까 걱정 할 필요 가 없습니다. free 에서 cached 를 뺀 나머지 메모리 가 부족 할 때 만 프로그램 이 메모리 사용 이 충분 하지 않 을 수 있 습 니 다.
그래서 사실 방금 top 에서 본 메모리 사용 상황 중 일 부 는 캐 시 입 니 다. 그 캐 시 는 얼마나 됩 니까?마지막 으로 mem 줄 뒤에 buffers 가 있 습 니 다. swap 줄 뒤에 cached 가 있 습 니 다. 이 두 개가 캐 시 크기 입 니 다.따라서 응용 프로그램 이 실제 물리 적 메모 리 를 사용 하 는 상황 을 계산 하려 면 used - cached - buffers 여야 합 니 다. 그래서 방금 top 에서 본 물리 적 메모리 의 사용 상황 은 70048 k - 64716 k = 5332 k 입 니 다.그래서 별로 안 썼 잖 아!
또한 단순히 메모리 사용 상황 을 보고 싶다 면 free 명령 을 사용 하 는 것 이 직관 적 입 니 다.
total used free shared buffers cached
Mem: 73728 70940 2788 0 0 64840
-/+ buffers/cache: 6100 67628
Swap: 16384 4500 11884
이러한 정보의 설명 은 대체로 다음 과 같다. 그 중 첫 번 째 줄 은 시스템 이 사용 하 는 메모리 상 태 를 전역 적 으로 설명 합 니 다. total - 총 물리 적 메모리 used - 메모리 가 사용 되 었 습 니 다. 일반적으로 이 값 은 cache + 응용 프로그램 이 사용 하 는 메모리 가 포함 되 어 있 기 때 문 입 니 다. free - 전혀 사용 되 지 않 은 메모리 shared - 응용 프로그램 공유 메모리 buffers - 캐 시, 주로 디 렉 터 리, inode 값 등에 사 용 됩 니 다. (ls 큰 디 렉 터 리 는 이 값 이 증가 하 는 것 을 볼 수 있 습 니 다) cached - 캐 시, 열 린 파일 에 사용 주의 -/+ buffers/cache: 6100 67628 줄 입 니 다. 이전 값 은 - bufffers/cache - – > 캐 시 를 포함 하지 않 습 니 다. 응용 프로그램의 물리 적 메모리 사용 상황, 즉 - bufffers/cache = used - buffers - cached 입 니 다. 그래서 이 때 응용 프로그램 은 6100 k 메모 리 를 사 용 했 습 니 다. 다음 값 은 + buffers/cache - – > 모든 공급 가능 한 프로그램 에서 사용 할 메모리 크기 를 표시 합 니 다. free 에 캐 시 값, 즉 + buffers/cache = free + buffers + cached 를 추가 하여 프로그램 에서 사용 할 수 있 습 니 다. 또한 free 명령 도 '- m' 인 자 를 사용 할 수 있 습 니 다. 이렇게 표 시 된 메모리 정 보 는 KB 가 아 닌 MB 로 계산 합 니 다. 큰 메모리 상황 에서 더욱 직관 적 입 니 다.
free -m
-----------
total used free shared buffers cached
Mem: 72 69 2 0 0 63
-/+ buffers/cache: 5 66
Swap: 16 4 11
총결산
top 명령 이나 free 명령 을 사용 하여 보 이 는 메모리 사용량 used 에는 캐 시 가 포함 되 어 있 습 니 다. 프로그램의 실제 메모리 사용 상황 을 보 려 면 used - cached - bufffers 또는 free 명령 결 과 를 직접 보 는 -/+ buffers/cache 줄 정보 가 있어 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.