Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Quản lý độ ưu tiên tiến trình trong Windows

Hãy nói về độ ưu tiên tiến trình Windows. Trong hầu hết các trường hợp, không cần nghĩ đến cài đặt độ ưu tiên tiến trình tùy chỉnh, nhưng đôi khi một system admin giỏi có thể giúp hệ thống phân bổ thời gian xử lý tốt hơn giữa các task đang chạy. Khi nào cần thiết? Ví dụ trên application server, bạn có thể cấp thêm CPU time cho ứng dụng và SQL server, như những tiến trình quan trọng nhất về tài nguyên.

Nói chung, bạn có thể xem và thay đổi độ ưu tiên tiến trình dùng Task Manager (someprocess.exe -> Set Priority)

Windows NT/2000/7/2008

Trong Windows Server 2012, các cài đặt này nằm ở tab Details.

Như bạn thấy từ ảnh chụp này, chỉ có 6 loại độ ưu tiên (sẽ được giải thích sau, đây là các priority classes) có sẵn. Microsoft nghĩ là đủ. Nhưng hãy nhớ câu nói nổi tiếng của Bill Gates, nói rằng "640 KB RAM sẽ đủ cho mọi người". Nhưng thời gian đã chứng minh đó không phải là sự thật. : )

Bây giờ hãy xem, thực tế nó trông như thế nào.

Thực tế, có 32 mức độ ưu tiên trong Windows, từ 0 đến 31.

Chúng được nhóm như sau:

  1. 31 — 16 là mức real-time
  2. 15 — 1 là mức dynamic
  3. 0 là mức hệ thống dành cho zero-page thread

Khi tiến trình được tạo, nó được gán một trong sáu priority classes:

  1. Real time class (giá trị 24),
  2. High class (giá trị 13),
  3. Above normal class (giá trị 10),
  4. Normal class (giá trị 8),
  5. Below normal class (giá trị 6),
  6. hoặc Idle class (giá trị 4).

Như đã đề cập, bạn có thể xem độ ưu tiên tiến trình dùng Task Manager.

Lưu ý. Above normal và Below normal priority lần đầu xuất hiện trong Windows 2000.

Độ ưu tiên của từng thread (cơ bản thread priority) được cấu thành từ độ ưu tiên của tiến trình của nó và relative priority của chính thread đó. Có bảy loại relative priority của thread:

  • Normal: giống với tiến trình
  • Above normal: +1 so với độ ưu tiên tiến trình
  • Below normal: -1 từ độ ưu tiên tiến trình
  • Highest: +2;
  • Lowest: -2;
  • Time critical: đặt độ ưu tiên hiện tại của thread là 31 cho Real time class, và 15 cho các class còn lại
  • Idle: đặt độ ưu tiên hiện tại của thread là 16 cho Real time class, và 1 cho các class còn lại

Bảng sau cho thấy độ ưu tiên tiến trình, relative và current priority của thread.

Thread Priority Process Class Process Class
Idle class Below normal class Normal class Above normal class High class Real time class
1 Idle Idle Idle Idle Idle
2 Lowest
3 Below …
4 Idle class Normal Lowest
5 Above … Below …
6 Below normal class Highest Normal Lowest
7 Above … Below …
8 Normal class Highest Normal Lowest
9 Above … Below …
10 Above normal class Highest Normal
11 Above … Lowest
12 Highest Below …
13 High class Normal
14 Above …
15 Highest
15 Time critical Time critical Time critical Time critical Time critical
16 Idle
17
18
19
20
21
22 Lowest
23 Below …
24 Real time class Normal
25 Above …
26 Highest
27
28
29
30
31 Time critical

Cách khởi động tiến trình với độ ưu tiên không tiêu chuẩn hoặc thay đổi nó?

Phương pháp 1. Khởi động task/tiến trình và thay đổi độ ưu tiên dùng Task Manager

Nhược điểm phương pháp:

  • Chỉ có 6 loại độ ưu tiên
  • Độ ưu tiên thay đổi bằng chuột và bạn không thể tự động hóa.

Phương pháp 2. Dùng lệnh START với các key tương ứng

Các key có sẵn chịu trách nhiệm về độ ưu tiên như sau (tôi cố tình bỏ qua key của lệnh START không liên quan đến việc thiết lập độ ưu tiên được mô tả):

C:\>start /?
Starts a separate window to run a specified program or command.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE ] [/AFFINITY ] [/WAIT] [/B]
[command/program] [parameters]
LOW Start application in the IDLE priority class.
NORMAL Start application in the NORMAL priority class.
HIGH Start application in the HIGH priority class.
REALTIME Start application in the REALTIME priority class.
ABOVENORMAL Start application in the ABOVENORMAL priority class.
BELOWNORMAL Start application in the BELOWNORMAL priority class.

Như chúng ta thấy, lệnh START cho phép chạy tiến trình với cùng 6 độ ưu tiên có sẵn trong Task Manager

Nhược điểm phương pháp:

  • Chỉ có 6 loại độ ưu tiên

Phương pháp 3. Sử dụng tiện ích wmic.exe

Như đã chỉ ra, Task Manager và lệnh START khá bất tiện trong việc gán độ ưu tiên. Hãy xem cách làm linh hoạt hơn. Chúng ta sẽ dùng wmic.exe.

Command prompt:

wmic process where name="AppName" CALL setpriority ProcessIDLevel

Ví dụ:

wmic process where name="calc.exe" CALL setpriority 32768

hoặc

wmic process where name="calc.exe" CALL setpriority "above normal"

Độ ưu tiên (preset):

  • idle: 64
  • below normal: 16384
  • normal: 32
  • above normal: 32768
  • high priority: 128
  • real time: 256

Lưu ý. Làm gì nếu có vài tiến trình cùng tên? Độ ưu tiên tiến trình có thể thay đổi dùng cả tên hoặc PID (Process ID).

Dưới đây là ví dụ ngắn chạy wmic.exe để lấy thông tin cần thiết.

Dùng lệnh này:

wmic process list brief

Lưu ý. Tôi không đưa ví dụ chạy lệnh này vì danh sách tiến trình quá dài. Tự làm nếu bạn muốn.

Bạn sẽ nhận được danh sách tiến trình chạy trên máy cục bộ. Bây giờ chạy lệnh này:

wmic process list brief | find "cmd.exe"

Kết quả:

Tôi cố tình khởi động vài bản sao cmd.exe, để làm cho nó rõ ràng hơn.

Bây giờ danh sách tiến trình bị giới hạn ở những tiến trình có "cmd.exe" trong tên. Chú ý PID của tiến trình.

Bây giờ hãy thử chọn tiến trình cần thiết dùng WMI. Để làm điều đó, chỉ cần nhập:

wmic process where description='cmd.exe' list brief

Kết quả:

So sánh kết quả. Nhớ PID của CMD.EXE.

Chuỗi lệnh chạy wmic.exe

wmic process where processid='XXXX' CALL setpriority ProcessIDLevel

Bây giờ chúng ta có thể thay đổi độ ưu tiên của tiến trình cụ thể (ví dụ, PID=8476):

wmic process where processid='8476' CALL setpriority 32768

hoặc

wmic process where processid='8476' CALL setpriority "above normal"

Tiếp theo? Suy nghĩ, thử, chọn và quản lý độ ưu tiên để cải thiện hiệu suất dịch vụ và tiến trình, cùng với trải nghiệm người dùng cuối.