크롬의 총 메모리 사용량 가져 오기


28

구글 크롬 / 크롬은 여러 프로세스를 생성하기 때문에 이러한 프로세스가 총 메모리를 얼마나 많이 사용하는지 알기가 어렵습니다.

일련의 연결된 프로세스에서 사용중인 총 메모리 양을 쉽게 확인할 수있는 방법이 있습니까?


KiB에서 GiB로 인쇄되는 숫자를 변환하면 Res. 메모리 나는 기계의 RAM + 스왑 이상의 양을 얻습니다. 그래서 무언가가 과장된 것처럼 보입니다.
Ryan1729

답변:


30

점을 감안 // 메모리 : 구글 크롬을 살해 , 지금 사용하고 년 3 월 2016 년 smem를 :

# detailed output, in kB apparently
smem -t -P chrom
# just the total PSS, with automatic unit:
smem -t -k -c pss -P chrom | tail -n 1
  • chrom전체 경로 로보다 정확하게 교체 합니다. 예 /opt/google/chrome또는/usr/lib64/chromium-browser
  • 이것은 멀티 프로세스 파이어 폭스 (e10s)와 동일하게 작동합니다. -P firefox
  • smem은 내 시스템에서 추가 ~ 10-20M의 출력으로 자체보고합니다.
  • 최상위 프로세스와 달리 루트 프로세스를 정확하게 모니터링하려면 루트 액세스 권한이 필요 sudo smem합니다.
  • smem이 좋은 도구 인 이유와 출력을 읽는 방법에 대한 자세한 내용 은 이 SO 답변 을 참조하십시오.

이것이 나를 위해 일하고 있는지 확실하지 않습니다. 두 번째 명령을 실행하면의 반환 값이 나타납니다 338.0M. 너무 낮습니다. 시스템 모니터를 실행하면 11 개의 크롬 프로세스가 있고 각각 70MB와 400MB의 RAM을 사용하고 있음을 알 수 있습니다. 시스템 모니터가 잘못보고하는지 확실하지 않습니다.
sixtyfootersdude

Kali Linux 2017.1 배포판의 smem과 동일한 문제로, 출력은 5 개의 인스턴스와 최소 30 개의 탭이있는 크롬에서 사용되는 램의 800Mo입니다. 그리고 시스템 모니터도 smem에 동의하지 않습니다. 누구든지 이것에 대한 해결책을 찾았습니까? (답변과 참고에 감사드립니다)
matthieusb

1
귀하의 의견은 별도의 질문이 필요합니다 (충돌 프로그램의 전체 결과물 포함). 댓글에 링크를 게시하십시오.
eddygeek

1
크롬과 크롬을 모두 실행하는 경우 두 가지 모두를 볼 수 있기 때문에 chrome대신에 사용 chorm합니다.
RJ

1
예를 들어, 같은 smem것을 사용하여 자체 출력에서 제외 할 수 있습니다 . 이것은 대괄호 자체가 아닌 대괄호 내부 를 일치시켜 작동 합니다. [c]hromesmem -tkP '[c]hrome'c
wjandrea

3

나는 그것이 최선의 해결책이 아니라고 확신하지만 여전히 나를 위해 일한다.

#!/bin/sh
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $5}' | awk '{sum += $1 } END { print sum }' 
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $6}' | awk '{sum += $1 } END { print sum }' 

참고 : [/]opt/google/chrome/chrome시스템에 적합한 것으로 변경하십시오 ( 예 : Mac OS X를 사용하는 경우 grep "chrome").


1
이것은 숫자를 인쇄한다는 점에서“작동”합니다. 그러나 여러 프로세스간에 공유되는 메모리가 여러 번 계산되므로이 수가 유용한 것은 아닙니다.
Gilles 'SO- 악한 중지'

실제로 크롬은 일반적인 데스크톱에서 가장 큰 메모리 호그이며 크롬 프로세스를 종료하면 시스템이 빠르게 터지기 때문에 여전히 충분하다고 생각합니다.
Sridhar Sarnobat 님이

왜 두 awk명령입니까? 즉, 왜 안 ... | awk '{sum += $6} END {print sum}'됩니까?
wjandrea

2
FWIW, 더 짧고 명확한 버전이 있습니다 :ps aux | grep "/opt/google/chrome/chrome" | awk '{vsz += $5; rss += $6} END { print "vsz="vsz, "rss="rss }'
wjandrea

1
@Rushi 귀찮게하지 마십시오. 이 솔루션은 의미있는 숫자를 제공하지 않습니다. smem최고 답변 당 사용하십시오 . FWIW이지만 별명으로는 너무 복잡하기 때문에 스크립트 또는 함수로 구현합니다.
wjandrea

2

이것을 실행 :

perl -e '$a="x"x1000000000;sleep(10);print"done\n"'

1.8GB RAM을 차지합니다. 따라서 이것을 실행할 것으로 예상됩니다.

perl -e '$a="x"x1000000000;fork;fork;fork;fork;sleep(10);print"done\n"'

16 배나 많이 걸릴 것입니다. 그러나 그렇지 않습니다.

이는 Linux 커널의 지능적인 기록 중 복사로 인한 것입니다. '$ a'의 내용이 변경되지 않기 때문에 '$ a'의 메모리를 공유 할 수 있습니다. 그러나 '$ a'가 변경 될 때까지만 공유 상태를 유지합니다. 이 경우 변경된 섹션이 복사되고 RAM을 차지하기 시작합니다.

커밋시 복사 오버 커밋 된 메모리 양을 측정 할 수 있는지 여부는 모르겠습니다. 그러나 적어도 이것은 당신의 과잉 계산을 설명합니다.


0

프로세스 합계를 빠르게 계산하십시오.

:

  • mem_usage에보chrome://system/ 고 된 모든 항목으로 이동하여 선택하십시오.
  • SublimeText에 붙여 넣기
  • SelectAll (CMD + 'A') 및 SelectAllLines (CMD + SHIFT + 'L')
  • CMD + 오른쪽 (eol로 이동), 백 스페이스, 백 스페이스, 백 스페이스, ALT + 왼쪽, CMD + 백 스페이스
  • 백 스페이스, 유형 '+', CMD + 'A', CMD + 'C'
  • 터미널 열기 , 실행 python, CMD + V, 입력

짜잔! "쉬운"... 🤓😅

PS-바로 가기 닌자 및 80/90 년대 격투 게임 플레이어는이 솔루션에 아무런 문제가 없습니다


0

vim과 awk가있는 해결책을 찾았습니다. chrome : // system을 열고 mem_usage를 펼친 후 vim에 복사하고 regexp를 실행하십시오.

:%s/\D*\(\d*\).MB.*/\1

MB 앞에 숫자 만 남습니다. 파일을 저장하고 실행

cat file | awk '{sum += $1} END {print sum}'

vim regexp 코드를 sed로 변환 할 수 없습니다.


0

USS 가능한 크로스 플랫폼입니다

USS (Unique Set Size)는 프로세스에 고유하고 프로세스가 지금 종료되면 해제되는 메모리입니다.

psutil> 4.0 Python 라이브러리가 액세스 할 수 있습니다

여기에 사용하겠습니다

sudo python3 -c "import psutil;print(sum(p.memory_full_info().uss for p in psutil.Process(pid=292).children())/1024/1024);"

여기서 pid = 292는 Activity Monitor의 대부분 외부 프로세스의 PID입니다.


-1

크롬 / 크롬에는 작업 관리자가 있지만 사용 된 총 메모리를 제공하지는 않습니다. 작업 관리자의 "nerds에 대한 통계"링크는 chrome : // memory-redirect /로 연결되어 사용 된 총 메모리를 나열합니다. 이 숫자들에 대한 외부 검증과 명령 행에 대한 정보를 얻는 방법이 있으면 좋을 것입니다. 그러나 이것으로 더 많은 작업을 수행 할 수 있습니다.


2
이 답변은 더 이상 유효하지 않습니다. bugs.chromium.org/p/chromium/issues/detail?id=588790
eddygeek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.