Finder가 프로세스 우선 순위가 낮은 이유는 무엇입니까?


13

나는 이것에 대해 약간의 손실이 있습니다.
조리개를 크게 가져오고 시스템이 전체 크롤링 속도를 늦추고 기본적으로 웹 탐색조차도 사용할 수 없게됩니다. 이것은 부자연 스럽기 때문에 조금 둘러 보았습니다.

실행 ps -Al분명히 기본적으로는, 쇼 Dock, FinderSystemUIServer모든 것은 우선 순위가 훨씬 다음 유저 랜드 애플리케이션을 내려 실행하는 것입니다. 사용자 응용 프로그램의 우선 순위는 일반적으로 33이지만 Dock, Finder 등의 우선 순위는 53입니다.

결과적으로 모든 프로세서 집약적 작업이 UI를 완전히 복제하고 시스템이 완료 될 때까지 시스템을 사용할 수 없게 만듭니다.

어쨌든, 사용 renice -20 -p <prid>하면 나머지 사용자 UI와 동일한 우선 순위까지 ​​충돌하므로 UI가 마우스 클릭과 같은 간단한 작업에 응답하기 위해 1-3 초 (!)를 기다리지 않아도됩니다.

Thad는 두 가지 질문이 있다고 말했다
. 파인더의 스레드 우선 순위를 이렇게 변경해서는 안되는 이유가 있습니까?
우선 순위 변경을 지속시키는 방법이 있습니까? 예를 들어 재부팅 후에도 그대로 유지됩니다.


9
필자는 일반적으로 CPU로드가 아닌 디스크 i / o 인 것으로 시스템을 크롤링하는 것으로 나타났습니다. Finder와 언급 한 다른 응용 프로그램은 응답하지 않는 것처럼 보일 때 읽기 / 쓰기를 기다리고있을 것입니다. 그러나 실제로 SSD와 같은 빠른 디스크를 얻는 것 외에는 이것에 대한 해결책이 없으므로 답변 대신 주석으로 게시 할 것입니다.
Kyle Cronin

5
나도 그렇게 생각했을 것입니다. 그러나 스레드 우선 순위를 변경하면 UI 동작에 영향을 미치 므로 스레드 우선 순위 IO 대기열 처리에도 영향을 미치거나 실제로 CPU 제한적이라고 생각합니다.
가짜 이름

1
예를 들어, 도킹 우선 순위를 재고로 남겨두면 마우스가 움직일 때 반응하는 데 5-10 초가 걸립니다. 다른 모든 것과 동일한 33까지 수동으로 범프하면 즉각적으로 반응합니다 (조금은 약간의 혼잡함이 있음).
가짜 이름

3
업데이트 : nice 명령은 CPU IO 대기열 처리에 모두 영향을 미칩니다 . insanelymac.com/forum/lofiversion/index.php/t164156.html
가짜 이름

2
문제는 메모리 / 디스크 공간 제한이 아닙니다. 나는 프로세스를 실행하고 의도적으로 가지고 모든 그들이 할 수있는 자원을. 우선 순위가 올바르게 설정되어있는 경우 에도 적절한 mutitasking 스케줄러를 사용하더라도 시스템이 완벽하게 응답 상태를 유지해야합니다 (또는 최소한의 성능 저하 만 발생) . 그러나 일부 미친 이유 때문에 UI 의 가장 중요한 측면은 가능한 가장 낮은 우선 순위로 설정되므로 전체 시스템을 기본적으로 사용할 수 없게됩니다.
가짜 이름

답변:


1

Apple의 개발자가 부족한 사람 이이 질문에 대답 할 수 있을지 확실하지 않습니다. Finder의 내부 비밀은 도메인입니다. UI에 눈에 띄는 지연 문제가 있다고 생각되면 Apple에 버그 보고서를 제출할 수 있습니다.

사물 소리 (의도적으로 모든 리소스를 차지하는 프로세스)로 판단하면 메모리 관리에있어 약간의 이점이 있습니다. 버퍼링 보조 수단으로 약 10-20 %의 리소스가없는 시스템이 최고 성능을 발휘하는 것을 아직 보지 못했습니다.

궁금한 점이 있습니다. 실행중인 프로세스 무엇 입니까?


주로 파이썬. 무거운 재귀 계산을 수행합니다.
가짜 이름

또한 배치 이미지 처리
가짜 이름

CPU 문제보다 RAM 사용 문제와 비슷합니다. UI를 지연시키지 않고 git use ton of CPU와 같은 것을 얻었지만 무언가가 모든 RAM을 먹기 시작하면 UI가 크게 히트합니다. 이 과정에서 RAM 사용량은 어떻습니까?
Tim

1

"애 퍼처에서 큰 가져 오기를 실행 중이며 시스템이 전체 크롤링 속도를 늦추고 있습니다."

그렇다면 Aperture는 renice다른 프로그램이 아니라 원하는 프로그램 일 것입니다 . 언급 한 프로세스는 일반 사용자 응용 프로그램과 비교하여 조정되므로 사용자 응용 프로그램은 사용자가 대부분 사용하는 방식이므로 우선 순위가 높아지고 응답 성이 유지됩니다.

귀하의 경우는 응용 프로그램이 장기적이고 집중적 인 작업을 수행하고 사용자가 동시에 다른 일을하고 싶어하는 덜 흔한 경우입니다. 기본적으로 이러한 집중적 인 작업이 더 많은 리소스를 얻고 더 빨리 완료 할 수 있도록 우선 순위를 얻는 것이 사용자의 응용 프로그램입니다.

다른 응용 프로그램이 충분히 응답하지 않는다고 불평하는 모든 사용자에 대해 활성 응용 프로그램이 충분히 빠르게 실행되지 않는다고 불평하는 다른 사용자가 있습니다.

리소스를 많이 사용하는 긴 작업을 실행 중이고 우선 순위가 더 낮아서 작업이 완료되는 동안 다른 프로세스를 사용할 수 있고 집중 작업이 더 오래 걸리더라도 신경 쓰지 않으면 우선 순위를 낮춰야합니다. 집중적 인 작업을 실행하는 프로세스

두 번째 질문에 관해서는 renice보다 자동으로 만드는 몇 가지 가능한 솔루션이 있습니다 . 예를 들어 Aperture를 낮은 우선 순위로 실행하는 스크립트 애플릿을 생성하고이를 사용하여 Aperture를 시작할 수 있습니다. 또는 * .command 파일에 저장된 쉘 스크립트를 통해 Aperture를 시작할 수 있습니다 (단, 터미널을 열고 터미널 창에서 명령을 실행하면 원하지 않을 수도 있습니다). 이들 각각은 약간 관련되어 있습니다. 예제를 원하면 나중에 제공하는 방법을 알 수 있습니다.


배경 작업, 정의에 의해 , 낮은 우선 순위 다음 전경 작업에 있어야합니다. 가장 중요한 전경 작업 전체 시스템은 크게 파인더 과정 인 GUI입니다. 프로세스별로 스레드를 패치 할 수는 renice있지만 실제 문제는 파인더 우선 순위입니다.
가짜 이름

예를 들어, 가장 반응이 빠른 GUI 중 하나가있는 Windows 7에서 Window-Manager는 자동으로 "높음"우선 순위로 실행됩니다. 이제는이 프로세스의 오작동으로 인해 시스템이 지연 될 수 있지만 다른 곳에서는 오작동이 발생 하지 않습니다 . 모든 CPU 코어의 100 %를 사용하여 응용 프로그램 충돌이 발생했지만 Windows의 UI는 여전히 매우 반응합니다.
가짜 이름

1
@ 가짜 이름 : Finder는 자체 창 (폴더 및 데스크탑 아이콘) 이외의 UI 측면을 처리 하지 않습니다 . (파인더를 종료 할 수 있습니다. 실제로 사라졌으며 다른 모든 기능은 여전히 ​​작동합니다.) SystemUIServer는 메뉴 표시 줄 오른쪽 항목과 "베젤"오버레이 (볼륨 / 밝기 등) 만 처리합니다. 윈도우 렌더링 및 이벤트는 전적으로 WindowServer 프로세스에 의해 처리됩니다.
Kevin Reid

설명을위한 @ 가짜 이름 : renice스레드가 아닌 프로세스에서 작동합니다.
Chris 페이지

1

필자는 오래 전에 ServerFault에 대해 비슷한 질문을했지만 파인더에 특별히 초점을 맞추지는 않았지만 파인더는 엄청나게 느립니다. Mac OS X (또는 iOS 등)에서 프로세스를 영구적으로 "우수"하는 방법은 무엇입니까? 이 작업을 수행하는 좋은 방법 또는 그 이유에 대한 정보는 그다지 많지 않았습니다 ..

나는 아직도 이것에 대해 자주 생각하며, 만약 당신이 감히 "기본"을 생각하는 몇 가지 방법이 있습니다. 앞에서 언급했듯이 다양한 쉘 치커리를 수행 할 수 있습니다. 그러나 이러한 잘못된 작업을 수행하기에 좋은 곳 /etc/rc*은 이미 다양한 부팅 루틴입니다. 이미 모든 종류의 임의의 (애플 정의 된) 시스템 매개 변수를 설정합니다. 그것들을 편집하거나 부팅 프로세스에 자신의 루틴을 추가하는 방법을 찾으십시오.

또한 머리를 터 뜨리고 싶다면 ..

sudo sysctl list 판도라 상자의 열쇠, 일명 /etc/sysctl.conf

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