Core CPU 2 mit 3 Ghz oder 4 X 2.5 Ghz

Serverdienste ohne eigene Kategorie
amiga1200
Posts: 213
Joined: 2007-01-13 19:58
 

Core CPU 2 mit 3 Ghz oder 4 X 2.5 Ghz

Post by amiga1200 »

Ich betreibe einen Suse 11 Server als Webserver
wo hauptsächlich
Apache und Mysql Rechenzeit zieht.
Traffc ist ca. 500 MB/ Tag (PHP seiten mit deren vielen kleinen Bildern)

Ich habe mal gelesen, das eine 4 Core CPU für ein Webserver nichts bringt,
und man lieber EINEN Core mit möglichs viel Power braucht.


Gibt es darüber andere Meinungen oder Test?
User avatar
daemotron
Administrator
Administrator
Posts: 2643
Joined: 2004-01-21 17:44
 

Re: Core CPU 2 mit 3 Ghz oder 4 X 2.5 Ghz

Post by daemotron »

amiga1200 wrote:Ich habe mal gelesen, das eine 4 Core CPU für ein Webserver nichts bringt,
und man lieber EINEN Core mit möglichs viel Power braucht.
Bullshit. Ein Webserver braucht nicht viele Gigahertz auf einem einzelnen Kern. Ob und wie viele CPU-Kerne etwas bringen, hängt von mehreren Faktoren ab. Zunächst einmal muss das Betriebssystem mehrere Cores verwalten können, und dann muss der Scheduler des OS auch noch sinnvoll mit mehreren Kernen umgehen können. Bei Linux ist beides der Fall, wobei der Vanilla-Kernel bis zu 255 Cores verwalten kann. Die Sinngrenze liegt hier je nach Anwendung bei 4-8 Cores - darüber hinaus kann der Scheduler sie nicht mehr wirklich effizient auslasten.

Sodann steht die Frage nach der Anwendung. Deiner Beschreibung entnehme ich, dass Du Apache und MySQL einsetzt.

Zuerst mal zu MySQL:
MySQL ist ein Single Process/multithreaded daemon. D. h. für jede Verbindung erzeugt der mysqld einen Thread. Der Linux-Kernel (mit dem Standard-Scheduler) kann zum derzeitigen Stand solche Threads auf bis zu 4 CPU-Kerne sehr gut verteilen (lineare Skalierung), bis etwa 8 Kerne bringen zusätzliche CPU-Kerne immerhin noch ca. 30-60% Leistungszuwachs. Darüber hinaus skaliert Linux bei einem rein über Threads skalierenden Daemon nicht mehr besonders gut.

Zu Apache:
Je nach eingesetztem MPM-Modul nutzt der Apache entweder Prozesse (Prefork) oder eine Kombination aus Prozessen und Threads (Worker), um parallele Anfragen zu bearbeiten. Hier gilt ähnliches wie bei MySQL, nur dass der Linux-Scheduler Prozesse auf einem SMP-System etwas besser schedulen kann als Threads, wodurch die Skalierung hier auch über 8 Kerne hinaus noch einen Leistungszuwachs bringt. Spezialfall: Würde allerdings nicht Apache, sondern Lighttpd eingesetzt, würden zusätzliche CPU-Kerne überhaupt nichts bringen, da Lighty weder Prozesse noch Threads erzeugt und damit vom Scheduler nicht über mehrere Cores verteilt werden kann.

Soweit zur Theorie der CPU-Nutzung. Demnach sind mehr Cores mit weniger GHz besser als weniger Cores mit mehr GHz (zumal moderen Multi-Core-CPUs trotz niedrigerer Taktrate einen besseren Durchsatz haben und obendrein noch wesentlich energieeffizienter sind), sobald mehrere Dienste parallel ausgeführt werden sollen oder ein Dienst mehrere parallel auszuführende Prozesse/Threads erzeugt. Jetzt zur Praxis: andere begrenzende Faktoren wie RAM, Festplatten- und Netzwerk-I/O limitieren die tatsächlich mögliche Skalierbarkeit viel eher als die Fähigkeiten des Schedulers, n CPU-Kerne sinnvoll anzusprechen.

Insbesondere für MySQL ist der Plattenspeicher der am stärksten begrenzende Faktor, wenn Daten geschrieben werden sollen (INSERT, UPDATE). Writes sind immer langsam, weil dafür grundsätzlich die langsamen Festplatten (Zugriffszeit ~10ms) bemüht werden müssen. Lesende Zugriffe können beschleunigt werden, indem einmal von den Platten gelesene Daten im Arbeitsspeicher abgelegt werden (Zugriffszeit im Nanosekundenbereich).

Das selbe gilt grundsätzlich für Apache. Je mehr CPU-Cores man einsetzt, desto mehr (Apache-)Prozesse und Threads können parallel ausgeführt werden. Begrenzend wirkt sich hier aus, dass jede Netzwerk-Verbindung vom Kernel verwaltet werden muss, und dass jeder Apache-Prozess die auszuliefernden Daten i. d. R. von der Festplatte holt (Bilder, HTML-Seiten, PHP-Skripte, etc.). Er konkurriert also mit MySQL um die Ressource Festplatte, und die Apache-Prozesse untereinander konkurrieren ebenfalls um diese Ressource. Auch hier ließe sich etwas Entspannung erreichen, indem Daten aus dem RAM statt von der Platte genutzt werden (mod_memcache oder gleich eine ramdisk).

Als Faustregel kann man wohl sagen, dass für ein kleines bis mittleres System 2 Cores völlig ausreichen, wobei ich für den RAM Anzahl Cores x 2 als sinnvolles Maß erachten würde. Ab 4 Cores sollte man auch über ein entsprechend schnelles SAN nachdenken, für eine Datenbank wäre RAID 10 eine günstige Konfiguration.
amiga1200
Posts: 213
Joined: 2007-01-13 19:58
 

Re: Core CPU 2 mit 3 Ghz oder 4 X 2.5 Ghz

Post by amiga1200 »

ich habe mir die Mühe gemacht, danach zu suchen



(Zwei Prozessorkerne - das bedeutet nicht notwenig auch doppelt so schnelle Anwendungen...)

http://www.linux-magazin.de/heft_abo/au ... he_beschau
User avatar
daemotron
Administrator
Administrator
Posts: 2643
Joined: 2004-01-21 17:44
 

Re: Core CPU 2 mit 3 Ghz oder 4 X 2.5 Ghz

Post by daemotron »

amiga1200 wrote:(Zwei Prozessorkerne - das bedeutet nicht notwenig auch doppelt so schnelle Anwendungen...)

http://www.linux-magazin.de/heft_abo/au ... he_beschau
Die Aussage ist vollkommen richtig, aber der Schluss, den Du daraus ziehst (lieber eine CPU mit viel GHz als zwei CPUs mit weniger GHz) ist leider falsch. Fakt ist, dass weder eine Verdoppelung der Taktfrequenz noch eine Verdoppelung der Anzahl CPU-Kerne zu einem Leistungszuwachs von 100% führt. Wie groß der Leistungszuwachs tatsächlich ist, umschreibt man mit dem Schlagwort "Skalierung". Wie gut ein System in den beiden genannten Fällen skaliert, hängt von den Umständen (eingesetztes OS, eingesetzte Anwendungen, sonstige verbaute Hardware) ab (siehe dazu mein Beitrag oben).