2009-05-07 3 views
0

Lassen Sie es mich so umrahmen ..Jeder Multi-Core-Vorteil hier?

„Sagen, ich habe ein Anwendungsserver & dienen 200 gleichzeitige Benutzer auf einem Single-Core-Intel-Prozessor läuft. Will die Hardware zu einem Dual-Core-System bewegt mein Anwendungsserver ermöglichen dienen jetzt sage 350 gleichzeitige Benutzer "?

Die grundlegende Frage, die ich ansprechen möchte, ist - "Kann zusätzliche Prozessorkerne helfen, die I/O-Fähigkeiten des Servers zu erhöhen". Denn das ist manchmal genau das, worauf Hardware-Hersteller beim Anbieten ihrer Multicore-Server hinweisen.

Antwort

3

Sie müssen Ihren Server profilieren, seinen Engpass ermitteln und behandeln.

Wenn Sie speichergebunden sind, kaufen Sie mehr Speicher oder kaufen Sie einen Computer mit schnellerem Speicher.

Wenn Sie festplattengebunden sind und viele statische Inhalte bereitstellen, sollten Sie ein SSD-Laufwerk in Erwägung ziehen.

Wenn es Ihre Datenbank gebunden ist, beachten Sie das.

Aber normalerweise sind Sie "Konfiguration gebunden", und Ihre Konfiguration z. Wenn Sie beispielsweise die Anzahl der Threads in einem Pool ändern, erhalten Sie sofort eine Verbesserung.

Viele Webserver und Datenbanken sind genau die Software, die geschrieben wurde, um zusätzliche Kerne zu nutzen. Natürlich verlangen viele auch Lizenzgebühren pro Kern, also berücksichtigen Sie diesen Aspekt auch.

0

Das hängt natürlich davon ab, wie Ihr Anwendungsserver geschrieben wurde. Wenn die Software keine parallelen Programmiertechniken verwendet, können Sie sie nicht parallel ausführen, auch wenn die Hardware dies unterstützt.

1

Sie sehen vielleicht keinen Vorteil, aber da die CPU die I/O nicht wirklich ausführt, würde ich keinen wesentlichen Vorteil erwarten, da die Tasks hauptsächlich I/O-gebunden sind.

EDIT: Meine Antwort geht davon aus, dass Ihr Code so geschrieben ist, dass Sie tatsächlich mehrere Kerne verwenden. Wenn dies nicht der Fall ist, profitiert Ihre Anwendung nicht von zusätzlichen Kernen, aber die Maschine ist besser dafür gerüstet, andere gleichzeitige Aufgaben zu erfüllen.

0

Wenn Ihr Server single-threaded ist (mit select-based IO), und Anfrage Verarbeitung ist Side-Effect-frei (dh es könnte konzeptionell parallelisiert werden), dann wird sicherlich laufen (abgestimmt) mehrere Instanzen auf einem Multi-Core-Rechner der rechnerische Nutzen der Maschine.

Ob dies zu höherem Durchsatz führt oder nicht, hängt davon ab, ob die Anfrageverarbeitung CPU-gebunden war. Als Faustregel gilt, dass IO der größte Engpass in verteilten Systemen ist. Wenn jedoch (Anfrage-) Nachrichtenaufbau eine signifikante Berechnung erfordert, dann gibt es einen bestimmten gegebenen CPU-Overhead pro Anfrage über die IO-Kosten hinaus. Mit mehreren cpus assist würde in diesem Fall eindeutig einen Unterschied machen.

Abgesehen von den Überlegungen auf der Protokollebene ist offensichtlich, wenn die Verarbeitung jeder Anforderung erhebliche Berechnungen erfordert, ein CPU-Engpass die Serververfügbarkeit zu beeinträchtigen. Die Verwendung mehrerer CPUs wird deutlich helfen.