프로세스가 활성화 된 동안 선호도 변경


0

CPU 소비 프로세스 (mandelbrot 세트 계산)를 실행 중이며 해당 프로세스는 CPU의 거의 100 %를 사용합니다 (컴퓨터에 8 코어가 있습니다). 선호도를 코어의 절반으로 변경하면 CPU 소비가 50 % 이하로 표시되며 멋지지만 이해하고 싶은 것은이 마법이 어떻게 수행되는지입니다.

내 질문 : 프로세스가 실행되는 동안 선호도를 변경하고 비활성화 된 코어에 스레드가있는 경우-데이터가 손실되지 않는 것이 안전합니까? 어떻게 되나요?

답변:


3

8 개의 CPU 코어가 있지만 확실히 8 개 이상의 스레드가 시작되었습니다. 모든 백그라운드 프로세스를 계산하십시오. 수십 개가 있으며 각 스레드에는 적어도 하나의 스레드가 있습니다. 실제 멀티 태스킹을 제공하려면 운영 체제가이를 처리해야합니다. 따라서 OS에는 일부 알고리즘 및 일부 옵션 세트에 따라 스레드를 시작, 일시 중지 및 다시 시작하는 스케줄러가 있습니다. 선호도는 이러한 옵션 중 하나이며 스레드를 예약 할 수있는 코어를 결정합니다. 스레드 일시 중지 및 다시 시작은 항상 발생합니다. 코어간에 이동도 마찬가지입니다 (OS는 캐시 누락 빈도를 줄이고 성능을 향상시키기 때문에 동일한 코어에서 스케줄을 시도합니다). 안전합니다.


3

특별히 요구되지는 않았지만, 선호도는 유용 할 수 있지만 우선 순위만큼 중요하지 않다는 점을 지적해야합니다. CPU 사용률이 50 % 인 것과 비교하여 일반적으로 작업이 100 %에서 두 배 빠르게 완료됩니다. 장기 실행 작업을 낮은 우선 순위로 설정하면 우선 순위가 더 높은 작업을 실행하지 않으려는 한 100 %로 실행되지만 다른 경량 작업 수행에 대한 영향은 최소화됩니다. 해결해야 할 팬 소음 / 열 문제가있는 경우에만 선호도를 관리하십시오. 내 PC를 주기적으로 청소하면 더 많은 마일리지가 발생합니다.


나는 이것을 강력히 두 번째로한다. 이 CPU 집약적 인 작업이 진행되는 동안 OP의 동기가 머신을 일반적으로 대화식으로 사용 가능하게 유지하려는 경우 프로세스 우선 순위를 낮추는 것이 선호도를 제한하지 않고 수행하는 방법입니다. 나는 항상 비디오 렌더링을 위해 이것을한다. 우선 순위가 높은 것이 Mandelbrot 작업을 실행하지 않는 한 여전히 모든 CPU 성능을 얻습니다. 그리고 우선 순위가 높은 것이 Mandelbrot 작업을 실행하고 싶을 때에도 남은 CPU 성능을 사용할 수 있습니다.
Jamie Hanrahan

사실, 이것을 쉽게하기 위해 / low 한정자를 사용하여 Mandelbrot exe를 시작하는 작은 .cmd 스크립트를 만드는 것이 좋습니다.
Jamie Hanrahan

1

그것은 야해 어떤 프로그램에 영향을 줄 수 있습니다. 운영 체제의 스케줄러에 코어를 더 이상 사용할 수 없다는 알림이 표시됩니다. 프로세스를 실행 상태에서 대기 상태로 전환하는 데 마이크로 초가 걸리므로 스위치가 즉시 나타납니다. 프로세스는 사용 가능한 모든 코어에서 계속 실행됩니다.

그러나 프로그램을 잘못 작성했거나 컴파일러에서 문제 나 버그가 발생한 경우 프로그램이 제대로 작동하지 않거나 완전히 충돌 할 수 있습니다.


모든 관련 국가 / 자원이 가능한 핵심으로 이동할 것이라고 말하는 것이 옳은가? 그렇게 행동하는 것 (별로 중요하지 않은 CPU 소비자를 위해 수동으로 코어를 줄이는 것)이 좋은 습관이라고 생각하십니까?
yossico

@yossico 예, 모든 것이 움직여야합니다. 그러나 "해야한다"와 "의지"는 동일하지 않습니다. 실행중인 작업의 우선 순위를 변경했지만 절대적으로 필요한 경우가 아니라면 할 수있는 일은 아닙니다. 그리고 나는 실행중인 프로세스에서 코어를 비활성화하지 않을 것입니다. 완벽하게 작동 해야 하지만 한 번 처리하지 않으려 고합니다. 필요한 경우 작업을 실행 하기 전에 우선 순위와 선호도 설정했습니다 . 미안보다 안전하는 게 낫지?
Keltari

@ yossico 나는 변화하는 것을 먼저 테스트 할 것입니다. 프랙탈 생성 프로그램을 20 시간 동안 실행 한 다음 충돌이 발생하도록 설정을 변경하고 싶지 않습니다. 나는 처음 몇 분 동안, 아마도 훨씬 적은 시간이 걸리는 프랙탈에서 어떤 일이 발생하는지 테스트 할 것입니다.
Keltari

난 당신이 미안보다 더 잘, 더 나은 안전 같아요 ... 내 프랙탈 그러나 (내가 4K에 깊은 다이빙을 생성 할 때) ... 일 실행
yossico

@Keltari 귀하의 우려는 보증되지 않습니다. 스레드는 항상 프로세서간에 이동합니다. Windows는 스레드 우선 순위를 즉시 수정합니다. 프로세서에서 실행중인 프로그램을 종료하기 위해 선호도를 사용하는 것이 우선 순위가 높은 스레드가 실행되기 시작하는 경우와 다르지 않습니다. 물론, 프로그램이 잘못 작성되었거나 컴파일러에 버그가있는 경우 문제가 발생하지만 사용자가 선호도 또는 우선 순위를 조정하지 않더라도 모든 MP 시스템에서 동일한 문제가 발생할 수 있습니다.
Jamie Hanrahan

1

여기에는 데이터 손실 (또는 데이터 손상)의 위험이 전혀 없습니다 . 또는 프로세스 종료 또는 기타 문제가 있습니다. Windows 스케줄러는이 상황을 초당 수십 또는 수백 번 처리합니다.

프로세스 스레드의 선호도 (및 우선 순위)를 변경하는 프로세스 선호도 변경 (또는 해당 문제의 우선 순위 변경)은 선점의 또 다른 이유 일뿐입니다.

선점 후 스레드는 마지막으로 실행했을 때와 다른 논리 프로세서에서 실행될 수 있습니다. 그것은 완전히 흔한 일입니다.

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