zeroblue2005
Goto Top

Anwendung auf 2 CPU Kerne beschränken u. Priorität erhöhen...

Hallo Zusammen,

ich suche eine Einstellung, womit ich eine ältere Anwendung, die zwar auf einem Terminal-Server, so wie lokal unter Server 2008 R2 oder Win. 7 x64 läuft, jedoch sich sehr schwer tut mit Mehrkern CPUs. Ständig erscheint keine Rückmeldung uns es ist laaaaaaaaaaaaaaaaaaaangsam...

Nach dem ich EasyToolz installiert hatte und die Anwendung auf zwei CPU-Kerne begrenz hatte, war das Tempo angemessen bzw. schnell!

Das dumme dabei ist nur, dass das dieses Tool zwar auch mit Benutzerrechten läuft also als GUI und auch als Benutzer Einstellungen tätigen könnte, jedoch er scheint damit nicht zu Arbeiten. Setze ich den Benutzer in die Gruppe Admin... hoch klappt das!

Nun frage ich mich, das toll greift doch auch nur auf Boardmittel zurück, wo kann ich festlegen, welche Anwendungen *.exe mit wie viel CPU Kerne laufen soll und das die Anwendung in Echtzeit ausgfeführt werden soll?

Danke Mike

Content-Key: 218274

Url: https://administrator.de/contentid/218274

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: Snowman25
Snowman25 01.10.2013 aktualisiert um 14:35:52 Uhr
Goto Top
Hallo @zeroblue2005,

Das kannst du im Task-Manager einstellen: Rechtsklick auf den Prozess --> Priorität festlegen --> Echtzeit UND Zugehörigkeit festlegen....
Leider ist es nicht möglich, eine Standard-Einstellung hierfür zu erzwingen. face-sad

Gruß,
@Snowman25
Mitglied: zeroblue2005
zeroblue2005 01.10.2013 um 14:40:27 Uhr
Goto Top
Das kannst du im Task-Manager einstellen: Rechtsklick auf den Prozess --> Priorität festlegen -->
Echtzeit UND Zugehörigkeit festlegen....
Leider ist es nicht möglich, eine Standard-Einstellung hierfür zu erzwingen. face-sad

Genau das ist mein Problem, das muss es doch trotzdem geben...
Mitglied: Bitboy
Bitboy 01.10.2013 um 14:42:04 Uhr
Goto Top
Hi,

Einstellungsmässig ist mir da nichts bekannt, aber du könntest versuchen das Programm über eine spezielle Verknüpfung starten zu lassen. Eventuell funktioniert das ohne Administratorrechte.

Das Ziel der Verknüpfung könnte so aussehen: C:\Windows\System32\cmd.exe " /c start /affinity 1 /realtime notepad.exe"
Mitglied: zeroblue2005
zeroblue2005 01.10.2013 um 17:47:00 Uhr
Goto Top
Danke ich werde es versuchen wofür steht der Parameter /c ???
Mitglied: Bitboy
Bitboy 02.10.2013 um 08:04:21 Uhr
Goto Top
Da man primär die cmd aufruft sagt der Parameter /c dass der angegebene Befehl ausgeführt werden soll und die CMD anschliessend geschlossen wird.
Mitglied: zeroblue2005
zeroblue2005 02.10.2013 aktualisiert um 09:00:16 Uhr
Goto Top
Hallo BitBoy,

danke für die Hilfe es scheint auch zu gehen, nur mit dem Parameter /C will er nicht starten! So würde das klappen:

start /affinity 2 /realtime notepad.exe

Jetzt habe ich noch mal ein paar fragen;

1. Die Anzahl der CPU Kerne wie steuer ich ich die? Wenn ich einen Kern will schreibe ich 1 und bei 2 nimmt er den 2ten. Bei 0 macht er nichts. Wie sieht das bei einem 6 Kern CPU aus wie schreibe ich das den wenn er nur zwei Kerne benutzen soll oder nur 4?

2. Das mit Realtime unter Benutzerrechten geht leider nicht max. kann man als Benutzer in Hoch arbeiten! Für Realtime muss man Admin sein! OK aber Hoch ist ja auch gut!

3. Bei mir geht es im Prinzip um MS-Access 2003 und eine *.mdb die direkt dahinter gestartet werden soll! Weisst du wie die Syntax auszusehen hat?

z.B: start /affinity 2 /realtime "C:\Program Files (x86)\Microsoft Office\OFFICE11\msaccess.exe" "C:\test\start.mdb"

Super wäre nartürlich auch, wenn man das ganze noch koppeln könnte mit runas als Admin oder so face-wink
Mitglied: Snowman25
Snowman25 02.10.2013 aktualisiert um 09:49:48 Uhr
Goto Top
Aus der Hilfe zu start (start /?:
AFFINITYLegt die Prozessoraffinitätsmaske als Hexadezimalzahl fest. Der Prozess kann nur auf diesen Prozessoren ausgeführt werden.
Im Endeffekt ist das eine Bitmaske, die du Hexadezimal vorgeben musst.
Hexadezimal 0x Binär 0b Dezimal Erklärung
0 0 0 Keine Prozessoren. Nicht möglich
1 1 1 1. Prozessor
2 10 2 2. Prozessor
3 11 3 1. und 2. Prozessor
9 1001 9 1. und 4. Prozessor
30 110000 48 5. und 6. Prozessor

Natürlich kannst du das ganze in ein runas /user:Administrator "<dein command>" packen. Die Anführungszeichen sind hierbei wichtig und dürfen nicht ausgelassen werden!

Gruß,
@Snowman25
Mitglied: Bitboy
Bitboy 02.10.2013 um 10:06:00 Uhr
Goto Top
Genau, jeder Prozessor hat eine Nummer

CPU1 = 1
CPU2 = 2
CPU3 = 4
CPU4 = 8
CPU5=16
usw.

Um die Anwendung auf bestimmte Prozessoren/Kerne festzulegen musst du nur die Zahlen der CPUs zusammenaddieren und ins Hex-Format umwandeln (kann der Windows Taschenrechner).

Der Syntax müsste so aussehen:
C:\Windows\System32\cmd.exe " /c start /affinity 1 /realtime "C:\Program Files (x86)\Microsoft Office\OFFICE14\winword.exe" C:\test\test.docx"
Problem bei sowas sind immer die Leerzeichen die von der cmd als Befehlsende interpretiert werden, daher muss man Anführungszeichen drum rum bauen, da ist meist etwas probieren angesagt, grade wenn die Parameter auch noch Leerzeichen enthalten.

Falls du mit dem Gedanken spielst runas zu benutzen um dem User das eingeben eines Admin Kennwortes zu ersparen (was dieser btw nicht kennen sollte) kann ich nur davon abraten runas in so einer verknüpfung zu benutzen. Das Passwort würde im Klartext drinstehen und wäre für jeden lesbar (ja das windows runas nimmt kein Passwort, aber gibt schliesslich Ersatztools die eins akzeptieren).

Daher wenn Priorität Hoch zum sauberen Ausführen des Programms reicht, würde ich da rein mit Standardbenutzerrechten arbeiten.
Mitglied: zeroblue2005
zeroblue2005 02.10.2013 um 10:56:38 Uhr
Goto Top
Hallo ihr beiden,

vielen Dank für eure Hilfe face-smile. Ihr habt mich weiter gebracht! Jedoch werde ich das ganze doch mit einem runas machen müssen! Ich habe das gemessen, mit Realtime ist das doch schneller! Ich habe im Netzauch ein Programm gefunden, was genau dafür ist, es heißt: Lunch.exe hier mal die Anleitung dazu:

Launch.exe ausführbares Programm für Windows XP/ Vista/ Server 2003/2008

Launch ist ein Kommandozeilen-Tool, das mehrere Programme gleichzeitig auf
verschiedenen Prozessoren anstarten kann. Dabei lässt sich auch die
jeweilige Prioritätsklasse und die Priorität des Hauptthreads vorwählen.

Launch file1 [Parameter1] file2 [Parameter2] file3 [Parameter3] ...

Parameter:


Launch file1 [Parameter1] file2 [Parameter2] file3 [Parameter3] ...
/p="xxxx yyyy zzz" Parameter für die Applikation, "" für " im String
/a=xxx Prozessoraffinität für file, xxx= 0 ohne (ist default)
1: Prozessor 0, 2:Prozessor 1, 3:Prozessor 0+1, 4: Prozessor 2 ...
=* Prozessoraffinität wird linear aufsteigend für die Instanzen gesetzt
/ap=xxx wie a, nur ist xxx keine Maske, sondern eine Prozessornummer (ab 0)
/a=s[catter] benutzt topologisch möglichst entfernte Cores
/a=c[ompact] benutzt topologisch möglichst nahe Cores
/a=s? oder /a=c? gibt die benutzen topologische Liste der Cores aus
/c=xxx Prioritätsklasse xxx=N[ormal] ist default,
I[dle],B(elow),H[igh], A[bove], R(ealtime)
/t=xxx ThreadPriorität xxx=N[ormal] ist default,
L[owest],B(elow), A[bove],T[imecritical]
/u=xxx startet file xxx-mal an (mit xxx <= 32
dann kann man mit Affinitäten und Prioritäten über eine mit Kommata
getrennten Liste eingeben:
z.B Launch test.exe /u=4 /a=1,2,4,8 /c=H,H,I,I
startet viermal test.exe auf Prozessor 0,1,2,3 -- sofern vorhanden
die ersten beiden Aufrufe mit hoher Priorität, die nächsten mit Idle
Es gilt hierbei das Wrap around, ist xxx größer als die Liste,
so beginnt die Zuordnung wieder von vorn.
/w Launch wartet das Ende aller gestarteter Applikationen ab
und zeigt Kernel/User/Idle-Zeiten an

/r=na:pw runas mit name:passwort
/rk erzeugt pro Instanz eine eigene Console via CMD /K
/rt mit Aufgabeumleitung via tee.exe (defaultname für Ausgabe result.[nr].txt
bei Server/Worker-Betrieb bleibt die Konsole mit Tee für spätere
Aufrufe geöffnet. Wie bei Umleitungen leider üblich verharren die letzten Zeilen
einer Ausgabe z.T noch im Pipeline-Buffer.
/rs wie /rt, nur wird jedesmal eine neue Konsole für Ausgabe geöffnet
/K wie /rk, nur ohne den Umweg über CMD


Mit der Batch die ich gebaut habe, auch mit /r (runas) Parameter läuft realtime auch unter benutzer! Ich weiss auch schon wie ich das hinbekomme wegen dem Passwort, macht euch da mal keine sorgen face-wink.

Das Ganze sieht jetzt so aus: launch.exe /r=administrator:12345 /a=3 /c=r "T:\MS-Access\OFFICE11\MSACCESS.EXE" "T:\rap\RAP_Report.mdb"

Das dumme ist nur, dass ich nur EXE ansteuern kann oder seht Ihr in den Parameter die möglichkeit auch direkt Datei zu öffnen?

Vielen lieben Dank noch mal für euere Hlfe face-smile