>  기사  >  운영 및 유지보수  >  Linux 메모리 보기 및 관리

Linux 메모리 보기 및 관리

巴扎黑
巴扎黑원래의
2017-08-02 16:07:211673검색

시스템 유지 관리 과정에서 언제든지 CPU 사용량을 확인하고 해당 정보를 기반으로 시스템 상태를 분석해야 할 수 있습니다. CentOS에서는 top 명령을 사용하여 CPU 사용량을 볼 수 있습니다. top 명령을 실행하면 CPU 사용량 상태가 전체 화면과 대화 모드로 표시됩니다. top-based 명령을 사용하면 디스플레이 모드 등을 제어할 수 있습니다. top을 종료하는 명령은 q입니다(top이 실행되는 동안 q 키를 한 번 누르십시오).

top 명령은 Linux에서 일반적으로 사용되는 성능 분석 도구로, 시스템 내 각 프로세스의 리소스 사용량을 실시간으로 표시할 수 있습니다. Windows 작업 관리자와 유사합니다.

top 명령을 사용하여 직접 볼 수 있습니다. %MEM의 내용. oracle 사용자의 프로세스 메모리 사용량을 보려면 다음 명령을 사용하면 됩니다.
  $ top -u oracle

내용 설명:

PID: ID the process
USER: 프로세스 소유자
PR: 프로세스의 우선순위 수준, 작을수록 실행될 우선순위
NInice: 값
VIRT: 프로세스가 차지하는 가상 메모리
RES: 프로세스가 차지하는 물리적 메모리 프로세스
SHR: 프로세스가 사용하는 공유 메모리
S: 프로세스 상태. S는 수면 중, R은 실행 중, Z는 좀비 상태, N은 프로세스의 우선 순위 값이 음수임을 의미
  %CPU: 프로세스가 차지하는 CPU 사용률
  %MEM: 실제 메모리와 전체 메모리의 비율 프로세스가 사용하는 메모리
 TIME+: 프로세스가 시작된 후 프로세스가 차지한 총 CPU 시간, 즉 CPU 사용 시간의 누적 값입니다.
COMMAND: 프로세스 시작 명령 이름

작업 예:

명령줄에 "top"을 입력합니다.

to start top

top의 전체 화면 대화 모드는 시스템 정보 표시줄, 명령의 3가지 부분으로 나눌 수 있습니다. 입력바, 프로세스 목록바.

 첫 번째 부분 - 상단 시스템 정보 표시줄:

 첫 번째 줄(상단):

  "00:11:04"는 시스템의 현재 시간입니다.

  "3:35"는 이후의 시간입니다. 현재까지 시스템이 시작되었습니다. 운영 시간

  "2 사용자"는 현재 시스템에 로그인된 사용자, 보다 정확하게는 해당 사용자에 로그인된 단말기 수를 의미합니다. - 동일한 사용자가 시스템 내 여러 단말기에 동시에 접속한 경우 시간은 시스템에 대한 다중 사용자 연결로 간주되며, 여기서 사용자 수는 터미널 수로도 표시됩니다.

  "부하 평균"은 현재 시스템 부하의 평균이며 다음 세 값은 다음과 같습니다. 1분 전, 5분 전, 15분 전 프로세스의 평균입니다. 숫자, 일반적으로 이 값이 CPU 수를 초과하면 CPU가 현재 시스템에 포함된 프로세스를 로드하는 데 어려움을 겪는다고 간주할 수 있습니다. ;

 두 번째 줄(작업):

  “total”은 현재 시스템의 총 프로세스 수입니다.

   "1 running"은 현재 실행 중인 프로세스 수입니다. 대기 상태에서 "0 중지됨"은 중지된 시스템 프로세스 수입니다. "0 좀비"는 복원된 시스템 프로세스 수입니다.

 세 번째 줄(Cpus):

  을 나타냅니다.

 네 번째 줄(Mem):

  전체 메모리, 현재 사용량, 사용 가능한 메모리 및 버퍼에서 사용되는 메모리 양을 나타냅니다. 카테고리는 네 번째 줄(Mem)과 동일하지만 여기서는 스왑 파티션(Swap)의 용도를 반영합니다. 일반적으로 스왑 파티션(Swap)을 자주 사용하는 것은 물리적 메모리 부족으로 인한 것으로 간주됩니다.

 두 번째 부분 - 중간 부분의 내부 명령 프롬프트 표시줄:

 top이 실행 중일 때 top의 내부 명령을 통해 프로세스의 디스플레이 모드를 제어할 수 있습니다. 내부 명령은 다음과 같습니다.

  s

   - 화면 업데이트 빈도 변경

 l - 첫 번째 부분의 첫 번째 줄에 있는 상단 정보 표시를 끄거나 활성화합니다.

 t - 두 번째 부분을 끄거나 활성화합니다. 첫 번째 부분의 Tasks 라인과 Cpus 정보의 세 번째 라인 Representation

 m - 첫 번째 부분의 네 번째 라인에 Mem 및 Swap 정보 표시를 끄거나 활성화

 N - 프로세스 목록을 순서대로 표현 PID 크기 (후술 3부에서 설명) P - CPU 사용량 사용 메모리 사용량 순으로 프로세스 목록 정렬 (후부 3부에서 설명)

 M - 메모리 사용량 순으로 프로세스 목록 정렬 (후부 3부에서 설명) 세 번째 부분) h - 도움말 표시

 n - 프로세스 목록에 설정 프로세스 수 표시

 q - 상단 종료

 s -

화면 업데이트 주기 변경

 세 번째 부분 - 프로세스 목록 표시줄 하단 부분:

 PID로 구분된 프로세스 목록은 설정된 화면을 기준으로 합니다. 업데이트 시간은 정기적으로 업데이트됩니다. 여기서 표시 방법은 상단 내부 명령을 통해 제어할 수 있습니다.

pmap

프로세스에 따라 프로세스 관련 정보가 차지하는 메모리를 확인할 수 있습니다. (프로세스 번호는 ps를 통해 확인할 수 있습니다.)

$ pmap -d 5647

ps

  다음 예에서 볼 수 있듯이:
  $ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 여기서 rsz는 실제 메모리입니다
  $ ps -e -o 'pid, comm, args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk

  rsz가 실제 메모리인 경우 위의 예에서는 메모리 기준으로 큰 것부터 작은 것까지 정렬을 구현합니다.

우리는 일반적으로 Linux free 명령으로 메모리 보기:
[root@scs-2 tmp]# free
                                                                                 1106 52 2668236
-/+ 버퍼/캐시: 471116 2795064
스왑: 2048276 80160 1968116

다음은 이러한 값에 대한 설명입니다.

total : 총 물리적 메모리 크기입니다.
used: 얼마나 크게 사용되었는지.
무료: 가능한 한 많이.
공유: 여러 프로세스가 공유하는 총 메모리 양입니다.
버퍼/캐시: 디스크 캐시의 크기입니다.
세 번째 줄(-/+ 버퍼/캐시):
used: 사용된 양입니다.
무료: 가능한 한 많이.
네 번째 줄은 설명할 필요가 없습니다.
차이: 두 번째 줄(mem)의 사용/사용 가능 여부와 세 번째 줄(-/+ 버퍼/캐시)의 사용/사용 가능 여부의 차이입니다. 두 가지의 차이점은 사용 관점에 있습니다. 첫 번째 줄은 OS의 경우 버퍼/캐시가 모두 사용되므로 사용 가능한 메모리는 16176KB이고 사용되는 메모리는 3250004KB입니다. +Application(X, oracle 등)을 사용하는 커널(OS)에서 사용되는 +buffers+cached 세 번째 줄은 애플리케이션의 관점에서 buffers/cached가 Available과 동일합니다. 파일 읽기 성능을 향상시키기 위해 애플리케이션이 메모리를 사용해야 할 때 버퍼/캐시가 빠르게 재활용됩니다.
따라서 애플리케이션 관점에서 볼 때 사용 가능한 메모리 = 시스템 사용 가능한 메모리+버퍼+캐시된 메모리입니다.
위의 예와 같이:
2795064=16176+110652+2668236

다음 단계는 메모리가 언제, 어떤 방식으로 교체되는지 설명하는 것입니다. 사용 가능한 메모리가 정격 값보다 작으면 교체가 발생합니다. 등급을 보는 방법 :

cat /proc /meminfo


[root@scs-2 tmp]# cat /proc /meminfo
memtotal : 3266180 kb

memfree : 17456 kb

buffers : 111328 kb
cached : 2664024 KB
SwapCached:             0 kB
활성:          467236 kB
비활성:         2644928 kB
HighTotal:            0 kB
HighFree:           0 kB
LowTo tal:         3266 180 kB
LowFree: 17456 kB
SwapTotal: 2048276 kB
SwapFree: 1968116 kB
Dirty: 8 kB
쓰기 저장:                 0 kB
매핑:            345360 kB
Slab:            112344 kB
Committed_AS:       535292 kB
PageTables:         2340kB
Vmalloc총계: 53687 0911kB
Vmalloc사용됨: 272696kB
VmallocChunk: 536598175kB
HugePages_Total: 0
HugePages_Free: 0
거대한 페이지 크기: 2048 kB

free -m 사용 결과:
[root@scs-2 tmp]# free -m

캐시된 총 사용 버퍼

Mem: 3189 3173 16 0 107 2605
-/+ 버퍼/캐시: 460 2729
스왑: 2000 78 1921


/proc/kcore 파일(메모리 이미지)의 크기 보기:
[root@scs-2 tmp]# ll -h /proc/kcore
-r--------- 1 루트 루트 4.1G 6월 12일 12:04 /proc/kcore

설명:

메모리 사용량 측정

프로세스가 차지하는 메모리 양을 측정합니다. Linux는 매우 편리한 방법을 제공합니다. 실제로 모든 정보를 제공합니다. top과 같은 도구도 이를 사용하여 해당 정보를 얻습니다.

/proc/meminfo 머신 메모리 사용량 정보

/proc/pid/maps pid는 프로세스 번호로, 현재 프로세스가 점유하고 있는 가상 주소를 나타냅니다.

/proc/pid/statm 프로세스가 차지하는 메모리

[root@localhost ~]# cat /proc/self/statm

654 57 44 0 0 334 0

출력 설명

CPU 및 CPU0. . . 각 줄의 각 매개변수의 의미(첫 번째 줄을 예로 들어)는 다음과 같습니다.

매개변수 설명/proc//status

Size(페이지) 작업 가상 주소 공간의 크기 VmSize/4

Resident(페이지 ) 애플리케이션이 실행 중입니다. 사용된 물리적 메모리의 크기 VmRSS/4

Shared(pages) 공유된 페이지 수 0

Trs(pages) 프로그램이 소유한 실행 가능한 가상 메모리의 크기 VmExe/4

Lrs (페이지) 작업에 매핑된 가상 메모리 메모리 공간 라이브러리의 크기 VmLib/4

Drs(페이지) 프로그램 데이터 세그먼트 및 사용자 상태 스택의 크기(VmData+ VmStk) 4

dt(페이지) 04

머신의 사용 가능한 메모리 보기

/proc/28248/ >free

캐시된 총 사용 가능한 공유 버퍼

Mem: 1023788 926400 97388 0 134668 503688

-/+ 버퍼/캐시: 288044 735744

스왑 : 1959920 8 9608 1870312

free 명령을 통해 머신의 여유 메모리를 확인해 보면 free 값이 매우 작다는 것을 알 수 있습니다. 이는 주로 Linux에서는 메모리가 헛되이 사용되지 않는다는 생각이 있기 때문에 다음 사용을 용이하게 하기 위해 일부 데이터를 최대한 캐시하고 버퍼링하기 때문입니다. 하지만 실제로 이러한 메모리는 즉시 사용할 수 있습니다.

그래서 free memory=free+buffers+cached=total-used

top 명령은 Linux에서 일반적으로 사용되는 성능 분석 도구입니다. Windows와 마찬가지로 시스템의 각 프로세스의 리소스 사용량을 실시간으로 표시할 수 있습니다. 작업 관리자. 다음은 사용법을 자세히 설명합니다.

top - 02:53:32 최대 16일, 6:34, 사용자 17명, 평균 로드: 0.24, 0.21, 0.24
작업: 총 481개, 실행 중 3개, 절전 중 474개, 중지됨 0개, 좀비 4개
Cpu : 10.3%us, 1.8%sy, 0.0%ni, 86.6%id, 0.5%wa, 0.2%hi, 0.6%si, 0.0%st
Mem: 총 4042764k, 사용된 4001096k, 무료 41668k, 버퍼 383536k
스왑: 2104472 케이 총 7900k 사용됨, 2096572k 무료, 1557040k 캐시됨

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32497 jacky 20 0 669m 222m 3 1m R 10 5.6 29:27.62 firefox
478 8 유윙 20 0 257m 18m 13m S 5 0.5 5:42.44 konsole
5657 Liuxiaof 20 0 585m 159m 30m S 4 4.0 5:25.06 firefox
4455 xiefc 20 0 5 42m 124m 30m R 4 3.1 7:23.03 firefox
6188 리우시아of 20 0 191m 17m 13m S 4 0.5 0 :01.16 konsole


통계정보 영역의 처음 5줄은 시스템의 전반적인 통계정보입니다. 첫 번째 줄은 작업 큐 정보로, uptime 명령의 실행 결과와 동일합니다. 내용은 다음과 같습니다.

01:06:48 현재 시간
up 1:22 시스템 실행 시간(시:분 형식)
1명의 사용자 현재 로그인된 사용자 수
부하 평균: 0.06, 0.60, 0.48 시스템 로드, 즉 작업 대기열 평균 길이입니다.
세 가지 값은 1분 전, 5분 전, 15분 전부터 현재까지의 평균 값입니다.


두 번째와 세 번째 줄은 프로세스 및 CPU 정보입니다. CPU가 여러 개인 경우 두 개 이상의 라인이 필요할 수 있습니다. 내용은 다음과 같습니다.

작업: 총 29개 총 프로세스 수
running 실행 중인 프로세스 수
28 Sleeping 대기 중인 프로세스 수
0 중지됨 중지된 프로세스 수
0 Zombie 좀비 프로세스 수
Cpu: 0.3% us 사용자 공간 CPU 점유 비율
1.0% sy 커널 공간이 차지하는 CPU 비율
0.0% ni 사용자 프로세스 공간에서 우선순위가 변경된 프로세스가 차지하는 CPU 비율
98.7% id 유휴 CPU 비율
0.0% wa CPU 시간 대기 비율 입력 및 출력용
0.0% hi
0.0% si


마지막 두 줄은 메모리 정보입니다. 내용은 다음과 같습니다.

Mem: 총 191272k 총 물리 메모리
173656k 사용 사용된 스왑 영역
192772k 무료 무료 스왑 영역의 총량
123988k 캐시됨 버퍼링된 스왑 영역의 총량.换 메모리에 있는 콘텐츠가 교환 영역으로 대체된 후 메모리로 대체되지만 사용에 사용된 교환은 아직 포함되지 않았습니다.
값은 이러한 콘텐츠가 이미 존재하는 교환 영역의 크기입니다. 기억 속에.
해당 메모리를 다시 스왑 아웃할 때 스왑 영역에 쓸 필요는 없습니다.


프로세스 정보 영역의 통계 정보 영역 아래에 각 프로세스의 세부 정보가 표시됩니다. 먼저, 각 열의 의미를 이해해 봅시다.

일련번호 열 이름 의미

a PID 프로세스 ID

b PPID 상위 프로세스 ID
c RUSER 실제 사용자 이름

d UID 프로세스 소유자의 사용자 ID

e USER 프로세스 소유자의 사용자 이름
f GROUP 프로세스의 그룹 이름 owner
g TTY 시작 프로세스의 터미널 이름입니다. 터미널에서 시작되지 않은 프로세스는 ?h PR 우선순위
i NI nice 값으로 표시됩니다. 음수 값은 높은 우선 순위를 나타내고 양수 값은 낮은 우선 순위를 나타냅니다.
j P 마지막으로 사용된 CPU, 다중 CPU 환경에서만 의미가 있습니다.
k %CPU 마지막 업데이트 이후 점유된 CPU 시간의 백분율
l TIME CPU 프로세스가 사용한 총 시간, 단위 초
m TIME+ 프로세스가 사용한 총 CPU 시간, 단위 1/100초
n %MEM 프로세스가 사용한 물리적 메모리 비율
o VIRT 프로세스가 사용한 총 가상 메모리, 단위 kb . VIRT=SWAP+RES
p SWAP 스왑 아웃되는 프로세스에서 사용하는 가상 메모리의 크기(kb)입니다.
q RES 프로세스에서 사용하고 교체되지 않은 물리적 메모리의 크기(kb)입니다. RES=CODE+DATA
r CODE 실행 코드가 차지하는 물리적 메모리 크기(kb)
s DATA 실행 코드 이외의 부분(데이터 세그먼트 + 스택)이 차지하는 물리적 메모리 크기(kb)
t SHR 공유 메모리, 단위 kb
u nFLT 페이지 결함 수
v nDRT 마지막 쓰기 이후 수정된 페이지 수입니다.
w S 프로세스 상태.
              D = 중단 없는 절전 상태
                                                                                . WCHAN 프로세스가 절전 모드인 경우 절전 시스템 함수 이름을 표시합니다.
z 플래그 작업 플래그, sched.h를 참조하세요.


기본적으로 더 중요한 PID, USER, PR, NI, VIRT, RES, SHR, S, %CPU, %MEM, TIME+, COMMAND 열이 표시됩니다. 표시되는 내용은 아래 단축키를 이용하여 변경할 수 있습니다.
표시된 콘텐츠 변경 f 키를 눌러 표시된 콘텐츠를 선택할 수 있습니다. f 키를 누르면 열 목록이 표시됩니다. a-z를 눌러 해당 열을 표시하거나 숨기세요. 마지막으로 Enter 키를 눌러 확인하세요.
열 표시 순서를 변경하려면 o 키를 누르세요. 소문자 a-z를 누르면 해당 열이 오른쪽으로 이동하고, 대문자 A-Z를 누르면 해당 열이 왼쪽으로 이동합니다. 마지막으로 Enter 키를 눌러 확인합니다.
대문자 F 또는 O 키를 누른 다음 a-z를 눌러 해당 열을 기준으로 프로세스를 정렬합니다. 대문자 R 키는 현재 정렬을 반전시킵니다.



================================

top 명령을 사용하는 동안 다음을 사용할 수도 있습니다. 일부 대화형 명령. 다른 매개변수의 기능을 완료합니다. 이러한 명령은 바로 가기 키를 통해 실행됩니다.

: 즉시 새로고침하세요.
P: CPU 사용량을 기준으로 정렬합니다.
T: 시간과 누적된 시간에 따라 정렬합니다.
q: top 명령을 종료합니다.
m: 메모리 정보 표시를 전환합니다.

t: 프로세스 및 CPU 상태 정보를 표시하도록 전환합니다.

c: 명령 이름 표시를 전환하고 명령줄을 완성합니다.

M: 사용된 메모리 크기에 따라 정렬합니다.

W: 현재 설정을 ~/.toprc 파일에 씁니다. 이는 최상위 구성 파일을 작성하는 데 권장되는 방법입니다.

보시다시피 top 명령은 시스템 모니터링을 위한 매우 강력한 도구이며, 이는 시스템 관리자에게 특히 중요합니다. 그러나 시스템 리소스를 많이 소모한다는 단점이 있습니다.

응용 예
top 명령을 사용하여 지정된 사용자를 모니터링합니다. 기본값은 모든 사용자의 프로세스를 모니터링하는 것입니다. 지정된 사용자의 상태를 확인하려면 터미널에서 "U" 키를 누르고 사용자 이름을 입력하면 시스템이 지정된 사용자의 프로세스 실행 인터페이스로 전환됩니다.
a. 기능
free 명령은 메모리 사용량을 표시하는 데 사용되며 사용 권한은 모든 사용자에게 있습니다.
b.Format
free [-b -k -m] [-o] [-s 지연] [-t] [-V]
c. 주요 매개변수
-b -k -m: 각각 바이트(KB, MB)는 메모리 사용량을 단위로 표시합니다.
-s 지연: 메모리 사용량을 표시하는 시간(초)을 표시합니다.
-t: 메모리 합계 열을 표시합니다.
-o: 버퍼 조정 열을 표시하지 않습니다.
d.Application 예제
free 명령은 메모리 사용량을 확인하는 데 사용되는 주요 명령입니다. top 명령과 비교하면 사용이 간편하고 시스템 리소스를 거의 차지하지 않는다는 장점이 있습니다. -S 매개변수를 통해 free 명령을 사용하면 메모리 사용량을 지속적으로 모니터링할 수 있어 편리한 실시간 모니터로 활용할 수 있다.
#free -b -s5
이 명령을 사용한 후 터미널은 5초마다 업데이트되는 메모리 사용량(바이트 단위)을 지속적으로 보고합니다.

위 내용은 Linux 메모리 보기 및 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.