각 PID에 대한 명령을 캡처하고 GIGA에서 명령의 메모리 소비를 계산합니다(정렬 방식).

각 PID에 대한 명령을 캡처하고 GIGA에서 명령의 메모리 소비를 계산합니다(정렬 방식).

Linux Redhat 시스템에서 메모리를 높은 수준에서 낮은 수준으로 소비하는 명령을 확인하기 위해 이 방법을 실행했습니다.

GIGA에서 그 값을 얻기 위해 이 메소드를 1024/1024로 작성했습니다.

ps -eo size,pid,user,command --sort -size |
awk '{ hr=$1/1024/1024 ; printf("%13.2f GIGA ",hr) }
     { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' |
cut -d "" -f2 | cut -d "-" -f1 | more

        58.13 GIGA java
        38.39 GIGA /home/mc/lok_agent/mc.pl
        36.00 GIGA /usr/lib/jvm/java
        23.99 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
        19.42 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
        19.39 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
        19.37 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
        17.42 GIGA java
        15.43 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
        15.42 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
        15.23 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
        10.18 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
         7.22 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
         7.02 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
         5.71 GIGA /usr/jdk64/jdk1.8.0_112/bin/java
         5.57 GIGA /usr/bin/gnome
.
.
.

지금까지 위 명령의 총합이 200G를 넘었습니다.

하지만 free -g를 실행하면 168에 익숙해집니다.

free -g
              total        used        free      shared  buff/cache   available
Mem:            251         168           2           0          81          82
Swap:            15          11           4

그래서 내 접근 방식에 문제가 있습니다.

ps -eo size,pid,user,command --sort -size |     awk '{ hr=$1/1024/1024 ; printf("%13.2f GIGA ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' |    cut -d "" -f2 | cut -d "-" -f1 |more

내 구문에 어떤 문제가 있습니까?

답변1

프로세스에 사용된 메모리를 측정하는 방법에는 여러 가지가 있습니다. 문제는 프로세스가 메모리를 공유하고(동일한 공유 라이브러리를 사용하는 두 개의 프로세스가 동시에 메모리에 있다고 상상해 보십시오) 상주(RAM 칩), 스왑(디스크) 또는 가상(둘 중 하나/둘 다)이 가능하다는 것입니다. .

크기 대신 RSS를 사용하면 스와핑/더미 문제가 제거되지만 공유 문제는 제거되지 않습니다.

(아마도) 다음 버전의 procps에는 ps 및 top이 포함되어 PSS 및 USS 필드를 비례/고유 세그먼트 크기에 사용할 수 있게 됩니다. 그들은 공유 부분을 할당하거나(예: 공유 라이브러리를 사용하는 3개의 프로세스가 라이브러리 크기의 1/3을 얻음) 공유 부분을 무시합니다.

관련 정보