메모리 사용량이 높은 장치에서 실행되는 일부 프로세스의 우선 순위를 지정하고 싶다고 가정해 보겠습니다. 이러한 프로세스는 UI 프로세스(특히 Android)이며 이 상태에서는 매우 느리게 실행됩니다. 내 프로세스를 찾기 위해 grep할 때
ps -eo min_flt,maj_flt,cmd
내 기본 페이지 오류가 매우 높다는 것을 알 수 있습니다(새 Android 활동 열기와 같은 UI 작업의 경우 수천 개).
프로세스를 낮은 우선순위(높은 우선순위)로 조정하면 심각한 페이지 오류가 더 적게 나타날 것으로 예상할 수 있습니까? 우선 순위를 높이면 더 많은 CPU 리소스가 제공되지만 병목 현상이 메모리 부족/페이지 오류인 경우 프로세스 속도가 빨라질지는 확실하지 않습니다.
답변1
우선 순위를 높이면 더 많은 CPU 리소스가 제공되지만 병목 현상이 메모리 부족/페이지 오류인 경우 프로세스 속도가 빨라질지는 확실하지 않습니다.
하지 않을 것이다. 이 nice
수준은 스케줄러에만 영향을 미칩니다.
루트 권한을 사용하면 mlockall(MCL_CURRENT|MCL_FUTURE)
매핑된 페이지를 RAM에 잠글 수 있습니다. 리눅스에서. 안드로이드에 그런 기능이 있는지는 모르겠습니다.
얼마 전에 간단한 래퍼를 만들어 실행 파일을 실행할 수 있도록 mlockall
상태를 상속할 수 있는 패치가 있었습니다 .exec
mlockall
https://lwn.net/Articles/308552/불행히도 패치는 메인라인 Linux에 적용되지 않으므로 codez를 편집해야 하거나 스크립트 언어 해석기인 경우 이를 수행할 수 있는 방법을 찾아야 합니다 mlockall
.