활동 모니터의 메모리 압력 그래프에 대한 Y 값은 어떻게 계산됩니까?


41

vm.memory_pressureOS X 10.10.2-Yosemite에서 값 은 어떻게 제한 / 계산됩니까?

이 질문에 대한 몇 가지 답변을 연구 했으며 Activity Monitor에서 그래프를 보지 않고 정확한 값을 얻기 위해 명령 줄에서 몇 가지를 시도하고 있습니다.

시스템이 경부 하 상태 인 경우 :

~ ❯❯❯ 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-NORMAL의 경우 녹색, 2-WARN의 경우 노랑, 4-CRITICAL의 경우 빨강). 그러나 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에 있지 않습니다.

둘째, 서로 일치하지 않습니다. memory_pressure 값을 보면 실제로 페이지를 원했을 때 (3220 원하고 압력은 1)에 비해 5431이 비어 있고 원치 않았을 때 (압력 277)보다 낮습니다. 그리고 어떻게 든 그것은 32572가 자유롭고 (1693의 압력을 가했을 때)보다 훨씬 낮은 압력입니다.

따라서 그래프를 그릴 때 Y 값에 대한 계산은 무엇이며 명령 줄에서 계산 해야하는 데이터를 어떻게 얻을 수 있습니까? 현재 줄이 그 그래프에서 얼마나 높은지 백분율을 나타내는 명령 줄 도구를 만들고 싶습니다. 따라서 주어진 시간에 값을 계산하는 방법과 범위를 알아야합니다. 가능한 값은 다음과 같습니다.


7
좋은 질문입니다. 활동 모니터에 0 %에서 100 %까지의 압력이 표시되지만 명령 줄 주석에 대한 참조를 찾지 못했습니다. 이번 주에 답을 찾을 수 있을지 알아볼 것입니다. 10.10.x에만 관심이 있다고 가정 할 수 있습니까?
bmike

3
고맙습니다. 그리고 네, 저는 10.10.2에 있습니다. 그래서 이것이 제가 관심있는 유일한 것입니다.
Raugturi

5
매혹적인 데이터 포인트. 알고리즘이 어떻게 설계 또는 코딩되는지, 또는 버전마다 동일하게 유지되는 경우에도 여전히 명확하지 않습니다. 이에 대한 좋은 논평과 더 많은 데이터는 apple.stackexchange.com/questions/107126/… 을 참조하십시오 .
bmike

답변:


2

이것은 현재 부분적인 답변 일뿐입니다. 이 답변은이 문장이 제거 될 때까지 완료되지 않습니다.

이 질문에 대한 것은 메모리 압력 그래프가 OP에 요약 된 명령을 사용할 때 터미널에보고 된 것과 비교할 때 메모리 압력 그래프가 의미가 없다는 것입니다.

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

그러나 여기서 문제는이 명령이보고하는 vm 값을 제한한다는 것입니다. 실제로 총 105 개의 값이 있지만이 명령은 다음 5 개의 값만보고합니다.

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

참고 : 숫자 값은 일반적으로 콜론 (:) 뒤에 표시되지만 포함하지 않았습니다.

명백히, 105vm 값의 압도적 다수는 메모리 압력을 결정하는 실제 계산의 일부가 아니지만 여기서 문제는 위의 5 개의 값이 메모리 압력을 계산하는 데 사용 된 유일한 값이 아니라는 것 입니다.

예를 들어, 위의 출력은 다양한 자유 값 중 일부를 제공하지만 비활성 값 등 은 제공하지 않습니다 .

메모리 압력 알고리즘은 이러한 값들 사이의 비율을 계산하기 때문에이 값은 중요 하고 이러한 값 사이의 관계는 OP의 해당 명령에 의해 발생 된 출력으로부터 명백하지 않다.

나는 이것에 대해 더 많은 것을 밝힐 수있는 기술 정보를 가지고 있다고 생각 합니다. 나는이 답변을 일주일 안에 업데이트 할 것입니다.

[상황 업데이트]

찾고 있던 기술 정보를 찾을 수 없습니다. 그러나 아직 구식 CDR / DVDR 백업 일 가능성이 있습니다. 이 답변을 찾은 후 또는 확실하지 않은 경우이 답변을 업데이트하겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.