Jump to content

[How-to] aspm set pci per script


Recommended Posts

Hallo zusammen,

 

hier ein script um das Thema set pci etwas zu erleichtern.

 

Vorweg, dies ist ohne Gewähr, ebenso wird sich mein support hierzu sehr in Grenzen halten, ich persönlich habe davon wenig bis gar nichts da meine Server so oder so nie in die entsprechenden c-states kommen da mir immer etwas Last anliegt oder zu viel Geräte verbaut sind ;)

 

Ohne Gewähr bedeutet unter anderem

1/ es kann zu Instabilitäten führen

2/ es kann zu Data Corruption führen

3/ es kann zu Hardware Schäden führen

4/ es kann „alles Mögliche“ passieren

 

Voraussetzung,

bc package (anbei) unter /boot/extra (USB Stick, Ordner extra anlegen falls nicht vorhanden, dort ablegen),

wird dann bei jedem Start mit installiert, initial per terminal auch ohne Neustart per

 

installpkg /boot/extra/bc-1.07.1-x86_64-5.txz

 

Herangehensweise ist wie folgt, wir schauen welches Gerät aktuell nicht im gewünschten aspm State sitzt, Befehl dazu wäre beispielsweise

 

lspci -vv | awk '/ASPM/{print $0}' RS= | grep --color -P '(^[a-z0-9:.]+|ASPM |Disabled;|Enabled;)'

 

Output wäre beispielsweise

 

image.png.2ef2b182397d4804946b7d328721c599.png

 

wobei wir uns hier primär erstmal um Geräte kümmern (1) und PCI Bridges hintenanstellen, diese sind in der Regel disabled weil das dahiner liegende Gerät disabled / nicht im gewünschten aspm state sitzt.

 

In diesem Fall wäre es (1) der USB Controller asmedia auf 04:00.0

 

Jetzt schauen wir auf welchem root complex dieses sitzt, Beispiel

 

lspci -t

 

Output wäre beispielsweise dann

 

image.png.351ad22b9d878ef97185fb2b0b34f9fe.png

 

Wie wir sehen sitzt der USB Controller (1) auf dem root complex 00:1c.0, wie erwartet sitzt dieser auch nicht im gewünschten aspm state, siehe oben (2).

 

Das heißt, wir haben unseren Endpoint und den dazugehörigen root complex

Endpoint wäre 04:00.0

Root complex wäre 00:1c.0

 

Diese beiden Adressen hinterlegen wir jetzt im script

 

image.png.283419fb030a78afd1680e8cb14c48bd.png

 

ASPM_SETTING=N (N=0-3)

 

Hiermit definiere ich in welchen aspm state ich das Gerät (ENDPOINT) setzen möchte

 

Dieses script wird auf dem Server abgelegt und ausführbar gesetzt, Beispiel

 

chmod +x /mnt/user/system/aspm_enable_asmedia04.sh

 

dann führen wir aus und schauen was passiert, in diesem Beispiel

 

image.png.43c358bdd70ef83bd91dbfc711dfb9e0.png

 

Was dann im Resultat wie folgt aussieht

 

image.png.a6ca7a420888a35434a0d3e186650718.png

 

Jetzt wären sowohl der USB Controller als auch die dazugehörige bridge im gewünschten aspm state

 

Hinweise

Ja, das kann auf allen Geräten durchgeführt werden, mit mehr oder weniger erfolgreichem Ausgang

USB Controller, Netzwekkarten, … usw usw …

Nein, das ist nicht persistent und muss bei jedem Neustart erneut ausgeführt werden (go, user scripts, …)

Ja, das kann zu besseren c-states führen

Ja, das kann zu Problemen führen, bei Issues, einfach Neustart ohne Ausführung

Ja, ich kann mit den diversen aspm states (0-3) spielen (immer nach Neustart)

 

ALLES OHNE GEWÄHR

 

Beispiel

auf meinem n100er mit der bekannten Realtek Problematik, ja, ich bekomme die NIC damit in die passenden aspm states und „gefühlt“ ist alles in Ordnung, Transferraten, Dienste, smb, läuft alles wie gewohnt …

aber, ich nutze beispielsweise TVHeadend mit SatIP Tuner (Fritz DVB-C & Octopus Net DVB-S), ich bekomme jedoch nach aspm settings zig Kontinuitätsfehler … sprich, streams haben Bildfehler, Aussetzer, … sprich, Data Corruption welche bei Live streams auch nicht korrigiert werden können …

 

Das wäre beispielsweise ein „side effect“ resultierend aus „hartem“ aspm pci set …. während alles andere problemlos läuft (Datentransfer ist auch ok inkl. Checksum)

 

Ich nutze dies jetzt seit ca. 2 Monaten auf 5 unterschiedlichen Systemen, bis auf den o.g. side effect hatte ich bisher noch keine Issues.

 

Ich möchte nur darauf hingewiesen haben 😉

 

Bei Anmerkungen zu der Anleitung, gerne ;)

 

 

aspm_enable.sh

bc-1.07.1-x86_64-5.txz

  • Like 1
  • Thanks 5
Link to comment

Vielleicht noch als Anmerkung.

 

Bevor man das in sein "go" file aufnimmt erstmal das script manuell starten und ein paar Wochen testen. 

Ich persönlich gehe davon aus das ca. 90% der Leute die das (richtig) nutzen keine Probleme haben werden. 

 

Und denkt dran: Sobald ihr zusätzliche HW einbaut (TV-Karten, PCIe SATA Karten, M.3 SATA Karten etc.) dann vorm Einbau das script deaktivieren.

Nach Einbau der HW Server hochfahren und wie @alturismo beschrieben hat die zwei Adressen (Endpoint/root complex) nochmal neu ermitteln. Die könnten sich verschoben haben.

Und dann wieder testen. Jede neue Erweiterungskarte könnte zu Problemen führen wie Alto sie oben beschrieben hat.

 

Und nochmal: Es gibt keine Garantie oder Gewähr das das alles sauber funktioniert oder Verantwortung für Schäden an HW oder Daten.

 

Gruss,

Joerg

 

 

  • Thanks 2
Link to comment
  • 2 weeks later...

kleiner Nachtrag zum Thema

 

On 7/28/2024 at 7:35 AM, alturismo said:

1/ es kann zu Instabilitäten führen

 

 

im oben gezeigten Beispiel hatte ich ja einen USB Controller in den passenden aspm state gesetzt,

jetzt ist das mein Desktop / Gaming VM Server (und Backup Server) seit einiger Zeit.

 

was ist passiert ... am Sonntag, Gaming VM, Controller geht nicht mehr, Tastatur geht nicht mehr ...

logs gesichtet, permanentes "aussteigen" der USB Geräte ...

 

USB software Reset, USB Geräte ab / anklemmen, aspm retour setzen, ... nichts hat geholfen ...

 

am Ende, ein Neustart musste her, in Summe, hat ein paar Tage gehalten (~ 1 Woche), aber ... wohl nicht praktikabel ;)

 

nur als Nachtrag zum Thema "Instabilitäten" und Symptome ... kann jetzt auch Zufall gewesen sein ;)

  • Like 1
  • Thanks 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...