ฉันจะตั้งค่าความสัมพันธ์ของกระบวนการอย่างถาวรได้อย่างไร


17

ฉันมีเกมที่มีปัญหาเกี่ยวกับการใช้งาน CPU ดังนั้นหนึ่งในการแก้ไขคือการปิดการใช้งานหนึ่งคอร์จากซีพียู Quad คอร์ ตั้งแต่ทุกครั้งที่ฉันเปิดเกมฉันจะต้องเข้าไปที่ Task Manager ด้วยตนเองและป้อนความสัมพันธ์ด้วยตนเองซึ่งแย่มากเนื่องจากเกมดังกล่าวเพิ่งเปิดตัว แต่มีแนวโน้มที่จะล้มเหลวบ่อยครั้ง

มีวิธีแก้ปัญหาไม่ใช่ซอฟต์แวร์หรือไม่?

ฉันค้นหาวิธีแก้ปัญหาออนไลน์แล้วและดูเหมือนว่าจะมุ่งสู่ Windows 7 เท่านั้น มีวิธีแก้ปัญหาสำหรับผู้ใช้ Windows 8.1 เช่นฉันหรือไม่?


โปรดอธิบายสิ่งที่คุณหมายถึงโดย "ป้อนความสัมพันธ์ด้วยตนเอง"?
Pacerier

@Pierier ฉันต้องเปลี่ยน affinity ด้วยตนเองเนื่องจากโดยค่าเริ่มต้นจะเลือก CPU ทั้งหมดให้ทำงานด้วย
yuritsuki

คุณสามารถลองตั้งค่า "โหมดความเข้ากันได้" เป็นหน้าต่างรุ่นเก่าที่เพียงพอซึ่งตั้งค่าความสัมพันธ์กับแกนหลักเดียว แต่ฉันไม่มี win8 ในมือเพื่อตรวจสอบว่ายังใช้งานได้หรือไม่
CodesInChaos

@cyberwebpoweruser คำตอบด้านล่างใช้ได้สำหรับคุณหรือไม่
Pacerier

คำตอบ:


24

คุณสามารถสร้างทางลัดเพื่อกำหนดความสัมพันธ์

X:\Windows\System32\cmd.exe /C start /affinity Y game.exe

Y เป็นเลขฐานสิบหกและเป็นรูปแบบบิต:

0x1 - 0001 - Core0
0x2 - 0010 - Core1
0x3 - 0011 - Core1 & Core0
0x4 - 0100 - Core2
0x5 - 0101 - Core2 & Core0
0x6 - 0110 - Core2 & Core1
0x7 - 0111 - Core2 & Core1 & Core0
0x8 - 1000 - Core3
0x9 - 1001 - Core3 & Core0
0xA - 1010 - Core3 & Core1
0xB - 1011 - Core3 & Core1 & Core0
0xC - 1100 - Core3 & Core2
0xD - 1101 - Core3 & Core2 & Core0
0xE - 1110 - Core3 & Core2 & Core1
0xF - 1111 - Core3 & Core2 & Core1 & Core0

1
ฉันคิดว่าคุณมี 3 ข้อแรกที่ทำให้สับสน
Richie Frame

โอ้เจ้ากรรม .. ใช่ :) ถูกต้อง ..
The_aLiEn

4
@The_aLiEn คำถาม: หากกระบวนการนี้เริ่มกระบวนการอื่นกระบวนการที่สองนั้นสืบทอดความสัมพันธ์ของกระบวนการแรกหรือไม่ ฉันมีปัญหาเดียวกันกับเกม แต่ฉันต้องเปลี่ยนความสัมพันธ์บนตัวเรียกใช้งานและตัวจัดการดาวน์โหลดบุคคลที่สามที่เริ่มต้นโดยตัวเรียกใช้เพื่อให้ได้รับการแก้ไข
Nzall

2
คุณต้องการชิ้นcmd.exe /Cส่วนหรือว่าจะเพียงพอที่จะเริ่มต้นด้วยstartหรือไม่
deltab

2
@NateKerkhofs มันควรสืบทอด ไม่เพียง แต่เป็นพี่น้องกันเช่นตัวบอกความปลอดภัย, มือจับที่เป็นเจ้าของและอื่น ๆ
The_aLiEn

7

หากโดย "ไม่ใช่ซอฟต์แวร์" คุณหมายถึงไม่ต้องการซอฟต์แวร์เพิ่มเติมแสดงว่ามี คุณสามารถรันโปรแกรมจากสคริปต์คำสั่งและใช้สวิตช์ความสัมพันธ์"Start /AFFINITY 20 process.exe"

/AFFINITY 20ถือว่า20เป็นเลขฐานสิบหกโดยมีเลขฐานสองเทียบเท่า100000ซึ่งตั้งค่าความสัมพันธ์กับ core 5 จาก 0-5 ในโปรเซสเซอร์ 6 คอร์ มาสก์ฐานสิบหกที่คล้ายกันจะช่วยให้คุณปิดการใช้งานแกนหลักที่เฉพาะเจาะจงเช่นEซึ่งทำงานเฉพาะกระบวนการบนแกน 1-3 จาก 0-3 หรือ 0-5


"ไม่ใช่ซอฟต์แวร์" cmdหมายถึง
Pacerier

5

สำหรับคนอื่นที่กำลังมองหาคำตอบและไม่พบสิ่งใดโซลูชันที่ฉันพบคือใช้แอพที่เรียกว่าWinAFC (หรือ AffinityChanger) นี่คือ GUI บางส่วน, แอพบรรทัดคำสั่งบางส่วนที่อนุญาตให้คุณระบุโปรไฟล์สำหรับไฟล์ปฏิบัติการบางอย่างและจะสำรวจรายการกระบวนการสำหรับพวกเขา หากพบกระบวนการที่ตรงกันก็จะเปลี่ยนความสัมพันธ์ของกระบวนการเหล่านั้นตามการตั้งค่าในโปรไฟล์ที่โหลด

มีเอกสารบางส่วนที่นี่: http://affinitychanger.sourceforge.net/

สำหรับวัตถุประสงค์ของฉันฉันสร้างโปรไฟล์ที่มีลักษณะดังนี้:

TestMode = 0
TimeInterval = 1
*\convert.exe := PAIR0+PAIR1

โปรไฟล์นี้ตั้งค่ากระบวนการ convert.exe ใด ๆ เพื่อใช้คู่ CPU core คู่แรก (CPU0, CPU1, CPU2 และ CPU3), ทำการสำรวจทุก ๆ วินาที TestModeเป็นสลับที่ช่วยให้คุณดูว่าโปรไฟล์ของคุณทำงานได้หรือไม่โดยไม่ตั้งค่าความพอใจ

หวังว่าใครบางคนพบว่ามีประโยชน์นี้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.