มาพูดถึงลำดับความสำคัญของกระบวนการ Windows . ในกรณีส่วนใหญ่ ไม่จำเป็นต้องคิดเกี่ยวกับการตั้งค่าลำดับความสำคัญของกระบวนการที่กำหนดเอง แต่บางครั้งผู้ดูแลระบบที่มีคุณสมบัติเหมาะสมสามารถช่วยระบบจัดสรรเวลาตัวประมวลผลระหว่างงานที่กำลังทำงานได้ดียิ่งขึ้น จำเป็นเมื่อใด ตัวอย่างเช่น บนแอปพลิเคชันเซิร์ฟเวอร์ คุณสามารถให้เวลา CPU มากขึ้นสำหรับแอปพลิเคชันและเซิร์ฟเวอร์ SQL เนื่องจากเป็นกระบวนการที่มีความสำคัญต่อทรัพยากรมากที่สุด
โดยทั่วไป คุณสามารถดูและเปลี่ยนลำดับความสำคัญของกระบวนการได้โดยใช้ตัวจัดการงาน (someprocess.exe -> ตั้งค่าลำดับความสำคัญ)
Windows NT/2000/7/2008
ใน Windows Server 2012 การตั้งค่าเหล่านี้จะอยู่ในแท็บรายละเอียด
ดังที่คุณเห็นจากสแนปชอตเหล่านี้ มีลำดับความสำคัญเพียง 6 ประเภท (ดังที่จะอธิบายในภายหลัง นี่คือ ลำดับความสำคัญ ) สามารถใช้ได้ เพียงพอหรือไม่ Microsoft คิดว่าใช่ แต่ขอให้จำคำพูดที่ยิ่งใหญ่ของ Bill Gates ผู้ซึ่งบอกว่า "แรม 640 KB เพียงพอสำหรับทุกคน" แต่เวลาได้แสดงให้เห็นแล้วว่าห่างไกลจากกรณี :)
มาดูกันว่ามันหน้าตาเป็นอย่างไร
ที่จริงแล้ว Windows มีลำดับความสำคัญ 32 ระดับตั้งแต่ 0 ถึง 31
โดยจัดกลุ่มดังนี้:
- 31 — 16 เป็นระดับตามเวลาจริง
- 15 — 1 เป็นระดับไดนามิก
- 0 เป็นระดับระบบที่สงวนไว้สำหรับเธรดที่ไม่มีหน้า
เมื่อกระบวนการถูกสร้างขึ้น จะได้รับมอบหมาย ระดับความสำคัญ . ให้เป็นหนึ่งในหก :
- คลาสเรียลไทม์ (ค่า 24),
- ชั้นสูง (ค่า 13),
- เหนือระดับปกติ (ค่า 10),
- คลาสปกติ (ค่า 8)
- ต่ำกว่าคลาสปกติ (ค่า 6)
- หรือคลาสว่าง (ค่า 4).
ตามที่กล่าวไว้ข้างต้น คุณสามารถดูลำดับความสำคัญของกระบวนการได้โดยใช้ตัวจัดการงาน
หมายเหตุ . ลำดับความสำคัญที่สูงกว่าปกติและต่ำกว่าปกติปรากฏขึ้นครั้งแรกใน Windows 2000ลำดับความสำคัญของแต่ละเธรด (พื้นฐาน ลำดับความสำคัญของเธรด ) ประกอบด้วยลำดับความสำคัญของกระบวนการและ ลำดับความสำคัญสัมพัทธ์ ของด้ายนั้นเอง ลำดับความสำคัญสัมพัทธ์ของเธรดมีเจ็ดประเภท:
- ปกติ:เหมือนกับกระบวนการที่มี
- เหนือปกติ:+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 [“title”] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /แชร์]
[/LOW | /ปกติ | /สูง | /เรียลไทม์ | /ABOVENORMAL | /BELOWNORMAL]
[/NODE
[command/program] [parameters]
ต่ำ เริ่มแอปพลิเคชันในคลาสลำดับความสำคัญ IDLE
NORMAL เริ่มการสมัครในคลาสที่มีลำดับความสำคัญ NORMAL
HIGH เริ่มแอปพลิเคชันในคลาสที่มีลำดับความสำคัญสูง
REALTIME เริ่มแอปพลิเคชันในคลาสลำดับความสำคัญ REALTIME
ABOVENORMAL เริ่มแอปพลิเคชันในคลาสลำดับความสำคัญ ABOVENORMAL
BELOWNORMAL เริ่มแอปพลิเคชันในคลาสลำดับความสำคัญ BELOWNORMAL
ดังที่เราเห็น คำสั่ง START อนุญาตให้เรียกใช้กระบวนการที่มีลำดับความสำคัญ 6 อย่างที่มีอยู่ในตัวจัดการงาน
ข้อเสียของวิธีการ:
- จัดลำดับความสำคัญได้เพียง 6 ประเภท
วิธีที่ 3 การใช้ยูทิลิตี้ wmic.exe
ดังที่แสดงไว้ข้างต้น คำสั่ง Task Manager และ 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
นี่คือผลลัพธ์:
เปรียบเทียบผลลัพธ์ จำ PID ของ CMD.EXE
สตริงคำสั่งเพื่อเริ่ม 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"
อะไรต่อไป? คิด ลอง เลือกและจัดการลำดับความสำคัญของคุณเพื่อปรับปรุงประสิทธิภาพของบริการและกระบวนการ ร่วมกับประสบการณ์ของผู้ใช้ปลายทาง