Giá trị Y cho biểu đồ Áp suất bộ nhớ trong Trình giám sát hoạt động được tính như thế nào?


41

Làm thế nào là vm.memory_pressuregiá trị của giáp / tính trên OS X 10.10.2 - Yosemite?

Tôi đã nghiên cứu một số câu trả lời cho câu hỏi này và đang thử một vài điều trên dòng lệnh để có được các giá trị chính xác thay vì nhìn vào các biểu đồ trong Activity Monitor.

Với hệ thống chịu tải nhẹ:

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 2683717
vm.memory_pressure: 0
kern.memorystatus_vm_pressure_level: 1

Kern.memorystatus_vm_pressure_level trông có vẻ đúng và dường như là những gì nó sử dụng để tô màu cho biểu đồ (màu xanh lá cây cho 1-BÌNH THƯỜNG, màu vàng cho 2-WARN, màu đỏ cho 4-CRITICS). Tuy nhiên, vm.memory_pressure là 0 và biểu đồ có một số lượng màu xanh lá cây và nó bị lởm chởm, có nghĩa là giá trị thay đổi rõ ràng theo thời gian, không chỉ ngồi ở 0.

Dưới tải nặng, nó trông như thế này:

❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 32572
vm.memory_pressure: 1693
kern.memorystatus_vm_pressure_level: 4

Hay đây ...

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 5431
vm.memory_pressure: 277
kern.memorystatus_vm_pressure_level: 4

Hay đây ...

~ ❯❯❯ sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 3220
vm.page_free_count: 805
vm.memory_pressure: 1
kern.memorystatus_vm_pressure_level: 4

Đây là nơi tôi bối rối. Không có giá trị nào trong số này có thể là giá trị Y của biểu đồ vì một vài lý do.

Đầu tiên, vm.memory_pressure chỉ ngồi ở mức 0 gần như mọi lúc dưới tải bình thường và đồ thị không ngồi ở 0.

Thứ hai, chúng không phù hợp với nhau. Nhìn vào giá trị memory_pressure, nó thấp hơn khi nó thực sự có các trang muốn (3220 muốn và áp lực chỉ 1) so với khi nó có 5431 miễn phí và không muốn (áp lực là 277). Và bằng cách nào đó, áp suất đó thậm chí còn thấp hơn so với khi nó có 32572 miễn phí (và có áp lực 1693).

Vì vậy, khi nó vẽ đồ thị đó, tính toán cho giá trị Y là gì và làm cách nào tôi có thể lấy dữ liệu tôi cần để tính toán từ dòng lệnh? Tôi đang tìm cách tạo ra một công cụ dòng lệnh sẽ tiết ra tỷ lệ phần trăm của dòng hiện tại trên biểu đồ đó, vì vậy tôi cần biết cách tính giá trị tại bất kỳ thời điểm nào, cũng như phạm vi của giá trị có thể là.


7
Câu hỏi tuyệt vời. Trình giám sát hoạt động cho thấy áp lực trên thang điểm từ 0% đến 100% nhưng tôi không tìm thấy bất kỳ tài liệu tham khảo nào về các nhận xét dòng lệnh này. Tôi sẽ xem liệu tôi có thể đào đủ để trả lời trong tuần này không. Chúng tôi có thể cho rằng bạn chỉ quan tâm đến 10.10.x không?
bmike

3
Cảm ơn bạn. Và vâng, tôi là vào ngày 10.10.2, vì vậy đó là người duy nhất tôi quan tâm đến vấn đề này.
Raugturi

5
Điểm dữ liệu hấp dẫn. Tôi vẫn chưa rõ thuật toán được thiết kế hoặc mã hóa như thế nào - hoặc thậm chí nếu nó vẫn giữ nguyên từ phiên bản này sang phiên bản khác. Xem apple.stackexchange.com/questions/107126/ Ấn để biết một số bình luận hay và nhiều dữ liệu hơn về điều này.
bmike

Câu trả lời:


2

Đây hiện chỉ là một câu trả lời một phần. Câu trả lời này không đầy đủ cho đến khi câu này được gỡ bỏ.

Vấn đề của câu hỏi này là ở mặt của nó, biểu đồ Áp suất bộ nhớ hoàn toàn không có ý nghĩa khi so sánh nó với những gì được báo cáo trong Terminal khi sử dụng lệnh được OP nêu ra:

sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level

Tuy nhiên, vấn đề ở đây là lệnh này giới hạn các giá trị vm mà nó báo cáo lại. Trên thực tế, có tổng cộng 105 giá trị nhưng lệnh này chỉ báo cáo năm giá trị sau:

vm.vm_page_free_target:
vm.page_free_wanted:
vm.page_free_count:
vm.memory_pressure:
kern.memorystatus_vm_pressure_level:

LƯU Ý: Các giá trị số thường sẽ xuất hiện sau dấu hai chấm (:), tuy nhiên tôi không bao gồm các giá trị này.

Rõ ràng, phần lớn áp đảo của các giá trị 105 vm không phải là một phần của tính toán thực tế xác định áp suất bộ nhớ, nhưng vấn đề ở đây là năm giá trị trên không phải là giá trị duy nhất được sử dụng để tính áp suất bộ nhớ .

Ví dụ: mặc dù đầu ra trên cung cấp một số giá trị miễn phí khác nhau , nhưng nó không cung cấp bất kỳ giá trị không hoạt động nào , v.v.

Các giá trị này rất quan trọng vì thuật toán áp suất bộ nhớ tính toán tỷ lệ giữa các giá trị đó mối quan hệ giữa các giá trị đó không rõ ràng từ đầu ra được tạo bởi lệnh trong câu hỏi của OP.

Tôi nghĩ rằng tôi có thể có một số thông tin kỹ thuật có thể làm sáng tỏ hơn về điều này. Tôi sẽ cập nhật câu trả lời này trong cả tuần.

[CẬP NHẬT TRẠNG THÁI]

Tôi đã không thể tìm thấy thông tin kỹ thuật mà tôi đang tìm kiếm. Tuy nhiên, tôi khá chắc chắn rằng tôi vẫn có nó - có thể trên một số bản sao lưu CDR / DVDR cũ. Tôi sẽ cập nhật câu trả lời này một khi tôi đã tìm thấy nó, hoặc sau khi tôi chắc chắn tôi sẽ không tìm thấy nó.

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.