Über Nacht einem Prozess maximale Leistung bieten

Palladin007

assimiliert
Ich möchte meine gesamte Musik-Datenbank ändern, was es nötig macht, jede Datei entsprechend zu konvertieren.
Da meine Musik-Sammlung aber sehr groß ist, bedeutet das eine sehr große und Zeitaufwendige Aufgabe, die ich gerne über die Nacht lösen würde, aber ich bezweifle, dass eine Nacht dafür ausreicht.

Ich habe aber einmal fest gestellt, dass Windows dem Prozess von FormatiFactory gerade mal 50% CPU-Leistung zu spricht und das will ich ändern.
Ich beende alle nicht unvermeidlich notwendigen Prozesse und würde FormatFacory gerne mehr Leistung bieten. 95%, dann bleibt noch etwas Raum. Zwar nicht viel, aber da ich dann sowieso schlafe, ist das ja egal.

Kennt jemand ein Trick, oder ein Tool, mit dem ich die Przessor-Leistung manuell aufteilen, oder auf einzelne Prozesse konzentrieren kann?

Ich habe schon die Priorität geändert, aber das macht keinen sichtbaren Unterschied.
 
Process Lasso könnte dir helfen. Aber 95% kannst du nicht erzwingen, wenn das Programm sie nicht haben will ;)

gd.
 
Mehrkern-CPU? Ein Diagramm für alle CPU?
Kann das Programm mehrere Kerne nutzen?

Sonst wird das nichts.

Im Taskmanager oder in Programmen wie oben kann man das einstellen.
 
Das Programm scheint kein Multicore zu unterstützten. Außer, in eine der letzten Programmversioen hat sich daran etwas geändert...

Von daher sind die 50% CPU Auslastung dadurch zu erklären, dass das Tool eben nur auf einem von zwei Cores läuft. Du kannst dem Prozess im Taskmanager aber noch eine höhere Priorität zuweisen - Wunder bewirkt das aber auch nicht. Das sollte man im Normalbetrieb nur sehr bedacht machen, da man dadurch unter Umständen die Inkubationszeit des Rechners doch sehr stark verringern kann... Da das ganze aber über Nacht laufen soll, nehme ich, du planst nicht, nebenbei noch anderes zu machen...

Gruß
tobim1986
 
Ich habe allgemein geplant, ein Programm zu schreiben, das alle Pfade jeder Datei ausliest und dann Stück für Stück die Pfade an ein Batch-Script übergibt. Der Script wiederum enthält den Befehlscode, den FormatFactory in den Einstellungen ausgibt, startet das Programm und endet es danach wieder.

Auf diese Weise kann ich jede Datei einzeln durchgehen lassen und gleichzeitig den Speicherort anpassen lassen.
Das ist neben den notwendigen Prozessen das einzige, was nebenher läuft.

Aber ich kann hinzu fügen, dass zwei Dateien gleichzeitig konvertiert werden.
Ich weiß grad nicht, wie das dann läuft, aber kann ich so den Prozessor ganz auslasten? Ein Prozessor ein Lied zum konvertieren? Das würde dann zwei Prozesse geben
 
Das klingt ganz nach einer Aufgabe für ein Tool wie z.B. CPU-Control.

Aber ich kann hinzu fügen, dass zwei Dateien gleichzeitig konvertiert werden.
[...] Ein Prozessor ein Lied zum konvertieren? Das würde dann zwei Prozesse geben
Was natürlich voraussetzt, dass von deinem Konverter auch 2 oder mehr Instanzen gestartet werden können.
Und wenn, dann muss darauf geachtet werden, dass nicht beide gleichzeitig dieselbe Datei bearbeiten.
 
Ne, dass sie nicht die selbe Datei starten, das lässt sich leicht verhindern^^ Der Pfad wird in der Befehlszeile angegeben und im C#-Programm lässt sich das leicht mit if verhindern, dass die gleich sind

Ob das Programm mehrere Instanzen starten kann, das weiß ich nicht, müsste ich testen
 
man man man bist du unselbstständig für deine 18 Jahre - ich würde es eher als faul bezeichnen, bequem trifft es nicht mehr aus meiner Sicht. Du fragst ja jeden Furz ab statt eigene Bemühungen zu zeigen. Zudem ist deine Logik auch nicht sonderlich konstruktiv, wenn ich lese "Programm > Batch > Programm" oder "C -> Batch". Damit nimmst du dir mal wieder jegliche Option, deine kleine Batch-Welt zu verlassen und das Potential einer anderen Scriptsprache zu nutzen. Ach ja, dein Stichwort hier wäre gewesen: "multithreading" - und das ist was anderes als eine simple Zuordnung von Programm <> Core, die dich ja anscheinend nicht zufriedenstellen könnte. C oder NET können das, aber dann muss man das auch wollen.

gd.
 
Jetzt halt mal die Luft an.

Das eigentlichr Programm schreibe ich in C#, Batch baue ich nur ein, da ich nicht weiß, wie man in C# Batch-Befehle verwendet, oder wie ich FormatFactory direkt steuer, das Programm mir aber eine Batch-Zeile gibt, mit der ich es mit vorher fest gelegten EInstellungen starten kann.

Außerdem habe ich nicht gefragt, ob es neue Instanzen starten kann, ich habe gesagt, dass ich es testen müsste, was ich auch vor habe.

Eine andere Script-Sprache will ich nicht verwenden, weil ich die erste lernen müsste und ich das Programm nach Möglichkeit schon heute Nacht laufen lassen will.

Zum Thema "deine kleine Batch-Welt zu verlassen": Ich programmiere im Moment nur Objekt orientiert. Wie gut das ist, weiß ich nicht, aber man lernt schließlich indem man es versucht. Batch verwende ich nur noch für winzige Standart-Aufgaben, die dann so eine Zeile oder zwei kosten.
 
Zurück zum Thema:

Ich habe es mal getestet, es werded zwei Prozesse gestartet und sie sind auch beide in der Lage, je einen anderen Kern zu nutzen.
Wenn ich jetzt noch heraus finde, wie ich einzelne Prozesse einzelnen Kernen zuteilen und deren Priorität ändern kann, dann hab ich genau das, was ich wollte. Aber das lässt sich leicht googlen und mit Batch gehts zur Not glaube auch
 
Naja, ich möchte es aber selber programmieren^^
Macht mir Spaß, auch wenn es aufwendiger ist. Musst du nicht verstehen, bin halt so^^
 
es werded zwei Prozesse gestartet und sie sind auch beide in der Lage, je einen anderen Kern zu nutzen.
Erneut geirrt - die Corezuweisung erfolgt nicht seitens Programm, sondern von der übergeordneten Instanz, und falls fehlend, seitens Betriebssystem, insofern überhaupt möglich. Das ist das, was ich auch drüben ansprach - du stellst irgendwas in den Raum ohne eigenen Antrieb, dass auch selbst zu verifizieren. Es macht keinen nennenswerten Sinn, überhaupt konstruktiv an dich ranzutreten, weil du es nicht besser wissen möchtest geschweige bereits gegebenes zu berücksichtigen (siehe auch Norbert). Deine "Kleine Welt" hat doch höchstens ein Guckloch nach draussen. Es stimmt zwar, dass man in Foren sein Wissen erweitern kann, aber so wie du es verstehst oder verstehen möchtest, ist auch jenes nicht.

Hast du dich denn inzwischen auch in einem Fachforum für Programmiersprachen angemeldet? Ist ja nicht zwingend notwendig, um Codeschnipsel abzugreifen, wäre aber für einen konstruktiven Dialog extrem hilfreich. Für alles, was Windows betrifft, muss ich zwangsweise ins MSDN schauen und dann in das zuständige Programmierforum.

gd.
 
Es werden zwei Prozesse gestartet, das zeigt zumindest der TaskManager an. Ich mache dir gerne ein Bild.

Und wenn ich mich, zum Thema der Kerne, geirrt haben sollte, dann werde ich das auch noch einmal testen und nachschauen, wenn ich zum gleichen Ergebnis komme, werde ich erklären, was ich gesehen habe und warum ich das so verstanden habe.

Wegen Norbert: Ich mag so viele Tools einfach deswegen nicht, weil es für jeden Mist irgend ein Programm gibt und man im Internet nur so etwas bekommt. Dem entsprechend habe ich ziemlich viel installiert, was auch alles wieder runter muss.
Außerdem möchte ich das ohne irgend ein Tool lösen, weil ich, wie schon gesagt, es selber mit der Sprache C# lösen möchte, da ich glaube, dass es mit meinem Wissens-Stand über die Sprache schon möglich ist.

Und nein, ich habe mich noch nicht in einem neuen Forum angemeldet, da ich über Kurz oder Lang immer eine Lösung gefunden habe, denn die meisten Fehler waren irgendwelche Fehler, die ich wegen mangelnder Erfahrung noch nicht gefunden habe.
Ich merke aber auch, dass meine Probleme immer komplexer werden, weswegen ich auch nicht ewig ohne ein Forum zurecht kommen kann, welches sich direkt dieser Sprache verschrieben hat.


Und noch etwas:
Wenn dir nicht passt, wie ich schreibe, oder wie ich mich verhalte, dann ignoriere bitte meine Nachrichten, oder Themen, damit wir nicht ständig streiten. Das nützt keinem etwas.



Was das Thema angeht:
Ich werde jetzt noch einmal zwei Videos konvertieren lassen und nebenbei die Prozesse im TaskManager im Auge behalten. Aber dränge mich nicht, denn ich mache nebenher noch einige Dinge, die es teilweise unmöglich machen, solche Experimente zu starten.
 
ot:
Huch, dann hast du ja doch wieder ein Tool, was du gar nicht haben möchtest, falls dein eigenes Programm funktionieren sollte. :rofl

ot:
Auch wieder eine Sichtweise^^

Aber ich habe es selber geschrieben und das möchte ich ja.^^
Wenn ich es nicht schaffen werde, dann werde ich auf deine Tipps und die der anderen zurück greifen, aber bis ich aufgebe, dauert es seine Zeit^^
 
Niemand zwingt dich zu irgendetwas, ich kann dir nur aus Erfahrung sagen, wie sich moderne Mehrkernsysteme verhalten bzw deren Eigendynamik steuern. AMD arbeitet zB anders als Intel. Du kannst diesen Umstand beim Multithreading steuern oder wie wohl bei dir gewünscht steuern - nach aussen hin steuern, das wäre dann Multiprocessing. Letzteres ist einfacher zu programmieren.

Eine Zuweisung auf einzelne Cores ist per Batch nicht direkt möglich, um das gleich vorwegzunehmen, du kannst aber die Zuweisung weitergeben, vertiefe die Ausgabe von START /?

PS Norbert, das war gemein :p

gd.
 
1. Es ist in den allermeisten Fällen eine schlechte Idee, das Rad neu zu erfinden. Ich weiß durchaus, das es Spaß macht eigene Sachen zu programmieren, aber man sollte - besonders bei so komplexen Problemen - auf bestehendes zurückgreifen.
2. Du unterschätzt die Problematik, dass zwei Dateien nicht gleichzeitig bearbeitet werden dürfen, um weiten. Ich bin mir sogar ziemlich sicher, du bist dir dem Problem nicht mal bewusst. Ich kann es dir hier aber auch nicht in zwei Sätzen erklären. Um das Genau zu verstehen, ist schon etwas mehr (Eigan-)Arbeit erforderlich. Das ganze fängt bei Prozessortechnik an, geht über die Arbeitsweise von Betriebssystemen und endet im besten Fall beim Programmierer, der die Sache richtig löst. Nebenläufigkeit in OO ist in der Regel der letzte Mist. Ein funktionierendes Multithreading-Programm zu schreiben, erfordert eine Menge Know-how und Sorgfältigkeit. Denn man kommt in der Regel nicht drum herum, alle Threads selbst zu synchronisieren. Und wenn du jetzt gerade nicht gedacht hast "Mit Threads und Threadsynchronisierung kenne ich mich aus.", dann solltest du heute erst mal in die Bibliothek gehen und dir Fachliteratur über Betriebssysteme zulegen und dich die nächsten Wochen in das Thema einarbeiten. Bei ernsthaftem Interesse empfehle ich dir auch ein Buch, erwarte aber nicht eine fertige Lösung für dein Problem.

Ich kann dittos aussagen voll und ganz nachvollziehen. Du musst wesentlich mehr Eigeninitiative bringen, wenn Programme entwickeln möchtest. Und dazu zählt wesentlich mehr, als nur zu programmieren.
 
Du unterschätzt die Problematik, dass zwei Dateien nicht gleichzeitig bearbeitet werden dürfen, um weiten. Ich bin mir sogar ziemlich sicher, du bist dir dem Problem nicht mal bewusst.

Wenn ich das so lese, entstehen bei mir zwei Gedanken.
1. Heißt das, dass mein Vorhaben, zwei Dateien gleichzeitig zu konvertieren, unklug, oder sogar riskant ist? Da ich in dem Fall nur auf deine Erfahrung zurück greifen kann, da ich selber tatsächlich nur sehr bruchstückhaftes Wissen habe, gibt es für mich auch keinen Anlass mehr, es zu versuchen. Schon deswegen, weil ich mir einen beschädigten PC nicht leisten kann und ich nicht weiß, welche Auswirkungen das haben kann.
2. Interessantes Thema, aber bis ich mich da einlese, dauert es noch ein bisschen, den im Moment hat mich C# voll und ganz gefesselt^^


Edit:
Außerdem möchte ich das Rad nicht neu erfinden. Ich hatte mir erhofft, dass ich zwei Prozesse habe und je einem einen anderen Kern zuweisen kann. Ich weiß nicht, wie umfangreich die Thematik ist, aber maximal hätte ich dann noch die Priorität möglichst hoch gestellt, damit wäre das für mich beendet, denn mehr erwarte ich nicht.
Ob Batch da Möglichkeiten bieten, hatte ich tatsächlich nur einmal etwas darüber gelesen und es war nur eine grobe Idee, die ich verfolgt hätte, wenn ich das nicht mit C# hin bekommen würde.
 
Zuletzt bearbeitet:
Oben