Linux 시스템 진단의 메모리 기초 깊이 있는 설명
1. 배경
linux 메모리에 관해서는 free, top 등 기초 명령에 주목할 때가 많다.시스템이 이상 상황에 부딪혔을 때 메모리 문제의 근인 트레이스, 현장 진단을 할 때 심층적인 debug 능력이 부족하다.이 편폭은 심층 토론을 하지 않고 현재 시스템의 문제를 명확하게 묘사할 수 있으며 모든 SRE가 갖춰야 할 가장 기초적인 능력이다.
2. free
2.1 free 명령 원리
free는/proc/meminfo를 보고 메모리의 사용 상황을 가져옵니다.그런데/proc/meminfo 이 파일은 어떻게 왔어요?먼저/proc 디렉토리를 살펴보겠습니다.
2.2 명령 출력 소개
모든 발행판의 출력은 일정한 차이가 있다. 우리는 debian8 4.19로 한다.x 발행판을 예로 들다.
root@4f996feeb851:~# free -m
total used free shared buffers cached
Mem: 1991 1909 81 4 155 836
-/+ buffers/cache: 917 1073
Swap: 1023 1 1022
대부분의 명령 출력 의미는 man 문서에서 해석할 수 있으며, 여기에는 군더더기를 하지 않습니다.답은 긍정적입니다. 우선 버퍼와cache를 알아보겠습니다.
한 마디로 하면,buffer와cache가 사용하는 메모리는 모두 Linux 읽기와 쓰기 성능을 가속화하는 데 사용되며, 새로운 프로세스가 메모리를 필요로 한다면, 시스템은 buffer와cache가 차지하는 메모리를 회수하여 프로세스에 다시 분배하여 사용할 것이다.
2.4 기타 메모리 개념
RSS & VSZ & PSS & USS
만약 시스템의 inactive 메모리가 너무 크면 다음과 같은 조작을 통해 회수할 수 있습니다.
sync; echo 3 >/proc/sys/vm/drop_caches
3. 가상 메모리
현대 x86시스템에서 컴퓨터가 사용할 수 있는 메모리는 물리적 메모리의 상한선보다 크고 가상 메모리 메커니즘에 의존한다.Linux는 가상 메모리 메커니즘과 실제 모드 메커니즘을 지원합니다.
실제 모드에서 컴퓨터는 물리적 메모리를 직접 신청하고 가상 메모리 메커니즘에서 시스템은 디스크를 메모리의 확장으로 삼아 사용할 수 있는 메모리 크기를 증가시킨다.맵을 비추는 메커니즘을 통해 물리적 메모리와 실제 대응 관계를 저장합니다.
디스크와 메모리 사이에서 페이지를 전송하는 활동을 swapping 또는 페이지 스케줄링(paging)이라고 하고 가상 메모리로 사용되는 디스크 구역을 swap이라고 한다.
온라인으로 swap를 추가하는 방식으로 메모리 부족 문제를 임시로 완화할 수 있지만, 일반적으로 온라인으로 swap를 줄이는 작업을 직접 할 수 없기 때문에 프로세스의crash를 초래할 수 있습니다.구체적인 swap 설정 방식은 5.1swap 관련 설정을 보십시오.
4. OOM
1.What is OOM?
Out Of Memory Killer는 Linux의 시스템 보호 메커니즘으로 시스템 메모리가 부족할 때kill이 일부 프로세스를 떨어뜨려 시스템이 끊기는 것을 방지합니다.시스템은 채점 메커니즘을 통해 프로세스에 대한 살해 조작을 실시한다.기본 메커니즘은 모든 프로세스의 메모리 점용, cpu 점용 등 요소를 스캔한 다음에 (badness)를 평가하는 것입니다. 점수가 높을수록 프로세스가 kill에 의해 우선순위가 높아집니다.
2. 어떤 행동이 시스템으로 하여금 프로세스에 대해 점수를 매기게 합니까?
/proc/
4. 수동으로 점수 조정
/proc//oom_adj 이 파일은oom에서 발생할 때 어떤 프로세스가kill되어야 하는지, 범위-16-+15, 기본값은 0,
특수치 -17: 프로세스가 영원히 kill되지 않는다는 것을 나타낸다.
5. 시스템이 OOM을 터치했는지 어떻게 알아요?
/var/log/messages,/var/log/syslog 시스템 로그나 dmesg 시스템 로그 진단 도구 등을 찾을 수 있습니다
5. 메모리 관련 구성
5.1 swap 관련 구성
시스템 매개 변수를 조절하여 컴퓨터가 swap 구역을 사용하는 권한을 알려준다
1.
swappiness 0-100, 60
0: swap
60:
100: swap
2.
# sysctl vm.swappiness=VALUE
# sysctl vm.swappiness=20
# echo VALUE > /proc/sys/vm/swappiness
# echo 30 > /proc/sys/vm/swappiness
온라인을 통해 swap 구역의 크기를 늘리고 메모리 유출을 임시로 제어하며 메모리 부족 등 이상을 일으킨다.
1. root
2.
# dd if=/dev/zero of=/home/swap2G bs=1024 count=2M
3.
# chown root:root /home/swap2G
# chmod 0600 /home/swap2G
4. liunx
# mkswap /home/swap2G
5. enable
# swapon /home/swap2G
6. fstab 【 : 】
# vim /etc/fstab
/home/swap2G none swap sw 0 0
7.
#free -m
8. swap
# swapoff /home/swap2G
5.2 캐시 관련
sync; echo 3 > /proc/sys/vm/drop_caches
0:
1:
2: dentries inodes
3:
5.3 OOM 관련이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.