Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Win7 Zugehörigkeit Prozessorkerne

Frage Microsoft Windows 7

Mitglied: infowars

infowars (Level 2) - Jetzt verbinden

04.07.2012, aktualisiert 15:17 Uhr, 6647 Aufrufe, 11 Kommentare

Moin,
ich versuche einen oder mehrere Prozesse mit allen Kernen zu starten.
Das klappt aber nicht. Ich habe auch schon Tools wie GnSAffinity und TaskAssign runtergeladen, aber auch mit denen will es einfach nicht.
Zuletzt habe ich so versucht die Prozesse über eine Kommando-Box mit mehr als nur einem Kern zu starten:

C:\Windows\System32\cmd.exe /C START "GTR2" /affinity 10 "X:\Program Files (x86)\SimBin\GTR 2\GTR2.exe"
C:\Windows\System32\cmd.exe /C START "GTR2" /affinity 10 "X:\Program Files (x86)\SimBin\GTR 2\GTR2Dedicated.exe"

Aber auch so wird der Prozess nur mit einem Kern gestartet. Der Rechner ist ein Win7 mit 64bit und einem 4-Kern AMD Phenom II.

Gibt es jemanden der dieses Problem schon hatte und es lösen konnte ?

Mit freundlichen Grüßen
Mitglied: Penny.Cilin
04.07.2012, aktualisiert um 10:16 Uhr
Moin,

1. Frage: Ist die Anwendung Mehrprozessorfähig, d. h. nutzt diese auch mehrere Prozesoren?
2. Frage: Was bezweckst Du damit, eine Anwenung gleich auf mehrere Prozessoren zu starten? Lass es doch das Betriebssystem bzw. der Anwendung entscheiden.

Außerdem mußt Du beimParameter /Affinity den Wert in Hex angeben also /Affinity 0x3 z. Beispiel.


Gruss Penny
Bitte warten ..
Mitglied: infowars
04.07.2012, aktualisiert um 10:42 Uhr
1. Ja, ich muss z.Z. immer manuell die Zugehörigkeit auf alle Kerne verteilen, da die CPU-Auslastung des 1.Kerns sonst permanent zu 100 % ausgelastet ist.
2. Win7 startet den Prozess immer nur mit CPU 0, die benötigte CPU-Power ist jedoch viel höher. Kann ja mal ein Bild mit der Auslastung posten

Das mit dem Hex-Wert hab ich da gelesen:
http://www.cosmiq.de/qa/show/3284930/Wie-kann-ich-bei-Win7-die-4-Kerne- ...

Hab mit dem Hex-Wert auch schon rumgespielt,egal ob 0x10 oder 10, der Prozess startet immer nur mit einem Kern.
Bitte warten ..
Mitglied: Penny.Cilin
04.07.2012 um 10:58 Uhr
Zitat von infowars:
C:\Windows\System32\cmd.exe /C START "GTR2" /affinity 10 "X:\Program Files (x86)\SimBin\GTR 2\GTR2.exe"
C:\Windows\System32\cmd.exe /C START "GTR2" /affinity 10 "X:\Program Files (x86)\SimBin\GTR
2\GTR2Dedicated.exe"

Abre wenn ich den Pfad sehe, dann ist es eine 32bit Anwendung. Und ist diese Mehrprozessorfägig? Um welche Anwendung handelt es sich?

Gruss Penny
Bitte warten ..
Mitglied: infowars
04.07.2012, aktualisiert um 11:25 Uhr
Das ist ein Rennspiel für den PC namens GTR2.
Sobald jemand auf dem dedizierten Server spielt, schiesst die CPU-Last nach oben.
Je mehr Spieler mitfahren, desto höher die CPU-Last.
Bei manuellem Einstellen der Zugehörigkeit verteilt sich die Last schön gleichmässig auf alle Kerne.
Wird beim Start des dedizierten Servers vergessen die Zugehörigkeit auf alle Kerne einzustellen ruckelt das Spiel grausig.
Wenn dann grad kein Admin da ist, ist das doof.
Gruss zurück.
Bitte warten ..
Mitglied: SlainteMhath
04.07.2012 um 11:27 Uhr
Moin,

Hab mit dem Hex-Wert auch schon rumgespielt,egal ob 0x10 oder 10,
10 dezimal ist 0xA in Hex, aber das nur nebenbei.

Du kannst keine Applikation "auf allen Kernen starten". Entweder das Programm ist Mehrkern/Multithreading fähig oder nicht.

Was du mach kannst: Programm 1 auf CPU0 laufen lassen, Programm 2 auf CPU1 und Program 3 auf CPU2 - das ist auch genau das was der /affinity Schalter bewirkt.

lg,
Slainte
Bitte warten ..
Mitglied: infowars
04.07.2012, aktualisiert um 11:46 Uhr
Zitat von SlainteMhath:
Hab mit dem Hex-Wert auch schon rumgespielt,egal ob 0x10 oder 10,
10 dezimal ist 0xA in Hex, aber das nur nebenbei.
Hab ich auch schon probiert, der Prozess startet nur auf CPU0.
Zitat von SlainteMhath: Du kannst keine Applikation "auf allen Kernen starten". Entweder das Programm ist Mehrkern/Multithreading fähig
oder nicht.
Wenn ich manuell die Zugehörigkeit festlege, ruckelt aber das Spiel nicht mehr.
Zitat von SlainteMhath:Was du mach kannst: Programm 1 auf CPU0 laufen lassen, Programm 2 auf CPU1 und Program 3 auf CPU2 - das ist auch genau das was der
/affinity Schalter bewirkt.
Dann muss das doch auch irgendwie für mehrere Kerne gehen, behauptet jedenfalls der da:
http://www.cosmiq.de/qa/show/3284930/Wie-kann-ich-bei-Win7-die-4-Kerne- ...
Zitat :
/affinity 3 (nimmt cpu 0 + 1)
Bitte warten ..
Mitglied: Penny.Cilin
04.07.2012, aktualisiert um 12:29 Uhr
Weil seine Anwendung vielleicht Mehrprozessor/Mehrkernfähig ist?.
Nur weil ein Anwender eine Anwendung auf mehrere Prozessoren/Kernen verteilen kann, heißt nicht das es bei JEDER Anwendung geht.

Prüfe doch erstmal, ob DEINE Anwendung Mehrkern/Multithreading überhaupt unterstützt.

Wenn Deine Anwendung Mehrkern/Multithreading NICHT unterstützt, wird es auch nicht funktionieren - Basta.

Gruss Penny
Bitte warten ..
Mitglied: SlainteMhath
04.07.2012 um 12:39 Uhr
0xA ... Hab ich auch schon probiert, der Prozess startet nur auf CPU0.
So eben mal nachgelsesen. /affinity erwartet eine DEZIMAL Zahl, die als Bitmaske für die zu verwendenten CPU Kerne interprtiert wird:
CPU0 = 1
CPU1 = 2
CPU3 = 4
CPU4 = 8

Alle zu verwendenten Kerne müssen zusammen gezählt werden. CPU0+CPU1 = 1+2 = 3 oder CPU2+CPU4 = 4+8 = 12

Dann muss das doch auch irgendwie für mehrere Kerne gehen, behauptet jedenfalls der da:
Ja die Sprechen da auch von dem Programm Blender - das ist ein Reaytracing Renderer der Multithrading unterstützt.

Wenn Deine Anwendung Mehrkern/Multithreading NICHT unterstützt, wird es auch nicht funktionieren - Basta.
Genau!
Bitte warten ..
Mitglied: infowars
04.07.2012, aktualisiert um 13:01 Uhr
So, nochmal nachgelesen, GTR2 ist definitiv Multicore-fähig, startet standardmässig aber nur mit einem Kern.
Bitte warten ..
Mitglied: Penny.Cilin
04.07.2012, aktualisiert um 13:34 Uhr
Dann schau mal hier:

link1 oder link2

oder nutze google suche

Es scheint hier widersprüchliche Aussagen zu geben.
Bitte warten ..
Mitglied: infowars
04.07.2012, aktualisiert um 15:26 Uhr
Bin auch grad soweit, dass ich jetzt mit dem Auto-Updater Einstellungen vornehme, die es sonst nicht (offen) gibt.
Frage mich nur gerade:
Wenn die es mit einem Tool schaffen muss es ja einen Weg geben.
What ever, ich klemme mich mal dahinter und poste dann das Ergebnis:

EDIT:
Die Verknüpfung, die angelegt wird sieht dann so aus:
C:\Python27\pythonw.exe "C:\Pfad\Bierbuden Autoupdate\cpuaffinity.py" --cpuid=0,1,2,3 "u:\Program Files (x86)\SimBin\GTR 2\GTR2.exe"

Und damit funktionierts !!!
Muss mich wohl mal mit Python beschäftigen.
Danke an alle Antworten !
Mit freundlichen Grüßen


Hier noch der Code:
01.
#!/usr/bin/env python 
02.
# -*- coding: utf-8 -*- 
03.
04.
# $Id: cpuaffinity.py 770 2011-10-19 21:00:15Z Stef $ 
05.
# Copyright (C) 2011 Stefan Schwendeler ( kungpfui@gmail.com ) 
06.
 
07.
""" Set CPU affinity and process priority of a new process. """ 
08.
 
09.
__version__ = u'$Revision: 770 $' 
10.
__author__ = u'Stefan Schwendeler' 
11.
 
12.
import os, sys 
13.
import optparse 
14.
import multiprocessing 
15.
import time 
16.
from ctypes import * 
17.
 
18.
 
19.
check_interval	= 5.0 
20.
validation_nb	= 12 
21.
 
22.
 
23.
# some constants of windows os 
24.
priorities = { 
25.
	'low':			0x00000040, 
26.
	'below_normal':	0x00004000, 
27.
	'normal':		0x00000020, 
28.
	'above_normal':	0x00008000, 
29.
	'high':			0x00000080, 
30.
	'realtime':		0x00000100, 
31.
32.
 
33.
 
34.
BYTE      = c_ubyte 
35.
WORD      = c_ushort 
36.
DWORD     = c_ulong 
37.
DWORD_PTR = c_ulong if sizeof(c_void_p) == 4 else c_ulonglong 
38.
LPBYTE    = POINTER(c_ubyte) 
39.
LPTSTR    = POINTER(c_char) 
40.
HANDLE    = c_void_p 
41.
PVOID     = c_void_p 
42.
LPVOID    = c_void_p 
43.
 
44.
class STARTUPINFO(Structure): 
45.
    _fields_ = [("cb",            DWORD), 
46.
                ("lpReserved",    LPTSTR), 
47.
                ("lpDesktop",     LPTSTR), 
48.
                ("lpTitle",       LPTSTR), 
49.
                ("dwX",           DWORD), 
50.
                ("dwY",           DWORD), 
51.
                ("dwXSize",       DWORD), 
52.
                ("dwYSize",       DWORD), 
53.
                ("dwXCountChars", DWORD), 
54.
                ("dwYCountChars", DWORD), 
55.
                ("dwFillAttribute",DWORD), 
56.
                ("dwFlags",       DWORD), 
57.
                ("wShowWindow",   WORD), 
58.
                ("cbReserved2",   WORD), 
59.
                ("lpReserved2",   LPBYTE), 
60.
                ("hStdInput",     HANDLE), 
61.
                ("hStdOutput",    HANDLE), 
62.
                ("hStdError",     HANDLE),] 
63.
 
64.
class PROCESS_INFORMATION(Structure): 
65.
    _fields_ = [("hProcess",    HANDLE), 
66.
                ("hThread",     HANDLE), 
67.
                ("dwProcessId", DWORD), 
68.
                ("dwThreadId",  DWORD),] 
69.
 
70.
 
71.
DETACHED_PROCESS = 0x00000008 
72.
 
73.
 
74.
def main(): 
75.
	""" the main routine :-)""" 
76.
	usage = "usage: %prog [options] <program path> [<arg 1> <arg n>]" 
77.
	parser = optparse.OptionParser(usage=usage) 
78.
	parser.disable_interspersed_args() 
79.
	parser.add_option("-c", "--cpuid", default="0", dest="cpuid", help="list of comma separated cpu IDs. E.g. 0,3 or 4,5") 
80.
	parser.add_option("-p", "--priority", default="normal", type="choice", choices=priorities.keys(), dest="priority", help="process priority class. [low, normal, high, realtime] - Default: %default") 
81.
	options, args = parser.parse_args() 
82.
 
83.
	if len(args) < 1: parser.error("incorrect number of arguments") 
84.
 
85.
	# check cpu IDs 
86.
	try: 
87.
		cpu_ids = [ int(id) for id in options.cpuid.split(',') ] 
88.
	except: 
89.
		parser.error("incorrect cpu id parameter") 
90.
 
91.
	cpu_count = multiprocessing.cpu_count() 
92.
	if not all([ id < cpu_count for id in cpu_ids ]): 
93.
		parser.error("invalid cpu id value") 
94.
 
95.
	# check program path 
96.
	if not os.path.exists(args[0]) or not os.path.isfile(args[0]): 
97.
		parser.error("incorrect program path") 
98.
 
99.
	cpu_affinity_mask = 0 
100.
	for id in cpu_ids: 
101.
		cpu_affinity_mask += (1 << id); 
102.
 
103.
	# re-join the commands to a string 
104.
	command = '' 
105.
	for arg in args: 
106.
 
107.
		if ' ' in arg: arg = '"'+arg+'"' 
108.
		if command != '': command += ' ' 
109.
		command += arg 
110.
 
111.
	startup_dir = os.path.dirname(args[0]) or None 
112.
 
113.
	priority_class = priorities[options.priority] 
114.
 
115.
	# start the process 
116.
	si = STARTUPINFO(); 
117.
	si.cb = sizeof(si) 
118.
	pi = PROCESS_INFORMATION(); 
119.
	if not windll.kernel32.CreateProcessA(None, command, None, None, False, DETACHED_PROCESS | priority_class, None, startup_dir, byref(si), byref(pi)): 
120.
		print("Can't create process."); 
121.
		sys.exit(1) 
122.
 
123.
	# wait some seconds 
124.
	time.sleep(check_interval) 
125.
 
126.
	dwProcessMask = DWORD_PTR(0) 
127.
	dwSystemMask = DWORD_PTR(0) 
128.
	if windll.kernel32.GetProcessAffinityMask ( pi.hProcess,  byref(dwProcessMask), byref(dwSystemMask) ) \ 
129.
		and (dwSystemMask.value & cpu_affinity_mask): 
130.
 
131.
		validations = 0 
132.
 
133.
		#~ print dwSystemMask.value, dwProcessMask.value, cpu_affinity_mask 
134.
		while validations < validation_nb: 
135.
			if not windll.kernel32.SetProcessAffinityMask( pi.hProcess, DWORD_PTR(dwSystemMask.value & cpu_affinity_mask) ): 
136.
				error_code = windll.kernel32.GetLastError() 
137.
				print("Error [%d]: Can't set process affinity mask.", error_code) 
138.
				break 
139.
 
140.
			time.sleep(check_interval) 
141.
			if not windll.kernel32.GetProcessAffinityMask ( pi.hProcess, byref(dwProcessMask), byref(dwSystemMask) ): 
142.
				print("Error Can't set process affinity mask.") 
143.
				break 
144.
			#~ print dwSystemMask.value, dwProcessMask.value, cpu_affinity_mask 
145.
			if ( dwSystemMask.value & cpu_affinity_mask ) != dwProcessMask.value: 
146.
				validations = 0 
147.
			else: 
148.
				validations += 1 
149.
 
150.
	else: 
151.
		print("Error: Can't set process affinity mask. CPU ID does not exist.") 
152.
 
153.
	windll.kernel32.CloseHandle(pi.hThread) 
154.
	windll.kernel32.CloseHandle(pi.hProcess) 
155.
 
156.
	sys.exit(0) 
157.
 
158.
 
159.
 
160.
if __name__ == "__main__": 
161.
	main() 
162.
 
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...