Weisen Sie einem Prozess mehr als 1 CPU / Kern zu

7

Ich habe das Passwort verloren, um eine PDF-Datei zu öffnen, auf die ich zugreifen muss. Deshalb habe ich pdfcrack installiert, in der Hoffnung, mein Passwort wiederherzustellen. Eigentlich ist es ein Monat, in dem pdfcrack läuft, aber ich warte immer noch auf das Ergebnis.

Beim Betrachten des Systemmonitors stellte ich fest, dass pdfcrack nur einen Kern meiner CPU verwendet, die anderen 7 sind inaktiv. Gibt es eine Möglichkeit, pdfcrack mehr als einen zu verwendenden Kern zuzuweisen? Ich verwende Ubuntu 12.04LTS 32-Bit.

Paolo
quelle

Antworten:

18

Sofern nicht speziell dafür ausgelegt, kann Software im Allgemeinen nicht mehr als einen CPU-Kern verwenden und kann im Allgemeinen nicht zusätzlich hinzugefügt werden.

(Das Schreiben von Software für die gleichzeitige Ausführung auf mehreren Kernen ist erheblich komplizierter, da Sie nicht garantieren können, in welcher Reihenfolge die Aufgaben ausgeführt werden. Daher müssen Sie sich vor allen möglichen Problemen schützen, die durch mehrere CPUs verursacht werden, die gleichzeitig auf Ressourcen zugreifen möchten, oder auf Ereignisse, die in auftreten eine andere Reihenfolge als erwartet).

Das heißt, PDF-Cracking ist eine Aufgabe, die parallelisierbar sein sollte. Es scheint, dass Sie eine modifizierte Version mit Multi-Core-Unterstützung finden können, aber es sieht so aus, als müssten Sie sie aus dem Quellcode kompilieren.

Chronitis
quelle
Danke für den Link! Ich dachte, dass es möglich ist, eine "virtuelle CPU" zu erstellen, die aus mehr als einem Kern besteht. Auf diese Weise sieht pdfcrack immer noch 1 CPU, aber diese CPU hätte mehr Rechenleistung.
Paolo
Ich kenne virtuelle CPUs im Kontext von virtuellen Maschinen oder Hyperthreading, aber diese haben einen geringeren Durchsatz als der physische Kern, auf dem sie ausgeführt werden. Soweit ich weiß, ist es nicht möglich, einen schnelleren virtuellen Kern aus mehreren physischen zu erstellen. Sie würden auf dieselben Probleme bei der Synchronisierung und bei Konflikten zurückgreifen, die bei der expliziten Verwendung mehrerer Threads auftreten. Haben Sie einen Link, der so etwas beschreibt?
Chronitis
Nee. Was ich geschrieben habe, war die Beschreibung, wie ich einem Prozess mehr CPU-Leistung hinzufügen möchte. Ich gebe zu, dass mir diesbezüglich ein Grundkonzept fehlt.
Paolo
Ich habe die Verbindung von Mann cpuset . Ich bin nicht sicher, ob es helfen wird, aber es könnte und ist eine Lektüre wert.
Paolo
4
Wie auf der von Ihnen erwähnten Manpage angegeben, dient cpuset zur Beschränkung auf eine bestimmte Teilmenge von CPUs / Kernen. Ein Prozess, dem eine Menge mit 4 CPUs zugewiesen wurde, wird weiterhin auf 1 ausgeführt, wenn dies alles ist, wofür er programmiert ist.
Mikołak
1

Auschecken

https://github.com/shreepads/pdfcrack-mp

Dies ist eine Abzweigung von pdfcrack mit Unterstützung für Multi-Core-Muster.

Alle Änderungen befinden sich im Zweig baseopnmp.

AC2
quelle