OS가 프로세스 우선 순위를 주기적으로 다시 계산합니까?


3

win-7 일정 및 프로세스 우선 순위에 관한 질문이 있습니다.

시나리오는 다음과 같습니다. 우선 "정상"우선 순위로 프로세스를 실행

이 프로세스는 종종 백그라운드 (낮은 I / O)로 축소됩니다. 우선 순위를 "정상"또는 "정상"으로 다시 설정하지만 몇 분 후에 다시 감소합니다.

표준 Windows 작업 관리자 또는 procexp를 사용하여 우선 순위를 설정하려고했습니다 (차이가 없어야한다고 생각합니다).

따라서 질문은 : I / O 사용량을 처리하기 위해 프로세스 우선 순위가 다시 계산됩니까? 이 상황의 프로세스는 Visual Studio 2015이며, 많은 HDD를 사용하므로 병목 현상이 발생할 수 있습니다.

답변:


0

내가 아는 한, Windows 운영 체제는 별도의 지시가없는 한 프로세스 우선 순위를 변경하지 않습니다. 그러나 이것이 실행중인 프로그램이 우선 순위를 변경할 수 없다는 것을 의미하지는 않습니다. 우선 순위를 변경할 수있는 Process.PriorityClass라는 .NET 속성이 있습니다. 아마도 VS는 다른 스레드가 더 많은 CPU 시간을 허용하기 위해 CPU 사용량을 줄일 수 있다고 결정하고 있습니까?


이 답변에 감사드립니다. 그러나 우선 순위 변경은 프로그래밍 방식으로 가능하지만 초기 문제는 해결되지 않습니다. 또한 yep는 VS와 관련이 있지만 다른 컴퓨터의 동일한 구성이 잘 작동합니다. 그래서, 당신이 대답하는 것이 초기 문제를 해결하지 못하기 때문에 현상금을 줄 수 없습니다.
tym32167

0

창의 스케줄러는 I / O 사용을 고려할 가능성이 높습니다 (I / O 대기 프로세스와 같이 빠르게 리턴되는 프로세스를 덜 자주 스케줄하므로). 그러나 프로세스 우선 순위는 사용자 (또는 다른 프로그램 (프로세스 자체 포함))가 설정 한 숫자 여야하며 스케줄러에 더 영향을줍니다. ... 내 거친 추측은 충분합니다.

대답은 사용 sugegst 프리 오을 (백그라운드 서비스에 의해 강제) 프로세스의 우선 순위는 또한 당신의 경우에 도움이 될 수를 저장합니다.


0

내가 알기로는 Windows는 프로세스 우선 순위를 자동으로 조정하지 않습니다 .

프로세스 우선 순위를 변경하면 프로세스의 모든 스레드와 프로세스 내에서 생성 된 모든 스레드의 "기본 우선 순위"가 설정됩니다. ( 이 관계에 대한 설명은 여기 내 답변을 참조하십시오 .)

Windows는 최근 활동에 따라 스레드 의 우선 순위를 조정합니다 . 예를 들어, I / O 완료 후 스레드의 우선 순위는 장치의 기능 장치 드라이버에 의해 결정된 양만큼 기본보다 높아집니다. 모든 타임 슬라이스가 종료 될 때 스레드가 우선 순위가 높아지면 기본 우선 순위로 떨어질 때까지 우선 순위가 1 씩 감소합니다. 밑면 아래에서 부식되지 않습니다.

이 내용은 Solomon, Russinovich, Ionescu 등의 Windows Internals의 스레드 스케줄링 장에 설명되어 있습니다.

그러나 1) 스레드 우선 순위 증가 및 감소의 결과가 작업 관리자에 표시되지 않기 때문에 (작업 관리자가 스레드 우선 순위가 아닌 프로세스 우선 순위 클래스를보고하므로) 이는보고 된 시나리오와 일치하지 않습니다. 2 :이 메커니즘 은 스레드의 우선 순위를 기본 우선 순위 아래로 쇠퇴 하지 않습니다 . 프로세스 우선 순위를 변경할 때 기본이 설정됩니다.

이것은 Visual Studio (deveng.exe) 자체에서 수행 한 작업 일 수 있습니다. 다른 프로세스에서도 이런 일이 발생합니까?

이것은 Windows Performance Toolkit으로 조사 할 수 있습니다.


-1

설명하는 상황에서 프로세스 우선 순위를 조정하는 것은 드문 일이 아닙니다.

일을 단순화하기 위해 상황을 이런 식으로 생각합시다. 우선 순위가 높을수록 프로세스가 우선 순위가 낮은 프로세스 (일부 작업 수행)보다 더 자주 "일어나"는 것을 의미합니다. 프로세스가 많은 (임의의) 디스크 IO를 수행한다는 것을 고려할 때 우선 순위를 높게 유지하면 디스크가 데이터를 반환하기를 기다리는 경우에만 "일어나"깨어날 것입니다. 프로세스 스위치는 비용이 많이 들고 시간이 많이 걸리는 작업이므로 디스크를 많이 사용하는 프로세스의 우선 순위를 낮추면 프로세서 사용률이 향상됩니다. 다시 말해, 프로세스 우선 순위를 조정함으로써 프로세서는 프로세스 간 전환에 시간을 소비하는 것보다 작업에 더 많은 시간을 할애 할 수 있습니다.

VS 또는 프로세스 자체가 우선 순위를 지정하는 것 같습니다.


이 답변은 초기 문제를 해결하지는 못하지만 적어도 왜 발생하는지 설명합니다. 감사합니다.
tym32167

죄송하지만이 답변은 여러 가지면에서 사실과 상반됩니다. 1) 스레드 는 디스크 IO를 완료 한 후 우선 순위 가 높아지 거나 낮아지지 않고 우선 순위를 받습니다 . 그 이유는 I / O 바운드 스레드가 CPU에 들어가서 다음 IO를 시작하게하면 장치의 데드 타임을 피할 수 있다는 것입니다. 2) 우선 순위가 높다고해서 "더 자주 일어나"는 것은 아닙니다! 는 것을 의미 할 때 당신이 "일어나"당신은 낮은 우선 순위의 준비 스레드가 전에 CPU를 사용할 수 (즉, 준비 상태로 대기에서 이동한다). 3) 스레드가 디스크 IO (또는 다른 IO)에서 차단되는 동안 전혀 "깨워지지"않습니다! 이것이 "디스크 IO에서 차단" 이라는 의미입니다.
Jamie Hanrahan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.