Nhận tổng mức sử dụng bộ nhớ của chrome


28

Vì google chrome / crom sinh ra nhiều quá trình, thật khó để xem tổng số bộ nhớ mà các quá trình này sử dụng trong tổng số.

Có cách nào dễ dàng để xem tổng số bộ nhớ mà một loạt các quá trình được kết nối đang sử dụng không?


Nếu tôi chuyển đổi các số in ra từ KiB sang GiB thì ngay cả đối với Res. Bộ nhớ tôi nhận được nhiều hơn dung lượng RAM cộng với trao đổi. Vì vậy, có vẻ như một cái gì đó đang được tính quá mức.
Ryan1729

Câu trả lời:


30

Cho rằng google đã giết chrome: // bộ nhớ vào tháng 3 năm 2016, tôi hiện đang sử dụng 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
  • để chính xác hơn thay thế chrombằng đường dẫn đầy đủ, ví dụ /opt/google/chromehoặc/usr/lib64/chromium-browser
  • điều này hoạt động tương tự với firefox đa xử lý (e10s) với -P firefox
  • hãy cẩn thận, smem báo cáo chính nó trong đầu ra, thêm ~ 10-20M trên hệ thống của tôi.
  • Không giống như đầu trang, nó cần quyền truy cập root để giám sát chính xác các quy trình root - sử dụng sudo smemcho điều đó.
  • xem câu trả lời SO này để biết thêm chi tiết về lý do tại sao smem là một công cụ tốt và cách đọc đầu ra.

Tôi không chắc chắn rằng điều này đang làm việc cho tôi. Khi tôi chạy lệnh thứ hai, tôi nhận được giá trị trả về là 338.0M. Đây là quá thấp. Khi tôi chạy System Monitor, tôi có thể thấy rằng có 11 quy trình chrome và mỗi quy trình đang chiếm từ 70MB đến 400 MB RAM. Không chắc chắn nếu System Monitor báo cáo không chính xác hay không.
Sixty feetersdude

Vấn đề tương tự đối với smem trên bản phân phối Kali Linux 2017.1, đầu ra là 800Mo ram được sử dụng bởi chrome với 5 trường hợp và ít nhất 30 tab ... Và trình giám sát hệ thống cũng không đồng ý với smem. Có ai tìm ra giải pháp cho việc này chưa ? (Cảm ơn câu trả lời và các tài liệu tham khảo)
matthieusb

1
Nhận xét của bạn xứng đáng có một câu hỏi riêng biệt (với đầu ra đầy đủ của các chương trình xung đột). Chỉ cần đăng liên kết trong bình luận.
eddygeek

1
Tôi sẽ sử dụng chromethay vì chỉ chormvì nếu bạn đang chạy cả chrome và crom, bạn sẽ thấy tổng số cho cả hai.
RJ

1
Bạn có thể loại trừ smemkhỏi đầu ra của chính nó bằng cách sử dụng một cái gì đó như [c]hrome, ví dụ smem -tkP '[c]hrome'. Điều này hoạt động bằng cách khớp với cbên trong dấu ngoặc vuông chứ không phải chính dấu ngoặc.
wjandrea

3

Tôi chắc chắn rằng đó không phải là giải pháp tốt nhất, nhưng nó vẫn hoạt động với tôi:

#!/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 }' 

Lưu ý: thay đổi [/]opt/google/chrome/chromethành thứ gì đó phù hợp với hệ thống của bạn, ví dụ: nếu bạn đang dùng Mac OS X (đơn giản là grep "chrome"nó sẽ hoạt động).


1
Cái này hoạt động trên mạng vì nó in một số. Tuy nhiên, con số này không hữu ích lắm vì bộ nhớ được chia sẻ giữa nhiều quá trình được tính nhiều lần.
Gilles 'SO- đừng trở nên xấu xa'

Tôi tưởng tượng trong thực tế nó vẫn đủ tốt bởi vì Chrome là bộ nhớ lớn nhất trên các máy tính để bàn thông thường và khi bạn tiêu diệt các quá trình chrome, hệ thống của bạn sẽ trở nên nhanh chóng.
Sridhar Sarnobat

Tại sao hai awklệnh? Đó là, tại sao không chỉ ... | awk '{sum += $6} END {print sum}'?
wjandrea

2
FWIW, đây là phiên bản ngắn hơn, rõ ràng hơn:ps aux | grep "/opt/google/chrome/chrome" | awk '{vsz += $5; rss += $6} END { print "vsz="vsz, "rss="rss }'
wjandrea

1
@Rushi Đừng bận tâm. Giải pháp này không đưa ra một con số có ý nghĩa. Sử dụng smemtheo câu trả lời hàng đầu. Mặc dù FWIW, tôi sẽ triển khai nó dưới dạng tập lệnh hoặc hàm, vì nó quá phức tạp đối với bí danh.
wjandrea

2

Chạy này:

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

chiếm 1,8 GB RAM. Vì vậy, bạn sẽ mong đợi chạy này:

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

sẽ mất 16 lần như vậy. Nhưng nó không.

Điều này là do bản sao thông minh của nhân Linux: Vì nội dung của '$ a' không thay đổi, nên có thể chia sẻ bộ nhớ của '$ a'. Nhưng nó sẽ chỉ được chia sẻ cho đến khi '$ a' được thay đổi. Khi điều đó xảy ra, phần thay đổi sẽ được sao chép và bắt đầu chiếm RAM.

Tôi không biết liệu bạn có thể đo được bao nhiêu bộ nhớ khi sao chép quá mức mà tôi không biết. Nhưng ít nhất điều này giải thích cho việc đếm quá mức của bạn.


0

Chỉ cần nhanh chóng tính tổng của các quá trình.

Trên máy Mac :

  • đi đến chrome://system/và chọn tất cả các báo cáo trong mem_usage
  • dán vào SublimeText
  • Chọn Tất cả (CMD + 'A') và Chọn Tất cả (CMD + SHIFT + 'L')
  • CMD + Phải (đi tới eol), Backspace, Backspace, Backspace, ALT + Left, CMD + Backspace
  • Xóa lùi, gõ '+', CMD + 'A', CMD + 'C'
  • mở Terminal , chạy python, CMD + V, Enter

Et voila! "Dễ" ...

PS - Shortcut ninja & thập niên 80/90 Người chơi trò chơi chiến đấu không có vấn đề gì với giải pháp này


0

Tôi tìm thấy một giải pháp với vim và awk. Mở chrome: // system, mở rộng mem_usage, sao chép vào vim và thực thi regrec:

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

Điều này chỉ để lại những con số trước MB. Lưu tệp và thực thi

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

Tôi không thể chuyển đổi mã regrec vim sang sed.


0

USS có sẵn nhiều nền tảng

USS (Kích thước cài đặt duy nhất) là bộ nhớ duy nhất cho một quy trình và sẽ được giải phóng nếu quy trình này bị chấm dứt ngay bây giờ.

psutil> 4.0 Thư viện Python có thể truy cập nó

Đây là tôi sẽ sử dụng nó

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

Trong đó pid = 292 là PID của hầu hết quá trình bên ngoài từ Activity Monitor


-1

Tôi biết rằng chrome / crom có ​​trình quản lý tác vụ, nhưng nó không cung cấp tổng bộ nhớ được sử dụng. Nó chỉ ra rằng liên kết "Chỉ số cho mọt sách" trong trình quản lý tác vụ dẫn đến chrome: // memory-redirect / trong đó liệt kê tổng bộ nhớ được sử dụng. Sẽ rất tốt nếu có xác nhận bên ngoài của những con số này, cũng như một cách để có được thông tin trên dòng lệnh để có thể thực hiện được nhiều hơn với nó, nhưng đây có vẻ là cách tốt nhất hiện có.


2
Câu trả lời này không còn giá trị nữa. Xem bug.chromium.org/p/chromium/issues/detail?id=588790
eddygeek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.