Windows 프로세스의 우선순위에 대해 이야기해 보겠습니다. . 대부분의 경우 사용자 지정 프로세스 우선 순위 설정에 대해 생각할 필요가 없지만 때로는 자격을 갖춘 시스템 관리자가 시스템이 실행 중인 작업 간에 프로세서 시간을 더 잘 할당하도록 도울 수 있습니다. 언제 필요합니까? 예를 들어 응용 프로그램 서버에서 가장 리소스가 중요한 프로세스인 응용 프로그램 및 SQL 서버에 더 많은 CPU 시간을 제공할 수 있습니다.
일반적으로 작업 관리자(someprocess.exe -> 우선 순위 설정)를 사용하여 프로세스의 우선 순위를 보고 변경할 수 있습니다.
Windows NT/2000/7/2008
Windows Server 2012에서 이러한 설정은 세부 정보 탭에 있습니다.
이 스냅샷에서 볼 수 있듯이 우선순위 유형은 6가지뿐입니다(나중에 설명하겠지만 이들은 우선순위 클래스 )을 사용할 수 있습니다. 충분한가요? Microsoft는 그렇게 생각합니다. 그러나 "640KB의 RAM은 모든 사람에게 충분할 것"이라고 말한 Bill Gates의 서사시를 기억합시다. 그러나 시간은 그것이 사실과 거리가 멀다는 것을 보여주었습니다. :)
이제 실제로 어떻게 생겼는지 봅시다.
실제로 Windows에는 0에서 31까지 32개의 우선 순위 수준이 있습니다.
다음과 같이 그룹화됩니다.
- 31 - 16 실시간 수준
- 15 — 1 동적 수준입니다.
- 0 페이지가 없는 스레드를 위해 예약된 시스템 수준입니다.
프로세스가 생성되면 6개의 우선순위 클래스 중 하나가 할당됩니다. :
- 실시간 클래스(값 24),
- 고급(값 13),
- 일반 클래스 이상(값 10),
- 일반 클래스(값 8),
- 정상 등급 미만(값 6),
- 또는 유휴 클래스(값 4).
위에서 언급했듯이 작업 관리자를 사용하여 프로세스 우선 순위를 볼 수 있습니다.
참고 . 보통 이상 및 보통 이하 우선 순위는 Windows 2000에서 처음 나타났습니다.각 스레드의 우선순위(기본 스레드 우선순위 )는 프로세스의 우선순위와 상대적 우선순위로 구성됩니다. 스레드 자체의. 스레드의 상대 우선 순위에는 7가지 유형이 있습니다.
- 일반:프로세스와 동일
- 보통 이상:프로세스 우선 순위에 +1
- 정상 미만:프로세스 우선 순위에서 -1
- 최고:+2;
- 최저:-2;
- 시간 중요:스레드의 현재 우선 순위를 실시간 클래스의 경우 31로 설정하고 나머지 클래스의 경우 15로 설정합니다.
- 유휴:스레드의 현재 우선 순위를 실시간 클래스의 경우 16으로 설정하고 나머지 클래스의 경우 1로 설정
다음 표는 프로세스 우선 순위, 스레드의 상대 및 현재 우선 순위를 보여줍니다.
스레드 우선순위 | 프로세스 클래스 | 프로세스 클래스 | |||||
유휴 클래스 | 일반 등급 미만 | 일반 클래스 | 일반 클래스 이상 | 고급 | 실시간 수업 | ||
1 | 유휴 | 유휴 | 유휴 | 유휴 | 유휴 | ||
2 | 최저 | ||||||
3 | 아래 ... | ||||||
4 | 유휴 클래스 | 보통 | 최저 | ||||
5 | 위 … | 아래 ... | |||||
6 | 일반 등급 미만 | 최고 | 보통 | 최저 | |||
7 | 위 … | 아래 … | |||||
8 | 일반 클래스 | 최고 | 보통 | 최저 | |||
9 | 위 … | 아래 ... | |||||
10 | 일반 클래스 이상 | 최고 | 보통 | ||||
11 | 위 … | 최저 | |||||
12 | 최고 | 아래 … | |||||
13 | 고급 | 보통 | |||||
14 | 위 … | ||||||
15 | 최고 | ||||||
15 | 시간이 중요 | 시간이 중요 | 시간이 중요 | 시간이 중요 | 시간이 중요 | ||
16 | 유휴 | ||||||
17 | |||||||
18 | |||||||
19 | |||||||
20 | |||||||
21 | |||||||
22 | 최저 | ||||||
23 | 아래 … | ||||||
24 | 실시간 수업 | 보통 | |||||
25 | 위 … | ||||||
26 | 최고 | ||||||
27 | |||||||
28 | |||||||
29 | |||||||
30 | |||||||
31 | 시간이 중요 |
비표준 우선 순위로 프로세스를 시작하거나 변경하는 방법은 무엇입니까?
방법 1. 작업/프로세스를 시작하고 작업 관리자를 사용하여 우선 순위 변경
방법의 단점:
- 6가지 유형의 우선순위만 사용할 수 있습니다.
- 우선순위는 마우스로 변경하는 것이며 자동으로 변경할 수 없습니다.
방법 2. START 명령을 해당 키와 함께 사용할 수 있습니다.
우선순위를 담당하는 사용 가능한 키는 다음과 같습니다(START 설명되는 우선 순위 설정 프로세스와 관련이 없는 명령):
C:\>start /?
지정된 프로그램이나 명령을 실행하기 위해 별도의 창을 시작합니다.
START [“제목”] [/D 경로] [/I] [/MIN] [/MAX] [/SEPARATE | /공유]
[/낮음 | /노멀 | /높음 | /실시간 | /이상한 | /BELOWNORMAL]
[/NODE
[명령/프로그램] [매개변수]
낮음 IDLE 우선 순위 클래스에서 응용 프로그램을 시작하십시오.
NORMAL NORMAL 우선 순위 등급에서 신청을 시작하십시오.
높음 HIGH 우선 순위 클래스에서 지원을 시작하십시오.
실시간 REALTIME 우선 순위 클래스에서 응용 프로그램을 시작하십시오.
ABOVENORMAL ABOVENORMAL 우선 순위 등급에서 응용 프로그램을 시작하십시오.
BELOWNORMAL BELOWNORMAL 우선 순위 등급에서 지원을 시작하십시오.
보시다시피 START 명령을 사용하면 작업 관리자에서 사용할 수 있는 동일한 6가지 우선 순위로 프로세스를 실행할 수 있습니다.
방법의 단점:
- 6가지 유형의 우선순위만 사용할 수 있습니다.
방법 3. wmic.exe 유틸리티 사용
위와 같이 작업관리자와 START 명령어는 우선순위를 부여하는데 상당히 어색합니다. 더 유연하게 수행하는 방법을 살펴보겠습니다. wmic.exe를 사용하겠습니다. .
명령 프롬프트:
wmic process where name="AppName" CALL setpriority ProcessIDLevel
예:
wmic process where name="calc.exe" CALL setpriority 32768
또는
wmic process where name="calc.exe" CALL setpriority "above normal"
우선 순위(사전 설정):
- 유휴:64
- 정상 미만:16384
- 정상:32
- 정상 이상:32768
- 높은 우선순위:128
- 실시간:256
다음은 필요한 정보를 얻기 위해 wmic.exe를 실행하는 간단한 예입니다.
다음 명령을 사용하십시오:
wmic process list brief
로컬 컴퓨터에서 실행되는 프로세스 목록을 얻을 수 있습니다. 이제 다음 명령을 실행하십시오:
wmic process list brief | find "cmd.exe"
결과는 다음과 같습니다.
좀 더 잘 보여주기 위해 의도적으로 cmd.exe의 여러 복사본을 시작했습니다.
이제 프로세스 목록은 이름에 "cmd.exe"가 있는 프로세스로 제한됩니다. 프로세스의 PID에 주의하십시오.
이제 WMI를 사용하여 필요한 프로세스를 선택하려고 합니다. 이렇게 하려면 다음을 입력하세요.
wmic process where description='cmd.exe' list brief
결과는 다음과 같습니다.
결과를 비교합니다. CMD.EXE의 PID를 기억하십시오.
wmic.exe를 시작하는 명령 문자열
wmic process where processid='XXXX' CALL setpriority ProcessIDLevel
이제 특정 프로세스의 우선 순위를 변경할 수 있습니다(예:PID=8476):
wmic process where processid='8476' CALL setpriority 32768
또는
wmic process where processid='8476' CALL setpriority "above normal"
다음은? 최종 사용자 경험과 함께 서비스 및 프로세스의 성능을 개선하기 위해 우선순위를 생각하고 시도하고 선택하고 관리하십시오.