Multiprozessor FreeBSD

SpecialAgent

BSD Trainee
Hi Leute,

hab Lust auf ein Multi Prozessor System. Hat jemand Erfahrung wie FreeBSD das handelt? Gibts da was bestimmtes zu beachten?

Danke und Gruss.
 
FreeBSD soll da sehr geeignet sein, hab' aber keine Eigenerfahrung.
Aber ist es nicht ein bisschen übertrieben, sich aus reiner Lust ein Multi-Prozessor-System zu kaufen?
Kauf dir doch einfach einen Dual-Core-Prozessor!
 
Hm... hab noch nie den Kernel von FreeBSD neu kompiliert, denk aber es sollte so einfach sein wie unter Linux... ( oder schwer? haha )... gut ich les mich da mal rein.

Gruss.
 
Anelitung steht irgendwo versteckt in /usr/src/UPDATING

Aus dem Kopf:
cd /usr/src
make buildworld
make buildkernel KERNCONF=$NAME
make installkernel KERNCONF=$NAME
reboot in den singleusermodus
/ /usr /var /tmp rw-mounten
mergemaster -p
make installworld
mergemaster
[ctrl]-[d] um in den Mehrbenutzermodus weiterzubooten.

Für einen SMP Kernel sollte schon eine passende Kernelconfigurationsdatei rumliegen, die als Ausgangspunkt für etwaige eigene Experimente dienen kann.
Genaueres natürlich auch im freeBSD-Handbuch auf freebsd.org und bestimmt auch im Wiki.
 
Bei der Installation von FreeBSD kann man einen SMP Kernel auswählen. Selbst bauen ist nicht Notwendig. Wenn du selbst bauen willst dann geht das mit KERNCONF=SMP .
 
Ich habe ein SMP-System, und es funktioniert eigentlich genauso wie ein "normales", nur dass du beim Kompilieren immer -j2(3,4,...) angeben musst.
In die make.conf solltest du das Flag nicht schreiben, da leider nicht alle Ports mit mehreren Threads durchkompilieren...
 
free schrieb:
Ich habe ein SMP-System, und es funktioniert eigentlich genauso wie ein "normales", nur dass du beim Kompilieren immer -j2(3,4,...) angeben musst.
In die make.conf solltest du das Flag nicht schreiben, da leider nicht alle Ports mit mehreren Threads durchkompilieren...
Muss man nicht, aber natürlich wird beim Bauen nur eine CPU verwendet, wenn man es nicht tut. Im übrigen gibt es auch Möglichkeiten das Port für Port zu konfigurieren. Siehe:
http://wiki.bsdforen.de/index.php/Bsdadminscripts#buildflags
 
Ja, also ich wollte schon einen SMP Generic Kernel benutzen, da ich mit dem Generic eigentlich immer zufrieden war und mir nicht zuviel arbeit machen möchte.

Ja, die Ports. Wie kann ich denn feststellen ob einer Mutli Threads mag oder nicht? Wär doch eigentlich ne feine Sache wenn das dem BS überlassen wird. Sprich einfach den SMP Kernel haben und FreeBSD kümmert sich selber ob ein port speziell compiliert werden muss oder nich?
 
Du musst gar nichts konfigurieren. Das Problem ist blos, das Ports normalerweise Schritt für Schritt gebaut werden, so das immmer nur eine CPU belastet wird, du profitierst also nicht von deinen vielen CPUs. Dafür gibt es die '-j' Option für make, mit der man das ganze parallelisieren kann.

Das verursacht aber bei einigen (sehr) wenigen Ports Probleme, beim Bauen. Mit buildflags kann man eine Konfigurationsdatei anlegen, die bestimmte Ports aus der Geschichte ausklammert.

Code:
/usr/ports/* & !*/work/*{
	SUBTHREADS=	4

	# No threading.
	*/devel/imake-*		{!SUBTHREADS}
	*/devel/libthai		{!SUBTHREADS}
	*/devel/ORBit2		{!SUBTHREADS}
	*/editors/vim		{!SUBTHREADS}
	*/graphics/libart_lgpl	{!SUBTHREADS}
	*/math/atlas		{!SUBTHREADS}
	*/multimedia/nxtvepg	{!SUBTHREADS}
	*/print/ghostscript-gnu	{!SUBTHREADS}
	*/print/xdvik		{!SUBTHREADS}
	*/security/openssl-beta	{!SUBTHREADS}
}
Im Beispiel hier sind alle bei mir problematischen Ports, von über 400. Also sind bei mir nur 2.5% der Ports problematisch.
 
Wie wäre es, wenn du diese Liste auch ins Wiki schreibst? Dort kann sie besser gepflegt werden. portmgr ist anscheinend (noch) nicht gewillt viel arbeit in das parallele bauen zu investieren. (Vielleicht ja wenn der Port auf Suns Niagara fertig ist ;) )
 
Ich weiß ja nicht ob das nur für meine Systeme gilt, oder alle anderen. Deswegen ist das auch nur ein Syntaxbeispiel. security/openssl-beta ging zum Beispiel stets problemlos. Nur die allerneuste Version hat kurz vor Schluß ein Problem.
 
Hi Leute,

danke für die Tipps, werde nächste Woche mal ein wenig basteln.

Aber ich hätte da noch eine Frage, die nicht unbedingt ins Thema passt.

Wenn ich einen laufenden Port ( z.B. Apache httpd ) mit portupgrade update... müsst ich diesen doch normalerweise neu starten, damit die neue Version auch läuft oder?

Ich mein, wenn der Port doch läuft, wie kann ich den dann updaten? Kann ja nicht ne binary ersetzen die gerade am arbeiten ist.

Wenn ja, müsste man noch einem update vieler ports den rechner neustarten um ein wenig Zeit zu sparen?!
 
hallo forum,

ich kann euch ein smp freebsd system waermstens empfehlen, es macht einfach doppelt so viel spass. nicht nur wegen des geschwindigkeits vorteil beim kompilieren, auch das arbeiten an einer solchen smp maschine ist einfach fluffiger! betreibe selber seit letzten jahr ein kleine dual p3 workstation, hoffe fbsd rennt genauso auf dem neuen core 2 duo prozessor.

gr,
dondc
 
Hallo SpecialAgent,

aus eigener Erfahrung kann ich berichten, dass Xorg auf SMP-Systemen Schwierigkeiten mit einer Matrox G450PCI hat. Manchmal ist die Grafikausgabe so langsam, da ist der alte Commodore C64 schneller...

Ansonsten sind keine Probleme zu erwarten, ausser, Dein Motherboard entspricht nicht der Intel SMP-Spezifikation 1.1 oder 1.4.

Viele Grüße

Jürgen
 
SpecialAgent schrieb:
Wenn ich einen laufenden Port ( z.B. Apache httpd ) mit portupgrade update... müsst ich diesen doch normalerweise neu starten, damit die neue Version auch läuft oder?

Ich mein, wenn der Port doch läuft, wie kann ich den dann updaten? Kann ja nicht ne binary ersetzen die gerade am arbeiten ist.
Doch, kannst du. Das Binary bleibt unangetastet im Speicher. Also musst du nur nachdem das Update abgeschlossen ist

# /usr/local/etc/rc.d/apache22.sh restart

ausführen.
 
Ah, also genau wie ich mir gedacht habe.

Hmm... also mach ich mal nen restart, da nach portupgrade -a bestimmt 15 ports neu sind und nich alle von hand wieder starten will.

Gruss.
 
[LoN]Kamikaze schrieb:
Doch, kannst du. Das Binary bleibt unangetastet im Speicher. Also musst du nur nachdem das Update abgeschlossen ist

# /usr/local/etc/rc.d/apache22.sh restart

ausführen.

Mit so was sollte man Vorsichtig sein!

Es ist schon richtig das die Binary, die am arbeiten ist, natürlich auch weiterhin im Speicher arbeitet.
Wenn nun aber die Software bei einem Interupt was nachladen will, um zum Bleistift eine DB ordentlich zu beenden und dieser teil ist nicht mehr da, könnten unschöne Efekte auftretetn. (Bei MySQL gab es den Fall mal vor längerem.)

(ich weiß schon warum ich auf Servern die ganzen Port-Tools nicht nutze und das lieber von Hand anfasse. :p )
 
Das klingt spanisch für mich, die Datenbank wird doch gar nicht vom Paketsystem angefasst.
 
dondc schrieb:
betreibe selber seit letzten jahr ein kleine dual p3 workstation, hoffe fbsd rennt genauso auf dem neuen core 2 duo prozessor.
Ja, das stimmt.
Von der Geschwinigkeit her hat sich da in den letzten 5 Jahren so gut wie nix getan, das wird alles nur in der Werbung so dargestellt!! :D
 
Uargh, die Ports nicht nutzen sollte man nicht laut aussprechen...

Es ist kein Problem mit den Ports erst zu bauen, Programm beenden, neue Version installieren, Programm wieder starten.

Mit portupgrade sollte sich das sogar automatisieren lassen.

Und von wegen im laufenden Betrieb überschreiben: Mache ich ständig, außer vielleicht bei so fragilen Programmen wie MySQL ;)
 
Ports updaten von Hand, warum nicht, wenn man nicht viele Ports installiert hat die man pflegen muss, ist das kein Problem, wie z.B. bei einem Server welcher nicht so viele Pakete benutzt. Bei einen Desktop System mit bis zu 500 Paketen kann die Arbeit von Hand schon ein grossere Herausforderung darstellen.

Ich benutzen portupgrade, seit einiger Zeit und moechte auch nicht mehr drauf verzichten, bis auf ein paar kleine Abhaengigkeits-, Bibliotheks- bzw. Kompilierfehler, die aber ehr auf den Ports-tree zurueck zufuehren waren. Portspezifische Einstellungen fuer ein auffrischen mit portupgrade lasen sich fuer jeden einzelnen Paket in: /usr/local/etc/pkgtools.conf anpassen und natuerlich vor jedem portupgrade in die /usr/ports/UPDATING schauen, ob es Anmerkungen ueber eventuelle Aenderung im Ports Verzeichnis gibt.

Gr,
dondc
 
Zurück
Oben