จะเปลี่ยนลำดับความสำคัญของ I / O ของกระบวนการหรือเธรดใน Win7 ได้อย่างไร


32

Process Explorer สามารถแสดงลำดับความสำคัญ IO ที่มีประสิทธิภาพของเธรดที่กำหนด แต่ไม่สามารถเปลี่ยนแปลงได้ การเห็นว่าเป็นการสนับสนุนลำดับความสำคัญของ IO เป็นคุณสมบัติที่ค่อนข้างใหม่โปรแกรมส่วนใหญ่ไม่ได้ตั้งค่าลำดับความสำคัญของ IO ปรากฏว่าโดยค่าเริ่มต้นลำดับความสำคัญของ IO มาจากลำดับความสำคัญของเธรด (แทนระดับความสำคัญของกระบวนการ) ซึ่ง Process Explorer ไม่สามารถแก้ไขได้

มีเครื่องมืออื่น ๆ ที่สามารถช่วยฉันเปลี่ยนลำดับความสำคัญของ IO ของเธรดที่กำหนด / เธรดทั้งหมดของกระบวนการที่กำหนดได้หรือไม่?


มีคำถามแบบเดียวกันเกี่ยวกับ Stack Overflow: stackoverflow.com/questions/301290/…
Mehper C. Palavuzlar

3
@ [Mehper C. Palavuzlar] จริง แต่นี่ไม่ใช่สำหรับซอฟต์แวร์ที่ฉันพัฒนา - ฉันกำลังมองหาเครื่องมือสำเร็จรูปที่จะทำสิ่งนี้กับซอฟต์แวร์บุคคลที่สาม
RomanSt

คำตอบ:


11

เครื่องมือสำเร็จรูป

เครื่องมือของบุคคลที่สามเพื่อดำเนินการตั้งค่าลำดับความสำคัญของ I / O ทั้งโดยการกระทำของผู้ใช้คู่มือหรืออัตโนมัติและความเพียรจะเป็นกระบวนการเชือก สามารถตั้งค่าการตั้งค่ากระบวนการเกือบทั้งหมดและทำอย่างต่อเนื่องหรือตามกฎ (เช่นเมื่อเกิดเหตุการณ์นี้ให้เปลี่ยนลำดับความสำคัญ I / O ของที่)

คำตอบแบบเป็นโปรแกรม

คำตอบคือการเรียกง่าย API เพื่อ API ที่ NT พื้นเมืองNTSetInformationProcess มันถูกกำหนดให้เป็นคลาส 'IoPriority' ใน 2008 DDK ใน NT6 เพียงสองระดับที่รองรับ: ต่ำมาก (ประวัติ) และปกติ มีการกำหนดทางเทคนิค 5 ระดับ - ที่สำคัญสูงปกติต่ำและต่ำมาก ระดับวิกฤติถูกสงวนไว้สำหรับการดำเนินการเพจ ไม่มีข้อมูลเกี่ยวกับผู้อื่น

อย่างไรก็ตามวิธีที่เหมาะสมในการใช้ลำดับความสำคัญ I / O เพียงเพื่อเริ่มต้น 'โหมดพื้นหลัง' ผ่านการเรียกไปยัง Windows API SetProcessPriorityClassโดยจัดหา PROCESSS_MODE_BACKGROUND_BEGIN สิ่งนี้จะทำให้มันใช้ลำดับความสำคัญต่ำมาก (พื้นหลัง) I / O พร้อมกับระดับความสำคัญของ CPU IDLE เมื่อเสร็จแล้วให้ย้อนกลับผ่าน PROCESS_MODE_BACKGROUND_END

SetThreadPriority API ยังจะช่วยให้โหมดพื้นหลังนี้เหมือนกันสำหรับหัวข้อที่เฉพาะเจาะจง ที่นี่คุณจะจัดหา THREAD_MODE_BACKGROUND_BEGIN / END


ฉันไม่ได้เขียนโปรแกรม windows และสิ่งต่าง ๆ ในระดับระบบปฏิบัติการ แต่ฉันเคยได้ยินเรื่องการจัดลำดับความสำคัญของเธรดมาตลอดจนถึง THREAD_PRIORITY_TIME_CRITICAL ซึ่งเป็นไปได้สำหรับโปรแกรมหรือโปรแกรมของคุณหรือไม่? หรือยังเป็นเพียง IO PRIORITY เท่านั้นที่สามารถปรับได้ ฉันเดาว่าการเปลี่ยนลำดับความสำคัญของ IO จะไม่สร้างความแตกต่างอย่างมากต่อการใช้งาน CPU ใช่ไหม
barlop

ใช่. ทั้งสามารถตั้งค่าและคงอยู่ สามารถตั้งค่าสิ่งอื่น ๆ ได้หลายอย่างหรือเปลี่ยนแปลงแบบไดนามิกตามกฎ (เช่น CPU affinity) ลำดับความสำคัญ I / O แตกต่างจากลำดับความสำคัญของ CPU ขวา
dyasta

นั่นไม่ใช่ "เครื่องมือสำเร็จรูปในการทำเช่นนี้กับซอฟต์แวร์ของบุคคลที่สาม"
Cees Timmerman

ขออภัยฉันคิดว่าคำถามอาจได้รับการแก้ไขอย่างชัดเจนว่าฉันได้รับคำตอบจากด้านโปรแกรม (ไม่ใช่แก้ไข) Process Lasso เป็น 'เครื่องมือสำเร็จรูปสำหรับการทำสิ่งนี้กับซอฟต์แวร์บุคคลที่สาม' ดูbitsum.com
dyasta

23

ฉันพัฒนามันหลังจากที่เห็นไม่มีใครใส่ใจกับมัน: https://sourceforge.net/projects/iopriority/ (โอเพ่นซอร์ส)

โปรแกรมนี้สามารถตั้งค่าลำดับความสำคัญ I / O ของกระบวนการและเธรดทั้งหมดจะได้รับผลกระทบโดยทันที มันค่อนข้างง่ายที่จะปรับเปลี่ยนให้ทำงานกับเธรดแทนกระบวนการ


1
ฉันเพิ่งสังเกตเห็นว่าคุณไม่อนุญาตให้เปลี่ยนกระบวนการเป็นลำดับความสำคัญสูงบนเซิร์ฟเวอร์ 2012R2
jftuga

14

ProcessHackerเป็นเครื่องมือ GUI ที่สามารถเปลี่ยนลำดับความสำคัญ IO ของกระบวนการโดยพลการ


ทำไมดูเหมือนว่าสิ่งที่ Russinovich ทำ
Daniel Mošmondor

1
@ DanielMošmondorบางทีมันอาจจะเป็นแรงบันดาลใจจาก ProcExp และข้อ จำกัด ของมัน? ฉันเปลี่ยนเป็นการส่วนตัวเพราะ ProcExp แสดงการใช้งาน CPU ผิดอย่างสมบูรณ์ในแล็ปท็อปของฉันหลังจากรุ่น 14
RomanSt

1
ไม่เพียงเท่านั้น ProcExp ก็ยังสามารถ BSOD คอมพ์ของฉัน ฯลฯ ได้ฟรีหรือไม่
Daniel Mošmondor

@ DanielMošmondorใช่ยิ่งกว่านั้นจริงๆแล้วดูเหมือนจะทำมากกว่า ProcExp ในทุก ๆ ทาง UI ที่แตกต่างกันเล็กน้อย แต่มีความสามารถอย่างแท้จริง
RomanSt

1

ฉันเป็นส่วนหนึ่งของแอปฟรีที่เรียกว่า PRIO ซึ่งเป็นโปรแกรมรักษาลำดับความสำคัญของกระบวนการ (เหนือสิ่งอื่นใด) ที่มีขนาดเล็กมาก (น้อยกว่า 1 MB) หลังจากการติดตั้งมันจะทำงานเงียบ ๆ ในพื้นหลังจนกว่าคุณจะต้องการมันและส่วนต่อประสานของมันจะสร้างโดยตรงไปยังตัวจัดการงานของ Windows ขยายการทำงานและทำให้ราวกับว่าคุณสมบัติที่เพิ่มเข้ามานั้นเป็นส่วนหนึ่งของตัวจัดการงานเสมอ เมื่อคุณคลิกขวาที่กระบวนการในตัวจัดการงานด้วยความตั้งใจที่จะเปลี่ยนลำดับความสำคัญของคุณสมบัติที่เพิ่มเข้ามาบางอย่างของ PRIO จะปรากฏขึ้นเนื่องจากคุณสามารถเปลี่ยนไม่เพียง แต่ลำดับความสำคัญของซีพียูของกระบวนการเท่านั้น และคุณสามารถเลือกที่จะบันทึกการตั้งค่าใหม่หากคุณต้องการ สิ่งสุดท้ายนี้ทำให้ทุกครั้งที่มีการเรียกใช้กระบวนการ (เช่นโปรแกรมนั้น) ทั้งลำดับความสำคัญของกระบวนการ CPU และ I / O ที่ตั้งค่าและบันทึกโดยคุณจะมีผล

แอพมีคุณสมบัติอื่น ๆ ที่ยังขยายการทำงานของแท็บต่าง ๆ ในตัวจัดการงานของ Windows มีเวอร์ชันสำหรับระบบทั้ง 32- บิตและ 64 บิตและแอพนี้ให้บริการฟรีสำหรับใช้ส่วนตัว


ฟังดูเหมือนแอพที่ยอดเยี่ยม มีลิงค์หรือไม่?
Stijn de Witt

1
ถ้าคุณหมายถึง PRIO มันมีให้จากผู้รวบรวมเนื้อหาที่แตกต่างกันจำนวนมาก (เช่น cnet) แต่โดยตรงจากเว็บไซต์ของผู้พัฒนาจะเป็นprnwatch.com/prio
Mike Mounier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.