Як обчислюється значення Y для графіка тиску пам’яті в Моніторі активності?


41

Як vm.memory_pressureобмежується / обчислюється значення для OS X 10.10.2 - Yosemite?

Я дослідив декілька відповідей на це запитання і намагаюся зробити кілька речей у командному рядку, щоб отримати точні значення, а не дивитись на графіки в "Моніторі діяльності".

З системою під невеликим навантаженням:

~ ❯❯❯ 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 виглядає правильно і, здається, є тим, що він використовує для забарвлення графіка (зелений для 1-НОРМАЛЬНОГО, жовтий для 2-ТЕХНІЧНОГО, червоний для 4-КРИТИЧНИЙ). Однак vm.memory_pressure дорівнює 0, а в графіку є зелена кількість, і він зазубрин, тобто значення явно змінюється з часом, а не просто сидить на 0.

Під великим навантаженням це виглядає приблизно так:

❯❯❯ 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

Або це ...

~ ❯❯❯ 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

Або це ...

~ ❯❯❯ 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 графа з кількох причин.

По-перше, vm.memory_pressure просто сидить при 0 майже весь час при нормальному навантаженні, а графік не сидить при 0.

По-друге, вони не узгоджуються між собою. Якщо дивитися на значення пам'яті_тиск, воно нижче, коли воно насправді бажало сторінок (3220 розшуку та тиск лише 1), ніж тоді, коли було 5431 вільних і жодних не бажаних (тиск 277). І дещо це навіть нижчий тиск, ніж коли було 32572 вільних (і було 1693 тиску).

Отже, коли він побудує графік, що таке обчислення для значення Y, і як я можу отримати дані, необхідні для обчислення, з командного рядка? Я хочу створити інструмент командного рядка, який виплюне відсоток того, наскільки високим буде поточний рядок на цьому графіку, тому мені потрібно знати, як обчислити значення в будь-який момент часу, а також який діапазон можливі значення є.


7
Чудове запитання. Монітор активності показує тиск за шкалою від 0% до 100%, але я не знайшов посилання на коментарі до цього командного рядка. Я побачу, чи зможу цього тижня викопати достатньо відповіді. Чи можемо ми припустити, що вас цікавить лише 10.10.x?
bmike

3
Дякую. І так, я 10.10.2, тому це єдине, що я з цим хвилююсь.
Рауґтурі

5
Захоплюючі точки даних. Мені досі не зрозуміло, як алгоритм розроблений чи кодується - або навіть якщо він залишається однаковим від версії до версії. Дивіться apple.stackexchange.com/questions/107126/…, щоб отримати хороший коментар та більше даних про це.
bmike

Відповіді:


2

Наразі це лише часткова відповідь. Ця відповідь не завершена, поки це речення не буде видалено.

Справа в цьому питанні полягає в тому, що з його боку графік тиску пам’яті не зовсім має сенсу при порівнянні його з тим, що повідомляється в Terminal, при використанні команди, окресленої ОП:

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

Однак проблема тут полягає в тому, що ця команда обмежує значення vm, про які вона звітує. Насправді насправді всього 105 значень, але ця команда повідомляє лише про наступні п'ять значень:

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

ПРИМІТКА: Числові значення зазвичай з'являються після двокрапки (:), однак я їх не включав.

Очевидно, переважна більшість значень 105 вм не є частиною фактичного розрахунку, що визначає тиск у пам'яті, але проблема тут полягає в тому, що п'ять значень, наведених вище, не є єдиними, які використовуються для обчислення тиску в пам'яті .

Наприклад, хоча вищезазначений вихід забезпечує деякі різні вільні значення, він не надає жодного з неактивних значень тощо.

Ці значення є важливими, оскільки алгоритм тиску в пам'яті обчислює співвідношення між цими значеннями, а співвідношення між цими значеннями не видно з результатів, отриманих командою у запитанні про ОП.

Я думаю, що у мене може бути деяка технічна інформація, яка може пролити більше світла на це. Я оновлю цю відповідь будь-яким способом протягом тижня.

[ОНОВЛЕННЯ СТАТУСУ]

Я не зміг знайти технічну інформацію, яку шукав. Однак я впевнений, що все ще є - можливо, на деяких старих резервних копіях CDR / DVDR. Цю відповідь я оновлю, як тільки знайду її, або після того, як буду впевнений, що не знайду її.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.