2008-08-04 30 views
22

Cách chính xác để có được kích thước quy trình trên Solaris, HP-UXAIX là gì? Chúng tôi có nên sử dụng top hoặc ps -o vsz hoặc cái gì khác không?Kích thước quy trình trên UNIX

Trả lời

17

Định nghĩa chính xác của vsize, rss, rprvt, rshrd và các từ viết tắt tối nghĩa khác khác nhau tùy theo hệ điều hành. Các trang hướng dẫn sử dụng cho các lệnh topps sẽ có một số loại mô tả, nhưng tất cả các mô tả như vậy được đơn giản hóa rất nhiều (hoặc dựa trên việc triển khai hạt nhân đã tuyệt chủng).
"Kích thước quy trình" như một khái niệm rất khó để ghim xuống trong trường hợp chung. Câu trả lời trong các trường hợp cụ thể phụ thuộc rất nhiều vào việc thực hiện quản lý bộ nhớ thực tế trong hệ điều hành và hiếm khi thỏa mãn như khái niệm "kích thước quy trình" gọn gàng tồn tại trong tâm trí của hầu hết người dùng (và hầu hết các nhà phát triển). Ví dụ, không ai trong số những con số này (cũng không có khả năng kết hợp chúng) có thể được sử dụng để cho bạn biết chính xác có bao nhiêu quy trình có thể chạy cùng một lúc trong một lượng bộ nhớ trống nhất định. Nhưng thực sự, đặt cược tốt nhất của bạn là để đi vào nó từ đó kết thúc: tại sao bạn muốn con số này, và những gì bạn sẽ sử dụng nó cho? Với thông tin đó, tôi nghĩ bạn sẽ nhận được nhiều câu trả lời hữu ích hơn.

3

Có, bạn có quyền khóa tại VSZ.

ps u sẽ cung cấp cho bạn VSZ và RSS, kích thước bộ nhớ ảo và kích thước bộ thường trú. RSS là bao nhiêu bộ nhớ vật lý đã được cấp phát cho tiến trình, và VSZ là kích thước bộ nhớ ảo của quá trình. Nếu bạn có một số bản sao của một chương trình đang chạy, rất nhiều bộ nhớ trong VSZ sẽ được chia sẻ giữa các quá trình đó.

+3

Số Ứng dụng iPhone là vô ích nếu những gì bạn quan tâm là tiêu thụ bộ nhớ. VSZ đo lường bao nhiêu không gian bộ nhớ * ảo * của quá trình đã được đánh dấu bởi quá trình như bộ nhớ cần được ánh xạ bởi hệ điều hành nếu quá trình xảy ra để chạm vào nó. Nhưng nó không liên quan gì đến việc liệu bộ nhớ đó có thực sự được xúc động và sử dụng hay không. VSZ là một chi tiết nội bộ về cách một tiến trình phân bổ bộ nhớ - một phần lớn bộ nhớ không sử dụng nó lấy cùng một lúc. Xem RSS cho số lượng trang bộ nhớ mà nó đã thực sự bắt đầu sử dụng. –

5

Trên Solaris, bạn có thể nhận thông tin chi tiết về mức sử dụng bộ nhớ của quá trình với lệnh pmap. Cụ thể, pmap -x <pid> cho bạn biết số lượng bộ nhớ của một quá trình được chia sẻ và số tiền được sử dụng cụ thể bởi quy trình đó. Điều này rất hữu ích cho việc làm việc sử dụng bộ nhớ "cận biên" của một quy trình - với kỹ thuật này, bạn có thể tránh các thư viện được chia sẻ hai lần.

2

tôi tóm gọn kích thước tập hợp lưu trú cho tất cả các quá trình như thế này (như root):

ps ax -o rss | awk '{rss += $1;} END { print rss}' 
Các vấn đề liên quan