Portage 3.0 stabile Version bereits angekündigt

Entwickler vor kurzem die für das Paketverwaltungssystem verantwortlich sind Portage (auf der Gentoo Linux Distribution) kündigte die Veröffentlichung der stabilen Version von Version 3.0 an.

In welchem, die Hauptneuheit Von diesem neuen Zweig wird die Arbeit vorgestellt, die langfristig am Übergang zu Python 3 und Ende der Unterstützung für Python 2.7 (etwas, das schon lange zu sehen war, da diese Niederlassung mehrere Monate offiziell ohne Unterstützung war)

Wir haben gute Nachrichten! Das Gentoo Portage-Projekt hat kürzlich Version 3.0 des Paketmanagers stabilisiert.

Was gibt's Neues? Nun, diese dritte Version von Portage entfernt die Unterstützung für Python 2.7, die das Gentoo Python-Projekt im Laufe des Jahres 2020 im Haupt-Gentoo-Repository fortlaufend bemüht hat.

Zusätzlich zur Einstellung der Unterstützung für Python 2.7 eine weitere wichtige Änderung das hebt sich von diesem neuen stabilen Zweig von Portage 3.0 ab war die Einbeziehung verschiedener Optimierungen dass sie erlaubt haben Berechnungen viel schneller machen (zwischen 50% und 60%) mit der Bestimmung von Abhängigkeiten verbunden.

Interessanterweise schlugen einige Entwickler vor, den Code für die Auflösung von Abhängigkeiten in C / C ++ oder Go neu zu schreiben, um ihre Arbeit zu beschleunigen, aber sie konnten das vorhandene Problem mit großem Aufwand lösen.

Und ist, dass Das Profil des vorhandenen Codes zeigte dies die meiste Zeit Berechnung widmet sich dem Aufruf der Funktionen use_reduce und catpkgsplit mit einer sich wiederholenden Reihe von Argumenten (die Person, die diese Arbeit leitete, erwähnt, dass beispielsweise die catpkgsplit-Funktion 1 bis 5 Millionen Mal aufgerufen wurde).

Erwähnen Sie, dass das Problem erkannt wurde, um die Berechnungen zu beschleunigen. Caching wurde angewendet des Ergebnisses dieser Funktionen mittels Wörterbüchern.

Aufgrund eines vom Benutzer bereitgestellten Patches kann die Aktualisierung auf die neueste Version von Portage die Abhängigkeitsberechnung um 50-60% erheblich beschleunigen. Wir lieben es, wenn unsere Community an unserer Software teilnimmt! Weitere Informationen finden Sie in diesem Reddit-Beitrag des Community-Mitglieds, das den Patch bereitgestellt hat. Bleib gesund und koche weiter mit Gentoo!

Außerdem Es wird auch darauf hingewiesen, dass die integrierte Funktion lru_cache optimal war für diese Aufgabe des Caching, aber es war nur in Python-Versionen seit 3.2 verfügbar.

Aus Gründen der Abwärtskompatibilität wurde auch ein Stub hinzugefügt, um lru_cache zu ersetzen. Die Entscheidung, die Python 2.7-Unterstützung in Portage 3.0 zu beenden, vereinfachte die Aufgabe jedoch erheblich und ermöglichte die Umgehung dieser Ebene.

Ich habe einige Zeit damit verbracht, Portage mit cProfile und vmprof zu profilieren, um zu verstehen, welche Funktionen am längsten gedauert haben. Ich habe auch einige Flammengraphen aus den Profiler-Ergebnissen generiert, die so aussahen. Was mir aufgefallen ist, dass einige Funktionen wie use_reducecatpkgsplit, werden sehr häufig mit den gleichen Argumenten aufgerufen (wie 1 bis 5 Millionen Mal, z catpkgsplit). Ich habe einige Experimente durchgeführt, um die Ergebnisse dieser Funktionen in einem Diktat zwischenzuspeichern, und nachdem ich einige gute Beschleunigungen festgestellt hatte, habe ich einen Patch an die Portage-Entwicklerliste gesendet. Jemand schlug vor, integriertes Python zu verwendenlru_cache stattdessen Funktionsdekorator, der jedoch nur in Python 3.2 und höher verfügbar ist.

Andererseits hat die Verwendung des Caches die Operation "emer -uDvpU –with-bdeps = y @world" auf dem ThinkPad X220 von 5 Minuten 20 Sekunden auf 3 Minuten 16 Sekunden (63%) reduziert. Tests auf anderen Systemen haben einen Leistungszuwachs von mindestens 48% gezeigt.

Der Entwickler, der die Änderung vorbereitet hat, hat auch versucht, einen Prototyp zu implementieren aus dem Abhängigkeitsauflösungscode in C ++ oder Rust, aber die Aufgabe stellte sich als zu schwierig heraus, Da eine große Menge an Code portiert werden musste und gleichzeitig zweifelhaft war, ob das Ergebnis die Mühe wert war.

Schließlich wenn Sie mehr darüber wissen wollen Über den Versionshinweis dieses stabilen Zweigs können Sie die Details überprüfen im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.