Tôi phân tích cú pháp dữ liệu từ /proc/[pid]/statm
để nhận được manh mối về việc sử dụng bộ nhớ của một quá trình nhất định. man proc
khẳng định rằng cư dân thiết lập kích thước (đo trong 'trang') cũng giống như VmRSS (KB ??) trong /proc/[pid]/status
. Vì chúng có các giá trị khác nhau nên tôi muốn hiểu kết nối giữa các giá trị này. Có cái gì đó giống như một yếu tố tôi có thể đọc ở đâu đó trong /proc
(Tôi nghĩ về VmPTE nhưng nó sth. Khác ...)? Tôi nên phân tích cú pháp nào để lấy kích thước của Bộ nhớ đã sử dụng cho một quy trình nhất định?Làm thế nào để VmRSS và kích thước tập hợp thường trú phù hợp?
#ex 1782 = firefox
~$ cat /proc/1782/statm
224621 46703 9317 11 0 98637 0
# \--- resident set size
~$ cat /proc/1782/status | grep Vm
VmPeak: 935584 kB
VmSize: 898484 kB
VmLck: 0 kB
VmHWM: 257608 kB
VmRSS: 186812 kB
VmData: 394328 kB
VmStk: 220 kB
VmExe: 44 kB
VmLib: 61544 kB
VmPTE: 1224 kB
VmSwap: 0 kB
Tôi không biết nơi nào để có được giá trị từ proc, nhưng tôi nghĩ pagesize của tôi là 4KB. Tôi đã nhầm lẫn với VmPTE. Nó có vẻ là 'kích thước của phần [pid] của bảng trang', sau đó 'kích thước của một mục đệm' :) – lupz
Có, rất nhiều các giá trị này phụ thuộc vào hệ thống. Trong một số hệ thống tôi đã làm việc với, một số giá trị đó sẽ luôn cung cấp 0 vì hỗ trợ chưa được biên dịch vào nhân. Vì vậy, có, không tin những gì người đàn ông trang của tôi nói như họ có thể không có liên quan đến hệ thống của bạn. – Ray
Trên thực tế, bộ nhớ ảo = một phần trong RAM + một phần trên đĩa + không gian địa chỉ ảo không được ánh xạ tới bộ nhớ vật lý + các tệp được ánh xạ bộ nhớ + bộ nhớ dùng chung. Vì vậy, để đo lường mức tiêu thụ bộ nhớ, VmSize là khá vô ích. Xem câu trả lời đầu tiên cho http://stackoverflow.com/questions/13308684/increase-of-virtual-memory-without-increse-of-vmsize – vcarel