View previous topic :: View next topic |
Author |
Message |
Sabaton Apprentice
Joined: 02 Mar 2019 Posts: 190
|
Posted: Fri Feb 04, 2022 5:02 am Post subject: Gentoo-Gastsystem in VirtualBox - Neues Bundle |
|
|
Hallo liebes Gentoo-Forum.
Ich habe für mein Hostsystem ein Bundle-Upgrade von AMD FX-8370 und 16 GB RAM zu MSI MPG B550 GAMING
Plus, Ryzen 7 5800X, 32GB RAM durchgeführt.
Windows 10 läuft mit Übernahme von alten System und Treiberanpassung
perfekt.
Das Gentoo-Gastsystem lief auf dem alten Bundle in VirtualBox mit 4 Kernen und 8 GB RAM.
MAKEOPTS="-j3" war in "make.conf" angegeben.
Ich will mit dem neuen Bundle 6 Kerne und 16 GB RAM dem Gentoo-Gastsystem spendieren.
MAKEOPTS="-j6" will ich in "make.conf" angeben.
Ist dies soweit ok?
Wie sollte die alte "make.conf" der neuen CPU angepasst werden?
Code: | # These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
COMMON_FLAGS="-march=native -O2 -pipe"
CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 sse4_1 ssse3"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
MAKEOPTS="-j6"
# NOTE: This stage was built with the bindist Use flag enabled
USE="elogind nls dbux udev branding icu X acpi display-manager sddm gtk libkms wallpapers handbook pulseaudio alsa legacy-systray gtk2 gtk3 bluetooth plymouth pango"
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"
VIDEO_CARDS="virtualbox"
INPUT_DEVICES="libinput"
ACCEPT_LICENSE="* @EULA"
LINGUAS="de en"
L10N="de en"
# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C |
Mfg,
Sabaton |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1721
|
Posted: Fri Feb 04, 2022 9:44 am Post subject: |
|
|
du verwendest march=native, von daher wird die geänderte CPU automatisch berücksichtigt.
Wenn du möchtest, kannst du ein world rebuild machen, damit alle Pakete Optimierungen für die neue CPU verwenden.
Ich denke aber, dass die alte und neue CPU recht ähnlich sind, und das world rebuild nicht viel ändert.
Wenn du keine job option in makeopts verwendest, wählt portage automatisch eine Anzahl jobs, die der Anzahl der (logischen) CPUs entspricht, also kannst du das auch weglassen, wenn du willst.
16GB ram sollten auch ausreichend sein für 6 make jobs. |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Fri Feb 04, 2022 11:45 am Post subject: |
|
|
cpuid2cpuflags ausführen - es liefert die Werte für CPU_FLAGS_X86. |
|
Back to top |
|
|
Sabaton Apprentice
Joined: 02 Mar 2019 Posts: 190
|
Posted: Fri Feb 04, 2022 4:02 pm Post subject: |
|
|
Code: | gentoo /home/peter # cpuid2cpuflags
CPU_FLAGS_X86: aes avx avx2 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3
|
Ich hab jetzt in meiner "make.conf" folgendes geändert:
Code: | CPU_FLAGS_X86="aes avx avx2 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3" |
Ist es so ok und kann ich jetzt ohne weitere Maßnahmen Systemupdates einspielen?
MfG,
Sabaton |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Fri Feb 04, 2022 6:54 pm Post subject: |
|
|
Im Prinzip ja...
Ich würde vorher noch...
- prüfen, ob das Profil noch passt (eselect profile list)
- die World-Datei (/var/lib/portage/world) aufräumen
- package.use und package.accept_keywords ansehen und ggf. optimieren
- prüfen, ob die Systemzeit stimmt (date)
Wie sieht es aus mit dem Kernel? Verwendest Du einen generischen Kernel? Oder einen hochgradig für Dein altes System optimierten Kernel? Falls letzteres der Fall sein sollte, müsstest Du evtl. auch die Kernel-Config anpassen. |
|
Back to top |
|
|
arfe Apprentice
Joined: 24 Aug 2005 Posts: 298 Location: Essen
|
Posted: Fri Feb 04, 2022 10:09 pm Post subject: |
|
|
mike155 wrote: | cpuid2cpuflags ausführen - es liefert die Werte für CPU_FLAGS_X86. |
Wie oben angegeben, ist das bei march=native nicht erforderlich. |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Fri Feb 04, 2022 10:35 pm Post subject: |
|
|
arfe wrote: | mike155 wrote: | cpuid2cpuflags ausführen - es liefert die Werte für CPU_FLAGS_X86. |
Wie oben angegeben, ist das bei march=native nicht erforderlich. |
Das stimmt aber nicht... CFLAGS und CPU_FLAGS_X86 steuern unterschiedliche Dinge.
Siehe: https://wiki.gentoo.org/wiki/CPU_FLAGS_X86. |
|
Back to top |
|
|
arfe Apprentice
Joined: 24 Aug 2005 Posts: 298 Location: Essen
|
Posted: Sat Feb 05, 2022 9:54 am Post subject: |
|
|
mike155 wrote: | arfe wrote: | mike155 wrote: | cpuid2cpuflags ausführen - es liefert die Werte für CPU_FLAGS_X86. |
Wie oben angegeben, ist das bei march=native nicht erforderlich. |
Das stimmt aber nicht... CFLAGS und CPU_FLAGS_X86 steuern unterschiedliche Dinge.
Siehe: https://wiki.gentoo.org/wiki/CPU_FLAGS_X86. |
Nicht alles was in einem Wiki von gentoo steht, muss richtig sein:
Code: | gcc -march=native -E -v - </dev/null 2>&1 | grep cc1 |
Du wirst feststellen, dass cpuid2cpuflags für CPU_FLAGS_X86 nicht erforderlich ist.
march=native liefert direkt die richtigen FLAGS für die CPU. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5328
|
Posted: Sat Feb 05, 2022 10:39 am Post subject: |
|
|
arfe wrote: |
Du wirst feststellen, dass cpuid2cpuflags für CPU_FLAGS_X86 nicht erforderlich ist.
march=native liefert direkt die richtigen FLAGS für die CPU. |
Ja nur CPU_FLAGS_X86 ist eine use expand variable wie L10N.
Und das hat nichts damit zu tun welche optionen man dem compiler übergibt. Das sind generische Optimierungen, welche den gesamten code betreffen.
Durch CPU_FLAGS_X86 kann man angeben für welche cpu instruction sets spezieller support aktiviert werden sollen, wenn das entsprechende Paket speziellen support für das spezifizierte instruction set bietet.
z.b. wenn ein paket für die identische Funktionalität neben der generischen Implementierung, spezielle Variante implementiert, welche ein spezifisches instruction set direkt verwendet (z.b. AVX),
dann kann man über CPU_FLAGS_X86 beim bauen das pakets mitteilen, dass diese spezielle Variante verwendet werden soll statt der generischen.
Bzw. der Support für die speziellen Variante aktiviert wird, und das Programm trifft zur laufzeit die Entscheidung welche Variante genutzt werden soll.
Je nachdem welche instruction sets die CPU unterstützt, auf dem das Programm läuft, was nicht die identische CPU sein muss mit dem das Programm übersetzt wurde.
ffmpeg unterstützt z.b. CPU_FLAGS_X86
Z.b. könnte man ffmpeg auf einer cpu übersetzen, welche kein AVX Unterstützt, aber trotzdem den support für AVX aktivieren.
Wenn dann das ffmpeg binary auf einer CPU gestartet wird, welche AVX Unterstützt so wird dann die AVX variante der Implementierung einer Funktion/Algorithmus verwendet statt der generischen. _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
arfe Apprentice
Joined: 24 Aug 2005 Posts: 298 Location: Essen
|
Posted: Sat Feb 05, 2022 10:43 am Post subject: |
|
|
firefly wrote: |
ffmpeg unterstützt z.b. CPU_FLAGS_X86
Z.b. könnte man ffmpeg auf einer cpu übersetzen, welche kein AVX Unterstützt, aber trotzdem den support für AVX aktivieren.
Wenn dann das ffmpeg binary auf einer CPU gestartet wird, welche AVX Unterstützt so wird dann die AVX variante der Implementierung einer Funktion/Algorithmus verwendet statt der generischen. |
Das trifft im Repo von Gentoo nur auf ein paar Pakete zu. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5328
|
Posted: Sat Feb 05, 2022 11:27 am Post subject: |
|
|
arfe wrote: | firefly wrote: |
ffmpeg unterstützt z.b. CPU_FLAGS_X86
Z.b. könnte man ffmpeg auf einer cpu übersetzen, welche kein AVX Unterstützt, aber trotzdem den support für AVX aktivieren.
Wenn dann das ffmpeg binary auf einer CPU gestartet wird, welche AVX Unterstützt so wird dann die AVX variante der Implementierung einer Funktion/Algorithmus verwendet statt der generischen. |
Das trifft im Repo von Gentoo nur auf ein paar Pakete zu. |
Ja ändert aber nichts daran das deine Aussage nicht ganz korrekt ist.
ja mit
Code: | gcc -march=native -E -v - </dev/null 2>&1 | grep cc1 |
kann man auch herausfinden welche instruction sets die CPU unterstützt. (Wobei eher die instruction sets, welche der compiler kennt und unterstützung hat)
Aber aus der ausgabe muss du selbst die entsprechenden heraussuchen.
Das tool cpuid2cpuflags liefert die passende CPU_FLAGS_X86 zeile, welche du dann einfach in die make.conf eintragen kannst
Des weiteren musst du die werte aus der compiler ausgabe dann noch in die passenden werte übersetzen, welche von CPU_FLAGS_X86 bekannt sind.
z.b. meine cpu:
Code: |
$ gcc -march=native -E -v - </dev/null 2>&1 | grep cc1
/usr/libexec/gcc/x86_64-pc-linux-gnu/10.3.0/cc1 -E -quiet -v - -march=znver2 -mmmx -mno-3dnow -msse -msse2 -msse3 -mssse3 -msse4a -mcx16 -msahf -mmovbe -maes -msha -mpclmul -mpopcnt -mabm -mno-lwp -mfma -mno-fma4 -mno-xop -mbmi -mno-sgx -mbmi2 -mno-pconfig -mwbnoinvd -mno-tbm -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mno-rtm -mno-hle -mrdrnd -mf16c -mfsgsbase -mrdseed -mprfchw -madx -mfxsr -mxsave -mxsaveopt -mno-avx512f -mno-avx512er -mno-avx512cd -mno-avx512pf -mno-prefetchwt1 -mclflushopt -mxsavec -mxsaves -mno-avx512dq -mno-avx512bw -mno-avx512vl -mno-avx512ifma -mno-avx512vbmi -mno-avx5124fmaps -mno-avx5124vnniw -mclwb -mmwaitx -mclzero -mno-pku -mrdpid -mno-gfni -mno-shstk -mno-avx512vbmi2 -mno-avx512vnni -mno-vaes -mno-vpclmulqdq -mno-avx512bitalg -mno-avx512vpopcntdq -mno-movdiri -mno-movdir64b -mno-waitpkg -mno-cldemote -mno-ptwrite -mno-avx512bf16 -mno-enqcmd -mno-avx512vp2intersect --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=znver2 |
und hier die ausgabe von cpuid2cpuflags
Code: | $ cpuid2cpuflags
CPU_FLAGS_X86: aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sha sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 |
fma3 und rdrand, welche in der cpuid2cpuflags aufgelistet werden, tauchen in der ausgabe von gcc nicht so auf
fma3 wird wohl bei gcc als fma geführt (-mfma)
rdrand wird bei gcc als rdrnd geführt (-mrdrnd) _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
|