Ich habe in x265
letzter Zeit einige Videos auf meiner Workstation codiert, aber ich habe ein Problem: Obwohl ich sie nice -n 20 x265
zum Depriorisieren starte, verlangsamt sie den Computer während der Ausführung immer noch zum Crawlen. Alles funktioniert immer noch, es ist nur ... langsam! Ich sehe sogar Verzögerungen, bevor die Zeichen beim Eingeben eines Terminals erscheinen.
Muss ich damit leben oder gibt es noch andere Dinge, die ich ausprobieren kann?
EDIT: Vielleicht dient das Folgende als Beweis dafür, dass der schöne Wert wirklich angewendet wird x265
? Schau dir die NI
Spalte an.
% ps -awux -O nice | egrep "x265|PID"
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND PID NI TT STAT TIME COMMAND
nobody 56654 789.3 3.7 785656 623384 11 SN+J 11:56PM 6:05.80 x265 --input-csp 56654 20 11 SN+J 6:05.80 x265 --input-csp i420 --bframes 5 -
Antworten:
Der FreeBSD-Kernel implementiert so etwas wie einen E / A-Scheduler, nämlich gsched . Beim Überprüfen der Handbuchseite scheint es sich um einen gerätespezifischen E / A-Scheduler zu handeln. Persönlich denke ich, dass dies eine nette Keynote für Echtzeitanwendungen von FreeBSD ist und ein guter Grund, offen nach der vorhandenen FreeBSD-Dokumentation zu suchen.
Obwohl spekulativ, möglicherweise mit dem Blockgerät der Root-Partition, das für die Verwendung eines
rr
Schedulers konfiguriert istgsched
, und den auf einem separaten Blockgerät gespeicherten Mediendateien, kann es möglicherweise dazu dienen, dass das Betriebssystem in E / A sogar reaktionsfähiger funktioniert mit dem E / A-Engpass?In Verbindung
gsched
mit einer Konfiguration für Prozessorprioritäten - z. B. rtprio und / oder idprio - kann dies möglicherweise dazu dienen, die Reaktionsfähigkeit des primären Betriebssystems zu verbessern, selbst unter starker Belastung durch die Verarbeitung von Mediendateien.Alternativ könnte es möglicherweise möglich sein, mehr Prozessorbandbreite zu gewinnen, wenn die Ports unter CPU-spezifischen Optimierungen kompiliert werden. Auf dem Weg zu diesem Zweck gibt es die
MACHINE_CPUARCH
undCPUTYPE
Felder, so dass in angewendet werden kann/etc/make.conf
, und das würde während des Ports Build - Prozess [angewendet werden Manpage ]. Das Handbuch enthält natürlich viele Hinweise zum Erstellen von Ports mit FreeBSD [ Kap . 5 ]. Ich selbst habe mitMACHINE_CPUARCH?=amd64
undCPUTYPE?=core2
auf einem älteren Toshiba - Laptop. Als LAN-Gateway scheint es in Ordnung zu sein, obwohl ich es nicht unter hoher Last in den Prozessor- oder Block-E / A-Funktionen bewertet habe.quelle
Manchmal kann eine einzelne schwere E / A-Operation die Kernel-Leistung in Bezug auf alle E / A-Aufnahmen beeinträchtigen, einschließlich derjenigen, die nicht direkt auf dem Gerät der ersten ausgeführt werden.
Die erste und indirekte Möglichkeit, die Prioritäten bei der E / A-Planung zu steuern, ist die Optimierung des bereits erwähnten Niveaus des Prozesses. In modernen Linuxes ist ein Prozess mit einem netten Wert von 19 (dh dem Maximum) standardmäßig in der Best-Effort-Klasse mit einer Priorität von (19 + 20) / 5 = 7, der niedrigsten in der Klasse verfügbaren Priorität. Allgemeiner liegt es in [0,7] gemäß einer solchen Abbildungsfunktion.
Eine zweite, direkte und leistungsfähigere Möglichkeit zur Steuerung der E / A-Planung besteht darin, manuell in die den Prozessen zugewiesene E / A-Planungsklasse einzugreifen. Dies ermöglicht es uns, einen Prozess auch in zwei zusätzliche Klassen einzuteilen: Echtzeitklasse mit höherer Priorität als Best-Effort-Level 0 und Leerlaufklasse mit niedrigerer Priorität als Best-Effort-Level 7. Letzteres garantiert theoretisch, dass keine andere E / A. Die Operation könnte jemals auf eine im Leerlauf geplante Prozessoperation warten. Ähnlich wie beim
nice
Befehlionice
können Sie einen Prozess mit einer bestimmten Priorität erzeugen oder die Prioritäten eines vorhandenen Prozesses ändern. Weitere Informationen zu diesem Tool und zur E / A-Planung auf Linux-Kerneln im Allgemeinen finden Sie in der Ionice-Manpage .Haben Sie dennoch versucht, Ihren Prozess mit zu starten
ionice -c 3 x265 ...
?PS Entschuldigung, ich habe das 'FreeBSD'-Tag in der Frage bemerkt, nachdem ich meine Antwort gepostet habe, die möglicherweise wie folgt zusammenbricht.
quelle
Sie wollen "rctl"
sehen:
Hiermit können Sie Ressourcen pro Benutzer, pro Prozess, Gefängnis oder Anmeldeklasse zuweisen. Z.B
quelle