![메모리 사용량을 자세히 확인하는 방법](https://linux55.com/image/179436/%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EC%82%AC%EC%9A%A9%EB%9F%89%EC%9D%84%20%EC%9E%90%EC%84%B8%ED%9E%88%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
top
프로세스가 사용하는 메모리 양을 표시할 수 있는 , ps
, , (및 기타) 명령이 있지만 pmap
이는 총 메모리만 표시합니다.
free -g
명령 출력을 사용하여 total
, used
및 다음을 볼 수 있습니다.shared
buffers
cached
total used free shared buffers cached
Mem: 126 86 39 5 1 80
-/+ buffers/cache: 4 121
Swap: 3 0 3
각 프로세스의 메모리 사용량을 자세히 확인할 수 있는 방법이 있나요? 예를 들어 다음과 같습니다.
PID USER MEM USD SHRD BUF CAH command
23 monitoring 23kb 12kb 10kb 23kb 5kb du
위와 같은 방법이 불가능할 경우, 구체적인 메모리 용량을 확인할 수 있는 방법이 있나요? (예를 들어 캐시 메모리를 확인하고 각 프로세스가 얼마나 많은 메모리를 사용하는지 확인하고 싶습니다.)
답변1
저는 Centos를 갖고 있지 않지만 매뉴얼 페이지는 제가 이 문제를 조사하기 위해 사용하고 있는 Linux Mint와 관련된 것 같습니다. 이러한 기능이 IPC(프로세스 간 통신 기능)입니다.
공유 리소스는 (거의 정의에 따라) 특정 프로세스에 속하지 않습니다. 따라서 모든 것을 보고하는 것은 많은 경우 이중으로 계산됩니다.
다음을 사용하여 나열된 공유 메모리 세그먼트를 확인 ipcs
하고 자세한 내용을 얻을 수 있습니다.
ipcs | while read -r _ Id _; do
[[ $Id =~ [0-9] ]] && ipcs -u -m -i $Id
done | more
이는 cpid
(작성자 PID) 및 lpid
(마지막 방문자 PID)를 유지하는 것으로 보입니다. 내가 아는 한, 나에게는 두 종류의 공유 메모리가 있다.
(a) 내 제어판(mate-panel)은 표시되는 모든 응용 프로그램(mintUpdate, mate-sensors-ap, mate-screensave)과 공유됩니다.
(b) 내 디스플레이 서버(Xorg)는 편집 메뉴를 사용할 수 있는 모든 창(xed, 터미널)과 공유됩니다.
장치 캐시는 또한 비프로세스입니다. 파일을 사용하는 프로세스가 종료된 지 오래 된 후에도 이전에 사용된 파일과 연결되어 있습니다. 이 공간은 원하는 경우 즉시 삭제할 수 있지만 최근에 사용한 파일의 일부 블록을 다시 사용할 수 있기를 바라며 유지됩니다.
가상 메모리는 실제로 사용되지 않는 예약으로 인해 과도하게 사용되는 경우가 많으므로 수명이 짧을 수도 있습니다.