Mein System verbraucht zu viel...


vakilando

Recommended Posts

Folgenden Thread wollte ich nicht hijacken, daher dieser neue....

Es geht mir um folgenden Vorschlag von @mgutt:

Quote

Wie wäre es dann mit diesem Board:

https://www.asrock.com/mb/AMD/X570M Pro4/

( .. )

Insgesamt würde ich dann mit 30 bis 40W rechnen.

 

@mgutt, ich hätte eine Frage zu dem genannten Asrock X570M Pro4 Board: Ist das X570M Pro4 denn relativ sparsam?

 

Warum ich das frage:

Ich habe ein Asus ROG STRIX x570-E Gaming und bin enttäuscht wegen der nicht vorhandenen bzw. nicht funktionierenden "Stromspareinstellungen" und fragte mich ob sich für mich ein Umstieg lohnen könnte (prinzipiell kann ich mir auch vorstellen die CPU zu wechseln, aber ich benötige schon mind. 8 Kerne)?

 

Mein System:

  • ASUS x570-E Gaming
  • Ryzen 3900X CPU
  • 64 GB RAM (2x32)
  • Seasonic FOCUS PX-550 80PLUS Platinum
  • GeForce 745 GTX für meine Linux VM als daily driver
  • GeForce 1050TI für Emby bzw. weitere VMs (2x Win10, 1x Debian mit MailCow, 1x Debian mit Docker-Testsystem) 
  • LSI SAS 9211-4i im HBA Mode.
  • Array: 2 WD red 4TB + 1 WD red 4TB Parity
  • 1 Btrfs Pool aus 2 SSDs für Docker und Cache
  • 1 Btrfs Pool aus 2 SSDs für VMs
  • 1 HDD für Backups (UD)
  • 1 HDD für NVR Frigate (+ derzeit auch noch Xeoma ... in Ablösung)

 

Mir ist bewusst, dass ich mit meinem System kein Stromsparwunder erwarten kann, es war auch nie dafür geplant, aber ich bekomme mein System nicht unter 100 W im Idle Modus und das ist mir zu viel.

 

Was ich ggf. (zusätzlich) umsetzen könnte:

  • Statt HDD für NVR eine SSD (kein Problem)
    (oder sogar die NVR Daten mit z.Zt 2x90GB auf den Cache legen)
  • Die zwei Btrfs Pools zusammenlegen (eigentlich ungern)
Link to comment
  1. Hast du die 745 GTX mal einzeln gemessen? Diese Billigkarten haben meistens uralte Chips, die mit ineffizienten Nodes gefertigt wurden. Eventuell lohnt hier eine zweite GTX 1050 Ti, die ja nach wie vor ungeschlagen effizient ist. EDIT: Jo laut hier 28nm und dann noch der ineffiziente DDR3 RAM: https://technical.city/de/video/GeForce-GTX-745-OEM Die GTX 1050 Ti ist 14 nm und hat GDDR5
  2. Lässt du die VM dauerhaft laufen, damit die 745 GTX bei "Monitor aus" auch in den Standby geht?
  3. Das Board hat 8x SATA und 3x M.2. Ich zähle aber nur 5 HDDs und 4 SSDs. Fazit: Wirf die LSI SAS 9211-4i raus.
  4. NVR HDD gegen SSD ersetzen
  5. Ersetze den 3900X gegen einen 5700X (den 4650G nicht beachten, der wurde ohne zusätzliche Grafikkarte gemessen):
    image.png.081baa4bca926767cc443f1fde11dd93.png
  6. Optional: Größere NVMe kaufen und die zwei BTRFS Pools zusammen legen. Also schon bei RAID1 bleiben.

 

Das dürfte mindestens 30W sparen. Vielleicht sind sogar 50W drin.

 

 

Link to comment
30 minutes ago, mgutt said:

Hast du die 745 GTX mal einzeln gemessen? Diese Billigkarten haben meistens uralte Chips, die mit ineffizienten Nodes gefertigt wurden. Eventuell lohnt hier eine zweite GTX 1050 Ti, die ja nach wie vor ungeschlagen effizient ist.

Nein, habe ich nicht, aber ich hätte noch eine neue Nvidia T400 4GB im Schrank...

 

31 minutes ago, mgutt said:

Lässt du die VM dauerhaft laufen, damit die 745 GTX bei "Monitor aus" auch in den Standby geht?

Ja, die VM, welche die 745 GTX nutzt, ist dauerhaft an. Es ist mein "Hauptrechner" (Linux mit Nvidia Treibern)

 

40 minutes ago, mgutt said:

Das Board hat 8x SATA und 3x M.2. Ich zähle aber nur 5 HDDs und 4 SSDs. Fazit: Wirf die LSI SAS 9211-4i raus.

2x M.2, nicht 3.

Dennoch hast du recht. Du meinst ich kann 2 NVMEs kaufen und den VM-Pool aus 2 SSDs damit ersetzen (oder Cache/Docker-Pool?)?

47 minutes ago, mgutt said:

NVR HDD gegen SSD ersetzen

ja, ist auch mein Plan gewesen

 

48 minutes ago, mgutt said:

Ersetze den 3900X gegen einen 5700X

Mein Ryzen 9 3900X kommt auf der Liste gar nicht vor, aber ich denke der rangiert dann laut Pfeil zwischen dem R7 3700X und dem R6 3600X?

Dann, ja, klingt auch vernünftig. Beide haben aber die selbe TDP, aber ich schätze durch die zusätzlichen Kerne verbraucht der auch mehr...?

56 minutes ago, mgutt said:

Optional: Größere NVMe kaufen und die zwei BTRFS Pools zusammen legen. Also schon bei RAID1 bleiben.

Also beide SSD-Pools (VM+Cache/Docker) auf ein NVME Pool, richtig?

 

Den Thread "ENERGIE - SPARPOTENTIAL UND VERGLEICHE" les ich mal durch.

Link to comment
7 minutes ago, vakilando said:

Nvidia T400

Die hat den T117. Damit liegt sie vom Prinzip auf dem Niveau einer GTX 1650:

https://www.techpowerup.com/gpu-specs/nvidia-tu117.g881

 

Und sollte sehr sparsam sein:

https://www.techpowerup.com/review/msi-geforce-gtx-1650-gaming-x/30.html

 

Schon alleine weil ihre Base Clock so niedrig ist, dürfte das ja noch mal was bringen. Vielleicht könntest du sogar hingehen und die X16 so abkleben, dass sie nur X2/X4 nutzen kann. Oder erlaubt evtl das Bios die Umstellung der Lanes? Weniger aktive Lanes sparen auch Strom (begrenzen aber logischerweise die Leistung).

 

Gefühlt sollte die die GTX 1050 Ti sogar unterbieten können. Eine echt interessante Karte.

 

16 minutes ago, vakilando said:

2x M.2, nicht 3.

Stimmt. In den Specs im Abschnitt Speichersystem haben die das Wort "oder" bei PCIe 3.0 und PCIe 4.0 vergessen:

https://rog.asus.com/de/motherboards/rog-strix/rog-strix-x570-e-gaming-model/spec/

 

18 minutes ago, vakilando said:

ich denke der rangiert dann laut Pfeil zwischen dem R7 3700X und dem R6 3600X?

Jo

image.png.f451090f03a0970bcd020d0f2e211078.png

 

Die höhere Kernzahl spielt im Leerlauf keine wirkliche Rolle.

 

20 minutes ago, vakilando said:

Also beide SSD-Pools (VM+Cache/Docker) auf ein NVME Pool, richtig?

Jo. Wobei das evtl gar nichts bringt, weil die SSDs ja bei Inaktivität sofort aus gehen. Kommt eher darauf an ob beide Pools aktuell durch Docker und VMs aktiv gehalten werden (permanentes Lesen/Schreiben). Sollte das der Fall sein, würde ein einzelner Pool den Verbrauch entsprechend halbieren.

Link to comment
3 minutes ago, mgutt said:

Und sollte sehr sparsam sein

ok, wird eine der Umbaumaßnahmen sein, wenn ich mal Zeit habe (nächstes WE ggf.)

 

4 minutes ago, mgutt said:

Wobei das evtl gar nichts bringt, weil die SSDs ja bei Inaktivität sofort aus gehen. Kommt eher darauf an ob beide Pools aktuell durch Docker und VMs aktiv gehalten werden (permanentes Lesen/Schreiben). Sollte das der Fall sein, würde ein einzelner Pool den Verbrauch entsprechend halbieren.

Ja, sind beide immer aktiv, da ich die Docker auf dem einen Pool (Cache/Docker) habe und meinen daily driver auf dem anderen (VM).

Es ist sowieso etwas komplizierter, da ich aus Performance- aber vor allem aus Sicherheitsgründen auf beiden Pools VMs laufen/liegen habe: sollte ein Pool ausfallen/repariert/stillgelegt werden müssen, bin ich weiter arbeitsfähig....

Das muss ich mir noch mal überlegen mit dem zusammenlegen. So groß ist doch vermutlich die Stromersparnis bei SSDs nicht - hmmm

 

Ich habe gerade diesen Thread gefunden und frage mich ob eine 5700G CPU mit iGPU eine Grafikkarte ersetzen könnte.......

Edit:

Allerdings hat es irgendwie nur ein Teil der Leute geschafft die iGPU an eine VM oder Plex durchzureichen.

Es scheint vom Board abzuhängen und nach jedem BIOS Update muss man wohl das Grafikkarten BIOS neu dumpen.

Scheint mir zu "wackelig" und kompliziert.....

 

Link to comment
17 minutes ago, vakilando said:

Allerdings hat es irgendwie nur ein Teil der Leute geschafft die iGPU an eine VM oder Plex durchzureichen.

 

Im Plex Forum lese ich viel von nervigen Bugs (Farbfehler usw) beim Transcodieren. Also da ist noch einiges im Argen mit dem Treiber. Es ist auch kein offizieller Container verfügbar, sondern von einem User, der den dann angepasst hat. Siehe:

https://forums.plex.tv/t/got-hw-transcoding-to-work-with-libva-vaapi-on-ryzen-apu-ryzen-7-4700u/676546/1

https://forums.plex.tv/t/feature-request-add-support-for-amds-video-core-next-encoding/226861

 

Liest sich im Grunde genauso gruselig wie in deinem Link ^^

 

19 minutes ago, vakilando said:

sollte ein Pool ausfallen/repariert/stillgelegt werden müssen, bin ich weiter arbeitsfähig...

Wenn bei einem RAID1 Pool zB eine NVMe die Biege macht, sollte ja in der Theorie die zweite weiter gehen. Vermutlich crasht aber der Server oder das BTRFS RAID ist einfach kaputt. Kennen wir ja. Jedenfalls hast du dann ja immer noch die Möglichkeit vor dem Mounten das kaputte Device zu entfernen oder die noch heile NVMe zu formatieren und alles aus deinem Backup wiederherzustellen, bevor du das Array startest. Dass der Server bei zwei Pools eine geringere Downtime hat, kann ich bei deinem Konzept nicht erkennen?!

 

Tatsächlich wäre die Downtime so geringer: Zwei Pools mit jeweils einer NVMe. Die zweite lässt du jede Nacht bei gestoppten Docker und VM 1:1 syncen. So könntest du jederzeit ohne große Ausfallzeit auf den Stand von letzter Nacht zurück, in dem du den Master-Pool löschst und den Backup-Pool umbenennst. Damit hätte man aber nicht den Vorteil eines permanenten Schutzes eines RAID1. 

Link to comment
44 minutes ago, mgutt said:

Im Plex Forum lese ich viel von nervigen Bugs (Farbfehler usw) beim Transcodieren.

Plex hatte ich nur genannt weil in dem Thread bzgl. Ryzen 5700G das Thema iGPU Passthrough zu VM und iGPU Nutzung für Plex Transcoding war.

Ich nutze Emby, aber das liest sich Plex oder Emby hin oder her - wie du schon sagst - recht gruselig und riecht nach unstable, so dass ich eher dazu tendiere weder iGPU Passthrough zu VM noch iGPU Nutzung für Emby Transcoding zu realisieren bevor ich nicht irgendwo lese, dass es sicher und stabil läuft.

 

52 minutes ago, mgutt said:

Wenn bei einem RAID1 Pool zB eine NVMe die Biege macht, sollte ja in der Theorie die zweite weiter gehen. Vermutlich crasht aber der Server oder das BTRFS RAID ist einfach kaputt. Kennen wir ja.

Also ich hatte schon mal das Pech einer defekten SSD im Btrfs RAIDs, aber Gott sei dank ohne Server Crash. Alles lief weiter, so dass ich (neben dem vorhandenen Backup) alles noch mal wegsichern und verlustfrei wiederherstellen konnte. Das allerdings in der Tat mit der VM die auf dem defekten Pool war (damals hatte ich ja nur einen).

 

55 minutes ago, mgutt said:

Dass der Server bei zwei Pools eine geringere Downtime hat, kann ich bei deinem Konzept nicht erkennen?!

Naja, solange der Server nicht crasht dachte ich mir: Ist ein Pool hin, kann ich zumindest auf einer VM des anderen Pools weiterarbeiten und den defekten Pool reparieren/auflösen ohne mein verstaubtes noch zu aktualisierendes Notebook rauskramen zu müssen oder direkt den Server herunterfahren zu müssen.

Ersatz SSDs habe ich da, so dass ich recht schnell den defekten Pool erneuern kann (dann logischer weise mit einer Downtime). Allerdings weiß ich grad gar nicht was passier wenn der Cache-Pool komplett wegfliegen sollte (ganzer Pool defekt). Docker weg ist halt so, aber wie verhält sich Unraid, wenn der Cache wegfliegt...?

 

1 hour ago, mgutt said:

Tatsächlich wäre die Downtime so geringer: Zwei Pools mit jeweils einer NVMe. Die zweite lässt du jede Nacht bei gestoppten Docker und VM 1:1 syncen. So könntest du jederzeit ohne große Ausfallzeit auf den Stand von letzter Nacht zurück, in dem du den Master-Pool löschst und den Backup-Pool umbenennst. Damit hätte man aber nicht den Vorteil eines permanenten Schutzes eines RAID1.

hmmmm - kling auch nicht so verkehrt....!

Link to comment
3 hours ago, mgutt said:

Ersetze den 3900X gegen einen 5700X (den 4650G nicht beachten, der wurde ohne zusätzliche Grafikkarte gemessen):

 

Warum sollte man einen 3xxx gegen einen 5xxx tauschen?

Ich bin damals von 3800x auf 5800x und es gab keine unterschied.

Das habe ich nur gemacht, da ich den 5800x noch "rumliegen" hatte.

Link to comment
3 minutes ago, vakilando said:

Ich nutze Emby, aber das liest sich Plex oder Emby hin oder her - wie du schon sagst - recht gruselig und riecht nach unstable, so dass ich eher dazu tendiere weder iGPU Passthrough zu VM noch iGPU Nutzung für Emby Transcoding zu realisieren bevor ich nicht irgendwo lese, dass es sicher und stabil läuft.

Ich hatte, als ich noch mein AMD System im Einsatz hatte, Jellyfin mit iGPU am laufen. Das lief ohne Auffälligkeiten.

Und ich meine Jellyfin ist doch ein Fork von Emby oder nicht?

War allerdings ein 4650g, aber am GPU Teil hat sich da mMn nichts getan.

Link to comment
1 hour ago, i-B4se said:

Warum sollte man einen 3xxx gegen einen 5xxx tauschen?

Ich bin damals von 3800x auf 5800x und es gab keine unterschied.

hmmm, von 3900X zu 5800X geht zumindest noch die Care Anzahl runter (12 > 8). Ob das was bringt?

...und den Thread muss ich auch noch mal durchlesen....

1 hour ago, jj1987 said:

Ich hatte, als ich noch mein AMD System im Einsatz hatte, Jellyfin mit iGPU am laufen. Das lief ohne Auffälligkeiten.

Und ich meine Jellyfin ist doch ein Fork von Emby oder nicht?

War allerdings ein 4650g, aber am GPU Teil hat sich da mMn nichts getan.

Ja, Jellyfin ist ein Emby Fork.

Aber ich probiere jetzt erst mal den Grafikkartenwechsel (745GTX > T400). Mir einen 5800G zu holen und dann Probleme zu haben und/oder keine Stromersparnis ist mir zu Joker, da ich den nicht hier so rumliegen habe....

 

Aber noch mal zu einer meiner urspr. Fragen: Kennst jemand das  X570M Pro4 Board? ist es denn relativ sparsam? hat ja auch einen kleineren Formafaktor als mein X570-E Gaming....

Link to comment
3 hours ago, mgutt said:

Gefühlt sollte die die GTX 1050 Ti sogar unterbieten können. Eine echt interessante Karte.

Kann sie. Ich empfehl die doch jedem. 😅

Hab selbst auch eine… 😉

 

5 hours ago, vakilando said:

GeForce 1050TI

Hast du denn:

nvidida-persistenced

im go file?

Wenn nicht bitte unbedingt ins go file reinschreiben und die Karte die in der VM verwendet werden soll bitte an VFIO binden.

Link to comment
47 minutes ago, ich777 said:

Hast du denn:

nvidida-persistenced

im go file?

Nein, ich habe aber zwei (identische) user scripts (Video von Space Invader):

 

Script 1: At first start of Array only

Script 2: Scheduled Hourly

 

Das Script:

#!/bin/bash
### SpaceInvader: https://www.youtube.com/watch?v=KD6G-tpsyKw&list=PLl06mKdXGNOBK85uzS1JC8sotzK1Sbicm&index=2 (Youtube)
# check for driver
command -v nvidia-smi &> /dev/null || { echo >&2 "nvidia driver is not installed you will need to install this from community applications ... exiting."; exit 1; }
echo "Nvidia drivers are installed"
echo
echo "I can see these Nvidia gpus in your server"
echo
nvidia-smi --list-gpus 
echo
echo "-------------------------------------------------------------"
# set persistence mode for gpus ( When persistence mode is enabled the NVIDIA driver remains loaded even when no active processes, 
# stops modules being unloaded therefore stops settings changing when modules are reloaded
nvidia-smi --persistence-mode=1
#query power state
gpu_pstate=$(nvidia-smi --query-gpu="pstate" --format=csv,noheader);
#query running processes by pid using gpu
gpupid=$(nvidia-smi --query-compute-apps="pid" --format=csv,noheader);
#check if pstate is zero and no processes are running by checking if any pid is in string
if [ "$gpu_pstate" == "P0" ] && [ -z "$gpupid" ]; then
echo "No pid in string so no processes are running"
fuser -kv /dev/nvidia*
echo "Power state is"
echo "$gpu_pstate" # show what power state is
else
echo "Power state is" 
echo "$gpu_pstate" # show what power state is
fi
echo
echo "-------------------------------------------------------------"
echo
echo "Power draw is now"
# Check current power draw of GPU
nvidia-smi --query-gpu=power.draw --format=csv
exit

 

53 minutes ago, ich777 said:

und die Karte die in der VM verwendet werden soll bitte an VFIO binden

Ich habe keine der zwei Karten an VFIO gebunden...

Bei der 745 GTX würde das sicherlich Sinn ergeben, da sie permanent an meine Linux VM durchgereicht wird.

Die 1050 TI habe ich eine Zeit lang abwechselnd in der VM und in Emby genutzt, dann geht das nicht - oder doch?

Link to comment
8 hours ago, vakilando said:

Nein, ich habe aber zwei (identische) user scripts (Video von Space Invader):

Bitte schmeiß diese Skripte raus. Die persistence-mode option wird auch vermutlich mal bald aus nvidida-smi fliegen (zumindest schreibt das Nvidia schon ein paar Jahre. 😅 )

 

Ich würd dir empfehlen das du die Karte die dauernd in deiner VM verfügbar sein soll an VFIO bindest und einfach nvidia-persistenced in dein go file gibst.

 

Wenn du deine Karte nicht an VFIO binden eillst hat @alturismo ein VM pre start skript für die VMs das nvidida-persistenced beendet wenn eine vm gestartet wird und wieder startet wenn die VM beendet wird wenn dies von Interesse für dich ist.

 

Der leichtere Weg wäre natürlih der das du sie an VFIO bindest wenn denn die VM immer an ist.

 

8 hours ago, vakilando said:

Die 1050 TI habe ich eine Zeit lang abwechselnd in der VM und in Emby genutzt, dann geht das nicht - oder doch?

Würde funktionieren mit den skripten von @alturismo.

Link to comment
On 8/15/2022 at 3:00 PM, mgutt said:

Es hat sogar schon jemand gemessen. 24W, aber eben keine Karten und effizientere CPU:

 

 

konnte inzwischen weiter optimieren:

 

-R5 4650G

X570m

2*32gb ecc

2*nvme (pcie3.0)

2*sata-ssd

2* 14TB Red Pro

1* 6TB Ironwolf Pro

1* 18TB EXOS

RM550x (2021)

 

21W Spindown. Ziel ist <20 und da bin ich zuversichtlich.. irgendwann.

 

 

 

On 8/15/2022 at 2:31 PM, vakilando said:

ich hätte eine Frage zu dem genannten Asrock X570M Pro4 Board: Ist das X570M Pro4 denn relativ sparsam?

Mit dem X570 Chipsatz ist es leider schwer ein sparsames Board herzustellen. Wenn es ein Board mit B550 gibt, was deine Anforderungen + Luft erfüllt dann fährst du damit effizienter.

Edited by kdwg
Link to comment

@ich777 Alles klar, am Wochenende werde ich die eine Karte dauerhaft an VFIO binden und mir das Script von @alturismo mal anschauen.

Wenn ich dazu komme werde ich auch die Geforce 745 durch die T400 tauschen. Muss aber vorher noch das vbios extrahieren...

 

Kann ich einfach "nvidia-persistenced" ins go file aufnehmen wenn nur eine Karte dauerhaft an eine VM gebunden ist und die andere wechselweise zwischen VM und Docker verwendet wird?

 

10 hours ago, kdwg said:

21W Spindown. Ziel ist <20 und da bin ich zuversichtlich.. irgendwann.

@kdwg: Wow, das klingt nach einem Ziel für mich! Mal schauen wie nah ich da ran komme.

 

10 hours ago, mgutt said:

Kann man bei AMD die PCIe Version des Chipsatzes auf 2.0 reduzieren?

@mgutt keine Ahnung, muss ich gucken.

 

Ich habe aber letztens schon mal mein BIOS resettet und noch mal mit Stromspareinstellungen rumgespielt. Bin jetzt immerhin schon bei 90W.....

Link to comment
7 hours ago, vakilando said:

Muss aber vorher noch das vbios extrahieren...

Das ist doch meines Wissens nicht mehr nötig.

 

7 hours ago, vakilando said:

VM gebunden ist und die andere wechselweise zwischen VM und Docker verwendet wird?

Nein, dann brauchst du das Skript von @alturismo.

 

nvidia-persistenced funktioniert nur für die Docker container und du riskierst einen crash wenn nvidia-persistenced läuft und du versuchst dann eine VM zu starten mit einer Karte die nicht an VFIO gebunden ist.

Link to comment
8 hours ago, vakilando said:

werde ich die eine Karte dauerhaft an VFIO binden und mir das Script von @alturismo mal anschauen.

Moin, also, wenn ich das richtig verfolge ... du hast 2 GPU's im System.

 

1. an VFIO bind und perm in einer VM laufen (diese ist uns egal und ignorieren wir hier komplett)

2. soll im Wechselbetrieb laufen, mal Docker, mal in einer VM

 

zu 2. Voraussetzung, Nvidia Treiber ist installiert und der/die Docker(s) funktionieren damit, die VM ist installiert und läuft ohne dass die Karte VFIO bind ist (evtl. vbios), beides für sich ohne Probleme ...

 

Jetzt möchtest du dass wenn die VM aus ist die Nvidia in den persistent mode geht (und nicht unnötig viel verbraucht) bzw. vorab aus dem persistent mode ist das es keinen crash gibt beim VM Start, das lässt sich seit ~ 6.10 gut realisieren (vielleicht auch bereits seit 6.9 ...) mit qemu hooks.

 

https://libvirt.org/hooks.html << das war meine Basis

 

ich löse etwas aus nach Regeln, VM xy startet, bevor es los geht führe folgendes script aus (schalte persistent mode aus)... VM ist beendet, löse folgendes script aus (aktiviere persistent mode), das Ganze erfordert erstmal ein generelles script welches hier abgelegt sein muss (wenn der Pfad nicht vorhanden ist, erstellen), Name ist egel ...

 

image.png.d561ba3851fd5aee240c5b0fc4e1ed6d.png

 

in meinem Fall heißt das generelle script hook_scripts.sh mit folgendem Inhalt welches immer bei libvirt Aktivitäten ausgeführt wird

VM_Name_1 ist dein VM Name, /mnt/cache/... liegt das effektive script welches dann ausgeführt wird (kommt gleich), /usr/local/emhttp/... ist eine Note wenn ... (optional)

 

#!/bin/bash

if [ $1 = "VM_Name_1" -a $2 = "prepare" -a $3 = "begin" ]; then
	/mnt/cache/system/hook_scripts/VM_Name_1_start.sh &
	/usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
elif [ $1 = "VM_Name_1" -a $2 = "release" -a $3 = "end" ]; then
	/mnt/cache/system/hook_scripts/VM_Name_1_stop.sh &
	/usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
fi
exit 0;

 

du siehst, es wird je nach state entweder VM_Name_1_start.sh oder VM_Name_1_stop.sh ausgeführt

 

hier ein Beispiel wo diese bei mir liegen (andere Namen jetzt, ich hab das jetzt shrinked da mehrere ...), Pfad und Namen sind variabel, nur anpassen nicht vergessen ;)

 

image.png.b94665aa27800de93f73c93f96aeb2ca.png

 

Beispiel Inhalt Start, wir "killen" nvidia persistent ... (da nur 1 Karte bei Dir im "offenen" Betrieb ist geht das einfach, die # kommentierte wäre wenn beide separat ...)

#!/bin/bash

kill $(pidof nvidia-persistenced) &
#nvidia-smi -i 0 -pm 0
sleep 1

exit 0;

Beispiel Inhalt Stop, wir starten nvidia persistent wieder ... (auch hier, die # kommentierte wäre wenn mehrere ... und direkt angesprochen werden soll)

#!/bin/bash

nvidia-persistenced &
#nvidia-smi -i 0 -pm 1 &
sleep 1

exit 0;

 

damit steuerst du etwas wenn VM's starten, stoppen ...

 

wenn die besagte VM nicht auto startet ... dann noch einfach folgenden Eintrag in das go file, wenn Sie auto startet dann nicht. geht zwar, aber ... unnötig.

nvidia-persistenced &

 

in der Anlage die Dateien als Basis, bei Fragen einfach melden ;)

hook_scripts.sh VM_Name_1_start.sh VM_Name_1_stop.sh

  • Like 2
Link to comment

Hallo @alturismo,

besten Dank für deine ausführliche Erklärung!

Da ich morgen doch nicht früh raus muss habe ich einfach mal losgelegt...

Die Nvidia Karte, die von meiner dauerhaft laufenden Haupt Linux Maschine genutzt wird, habe ich an VFIO gebunden und ein reboot gemacht.

Dann habe ich deine Scripte für meine VMs implementiert, die nicht dauerhaft laufen (2x Windows, 1x Linux).

Da nur meine Haupt Linux Maschine dauerhaft läuft, habe ich zudem "nvidia-persistenced &" ins go file aufgenommen.

Anschließend habe meine gerade laufende Win10 Maschine, die sich die Nvidia Karte mit dem Emby Docker teilt gestoppt, gestartet und wieder gestoppt und es schein alles soweit zu funktionieren.

Sehr cool!

 

Noch eine Frage:

Die Karte, die nun an VFIO gebunden ist und von meiner Haupt Linux Maschine genutzt wird ist meine primäre Karte.

Das bedeutet, dass ich nun beim Neustart von Unraid keinen direkten Zugriff über die Console habe, da keine Ausgabe mehr am Monitor erfolgt.

Natürlich ist ein remote Zugriff über SSH möglich aber halt nur wenn alles läuft wie es soll.

Wenn es also mal schlecht läuft und ich müsste direkt an die Unraid Console über den angeschlossenen Monitor, müsste ich:

  • den Boot-Stick entfernen und in mein Notebook stecken
  • dort die "vfio-pci.cfg" editieren und die Zeile entfernen, über die meine primäre Karte an VFIO gebunden wird
    UND
  • im go file  "nvidia-persistenced &" auskommentieren...
  • Unraid booten

Richtig?

 

EDIT: Meine Aussage, dass die an VFIO gebundene Karte, die von meiner automatisch startenden VM genutzt wird, meine primäre Karte ist war falsch!!.

 

Dieses potentielle Problem müsste ich doch umgehen können, indem ich die primäre Karte doch nicht an VFIO binde und es ebenso über die Scripte steuere.

Das ginge dann über die in deinem Beispiel auskommentierten Zeilen "#nvidia-smi -i 0 -pm 0" und "#nvidia-smi -i 0 -pm 1 &". Kannst du mir genauer erklären was da zu machen ist?

Ich habe meine GPUs noch nie an VFIO gebunden und hatte noch nie Probleme deswegen. Was bringt mir die VFIO Bindung denn ggf. noch, außer dass es keine Konflikte zwischen Unraid und an VMs durchgereichte Hardware gibt?

 

Beste Grüße und jetzt doch mal gute Nacht!

Link to comment
4 hours ago, vakilando said:

Dieses potentielle Problem müsste ich doch umgehen können, indem ich die primäre Karte doch nicht an VFIO binde und es ebenso über die Scripte steuere.

 

hmm, also, wenn das eintrifft (crash) glaube ich nicht dass du damit Erfolg haben wirst, ich wundere mich eh dass du ohne igpu auf einem AMD System mit beiden verfügbaren Karten "spielen" kannst, das ganz ohne Extra's (syslinux Einträge etc) ...  da unraid sich von Haus aus ja gerne die erste Karte "nimmt"

 

4 hours ago, vakilando said:

Das ginge dann über die in deinem Beispiel auskommentierten Zeilen "#nvidia-smi -i 0 -pm 0" und "#nvidia-smi -i 0 -pm 1 &". Kannst du mir genauer erklären was da zu machen ist?

 

fast so, ist umgekehrt ... die erste "0" ist die Karte, die zweite der mode, Beispiel beide Karten beim Start in den persistent mode zu setzen wäre im  go file

 

nvidia-smi -i 0 -pm 1
nvidia-smi -i 1 -pm 1

 

und jetzt die Karte 1 (die 2.) aus dem persistent mode zu nehmen wäre (Karte ID 1, persistent mode 0)

nvidia-smi -i 1 -pm 0

 

probier es aus was passiert ;) wenn du die primäre VM dann herunter fährst, HDMI Stecker umsteckst, ob dann ein unraid Konsolen Bild kommt ... du müsstest auch dann ja wahrscheinlich erstmal irgendwie auch den persistent mode deaktivieren (wenn du das auch ins script setzt) oder du setzt deine Main VM GPU bei Stop NICHT in den persistent mode, müsste man probieren ... ich nutze ja intel und hab die igpu aktiv, etwas anderes Szenario ...

 

also, was willst du machen, beide Karten entsprechend setzen bei Start / Stop oder nur die zweite Karte, diese jedoch direkt addressieren da die erste Karte nicht an VFIO Bind soll ? wenn beide ... dann wäre auch das hook script zu erweitern, wenn nur die zweite (und die erste ohne VFIO Bind) dann wären nur die nvidia-smi Kommandos zu ändern.

Link to comment

Moin!

15 hours ago, alturismo said:

ich wundere mich eh dass du ohne igpu auf einem AMD System mit beiden verfügbaren Karten "spielen" kannst, das ganz ohne Extra's (syslinux Einträge etc) ...  da unraid sich von Haus aus ja gerne die erste Karte "nimmt"

Also, ich glaub ich beschreibe jetzt noch mal ein wenig meine Konfiguration:

Mainboard: ASUS ROG Strix x570-E Gaming

GPU 1 (primär): GeForce 745 GTX (Edit: Falsch es ist die sekundäre Karte!)

  - an Monitor 1 & 2 angeschlossen

  - meiner Haupt Linux VM zugewiesen mit Soundkarte inkl. vbios file

GPU 2 (sekundär): GeForce 1050 TI: (Edit: Falsch es ist die primäre Karte!)

  - an Monitor 2 angeschlossen

  - allen anderen VMs zugewiesen mit Soundkarte inkl. vbios file

  - in Emby verwendet

 

Vor VFIO bind der 745 GTX: 

  1. Unraid bootet
  2. Ich kann auf Monitor 2 ins BIOS gehen, den Bootprozess beobachten und mich einloggen
  3. Meine Haupt Linux Maschine bootet (automatisch) und landet auf Monitor 1 & 2
  4. Sobald meine Haupt Linux Maschine da ist kann ich nicht mehr auf die Unraid Console zugreifen, da sich die VM die Grafikkarte "nimmt"

Wenn also meine Haupt VM nicht bootet (kaputt oder Start auf manuell gestellt) kann ich mich ohne VFIO bind auf der Unraid Console direkt anmelden.

Diese Option entfällt nun, da der VFIO bind den Zugiff auf die Console zunichte macht (außer BIOS natürlich):

 

Nach VFIO bind der 745 GTX: 

  1. Unraid bootet
  2. Ich kann auf Monitor 2 ins BIOS gehen (Geht nicht mehr: den Bootprozess beobachten und mich einloggen)
  3. Meine Haupt Linux Maschine bootet (automatisch) und landet auf Monitor 1 & 2

Weitere Infos:

Mein Boot Modus ist "Legacy"

Meine Syslinux Config:

syslinux.png.f4142908a6d203fc1a226fc20632cf50.png

 

Ich muss jetzt weg..... weitere Infos bei Bedarf gerne später....!

Link to comment
1 hour ago, vakilando said:

Vor VFIO bind der 745 GTX: 

  1. Unraid bootet
  2. Ich kann auf Monitor 2 ins BIOS gehen, den Bootprozess beobachten und mich einloggen
  3. Meine Haupt Linux Maschine bootet (automatisch) und landet auf Monitor 1 & 2
  4. Sobald meine Haupt Linux Maschine da ist kann ich nicht mehr auf die Unraid Console zugreifen, da sich die VM die Grafikkarte "nimmt"

Wenn also meine Haupt VM nicht bootet (kaputt oder Start auf manuell gestellt) kann ich mich ohne VFIO bind auf der Unraid Console direkt anmelden.

Diese Option entfällt nun, da der VFIO bind den Zugiff auf die Console zunichte macht (außer BIOS natürlich):

 

jetzt die Frage, wenn du die VM herunter fährst, kommst du dann "wieder" in die unraid Konsole ? das glaube ich nämlich nicht.

 

wenn doch, dann klar, setz separat um und alles ist gut, wenn Nein (meine Vermutung) ... was bringt es Dir dann da du eh nicht mehr in die Konsole kommen würdest im laufenden Betrieb ? ... und sollten alle Stricke reißen, safe mode, vfio ex, reboot ohne vfio und autostart ... und du kannst "reparieren" ohne den Stick ziehen zu müssen, bis zum Boot Fenster und deren Auswahl kommst du immer.

 

Zusammengefasst, wenn die Main VM wirklich eh immer läuft (oder laufen soll) macht das "splitten" meiner Meinung nach keinen Sinn ...

 

ansonsten wenn du splitten willst und den Autostart in VM_1 deaktivieren willst (kannst autostart auch lassen)

 

go file (beide Karten werden in den pm mode gesetzt)

nvidia-smi -i 0 -pm 1
nvidia-smi -i 1 -pm 1

 

hook script in /etc/libvirt/hooks/qemu.d/.....sh (wir erweitern jetzt "je nach VM 1 oder 2")

#!/bin/bash

if [ $1 = "VM1_Name" -a $2 = "prepare" -a $3 = "begin" ]; then
	/mnt/cache/system/hook_scripts/VM1_Name_start.sh &
	/usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
elif [ $1 = "VM1_Name" -a $2 = "release" -a $3 = "end" ]; then
	/mnt/cache/system/hook_scripts/VM1_Name_stop.sh &
	/usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
elif [ $1 = "VM2_Name" -a $2 = "prepare" -a $3 = "begin" ]; then
	/mnt/cache/system/hook_scripts/VM2_Name_start.sh &
	/usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
elif [ $1 = "VM2_Name" -a $2 = "release" -a $3 = "end" ]; then
	/mnt/cache/system/hook_scripts/VM2_Name_stop.sh &
	/usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
fi
exit 0;

 

und die Start Stop .sh Einträge der beiden VM's wären dann (hab jetzt alle 4 hier eingefügt, es wären dann 4 Dateien)

### VM_1_start.sh

#!/bin/bash
sleep 1
nvidia-smi -i 0 -pm 0
exit 0;

### VM_1_stop.sh

#!/bin/bash
sleep 1
nvidia-smi -i 0 -pm 1
exit 0;

### VM_2_start.sh

#!/bin/bash
sleep 1
nvidia-smi -i 1 -pm 0
exit 0;

### VM_2_stop.sh

#!/bin/bash
sleep 1
nvidia-smi -i 1 -pm 1
exit 0;

 

so wäre es jetzt nicht allgemein gesetzt, sondern passend zur GPU (0,1) gesetzt und separiert, je nach VM 1 oder 2 Status ...

 

wie lange nvidia-smi noch geht ... hoffen wir noch lange, das kann irgendwann zu Ende sein laut Nvidia, wobei ich nicht kurzfristig damit rechne ;)

  • Like 1
Link to comment
2 hours ago, vakilando said:

Sobald meine Haupt Linux Maschine da ist kann ich nicht mehr auf die Unraid Console zugreifen, da sich die VM die Grafikkarte "nimmt"

Genau da ist sehr ungewöhnlich. Die wenigsten schaffen das so umzusetzen.

 

Hast du dafür noch irgendwelche Optionen setzen müssen (Kernel etc)?

 

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.