PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Performanceproblem bei PII Homeserver



DrGonzo
18.11.06, 08:52
Moin!

Ich habe hier einen alten Compaq Deskpro (Pentium II, 233 MHz, korrigiere:64 MB RAM) rumstehen, auf dem Debian Sarge mit einem selbstgebastelten 2.6.18.1er Kernel als Homeserver läuft. Das Problem ist, dass das Verschieben größerer Datenmengen von einem der Clients auf den Server bedeutet, dass sich zum Beispiel ifconfig aufhängt, wenn man es ausführt.
Ifconfig wird zum Beispiel hin und wieder von einem Script ausgeführt um die WLAN-Verbindung zur anderen Seite des Servers, also zum Internet hin, wiederherzustellen, da die des öfteren draufgeht, wenn der Router, an dem der Server als Client hängt auf Grund der vielen Anfragen seinen dienst Verweigert.
Diesseits des Servers hängt dieser per LAN an einer Fritzbox, an der wiederum die Clients per WLAN hängen.

Wie lässt sich die Performance, was die Datentransfers vom Client auf den Server angeht verbessern?
Gibt es Kerneloptionen, die einem flüssigen Datenverschieben im Weg stehen weil sie bei größeren Datenmengen viel Overhead produzieren?
Liegt es vielleicht am WLAN diesseits des Servers?

bla!zilla
18.11.06, 11:42
Was für eine Netzwerkkarte hast du in dem Rechner verbaut. Es gibt NICs welche die Netzwerkkarte stark beanspruchen und Karten die schonend mit der CPU umgehen. Gerade Karten mit Realtek-Chipsatz gehen mit der CPU hart ins Gericht. Poste bitte mal die Ausgabe des Befehls cat /proc/loadavg, wenn du gerade Daten auf den Server schiebst. Nutzt du NFS oder Samba?

DrGonzo
18.11.06, 11:53
Die Netzwerkkarte ist onboard:

0000:00:10.0 Ethernet controller: Compaq Computer Corporation Netelligent 10/100 TX Embedded UTP (rev 10)

cat /proc/loadavg gibt folgendes aus:

4.97 3.01 2.35 1/106 8450
Wobei die ersten drei Werte größer zu werden scheinen, je länger der Upload dauert. Was genau sagen denn die einzelnen Werte?

Die Dateien werden hauptsächlich per Samba auf den Server geschoben.

bla!zilla
18.11.06, 12:35
cat /proc/loadavg gibt folgendes aus:

4.97 3.01 2.35 1/106 8450
Wobei die ersten drei Werte größer zu werden scheinen, je länger der Upload dauert. Was genau sagen denn die einzelnen Werte?

Die Dateien werden hauptsächlich per Samba auf den Server geschoben.

Das ist die Last gemittelt auf die letzte Minute, die letzten 5 und 15 Minuten. man 3 getloadavg sagt mir das auch. ;) Die Zahlen repräsentieren die Zahl der Prozesse in der Runqueue. Das sind Prozesse die Laufen, abe auch Prozesse die auf I/O warten. Ein Load von 1 sagt mir das deine Kiste genug zu tun hat. Ein Load von 4 sagt mir das deine Kiste mehr als genug zu tun hat. :) Möglichweise ist DMA für deine Platte nicht aktiviert oder viele Prozesse warten auf Platten I/O. Möglicherweise auch Tätigkeiten im Bereich Paging / Swap. Da wird man mit vmstat mal genauer nachsehen müssen.

DrGonzo
18.11.06, 13:30
Ich habe grad mal eine ca. 1GB umfassende Testdatei generiert und zum Server geschickt, gegen Ende hat cat /proc/loadavg folgendes ausgegeben:
7.11 6.56 4.73 3/106 12965Das ganze nochmal unter Beobachtung mit vmstat 3




vorher:

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
4 0 0 38424 1108 8516 0 0 0 0 133 34 1 1 98 0
0 0 0 38388 1124 8516 0 0 0 26 182 39 0 0 100 0
0 0 0 38376 1140 8516 0 0 0 15 157 36 0 0 100 0
0 0 0 38376 1140 8516 0 0 0 10 146 31 0 0 100 0
0 0 0 38376 1140 8516 0 0 0 4 137 32 0 0 100 0
0 0 0 38376 1140 8516 0 0 0 0 127 29 0 0 100 0
0 0 0 38376 1140 8516 0 0 0 27 185 33 0 1 99 0

beobachtungen: buff wird beständig größer

zu begin:

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 38124 1420 8520 0 0 0 24 177 36 0 0 99 0
0 0 0 38124 1420 8520 0 0 0 0 129 33 0 0 100 0
0 0 0 38124 1424 8520 0 0 0 1 130 33 0 0 100 0
0 0 0 38124 1424 8520 0 0 0 0 126 29 0 0 100 0
0 0 0 38124 1424 8520 0 0 0 4 136 33 0 0 100 0
1 0 0 35048 1428 11516 0 0 1 7 1256 1322 7 12 81 1
7 0 0 30968 1444 15400 0 0 0 2312 6317 1711 5 66 29 0
1 0 0 26880 1460 19464 0 0 0 488 2601 1766 9 39 51 0
0 0 0 23364 1484 22960 0 0 0 2084 5705 1550 7 65 28 0
0 1 0 18220 1500 28148 0 0 0 723 3163 2220 9 41 49 2
0 0 0 17012 1528 29428 0 0 0 1493 3930 548 3 83 14 0
1 0 0 11776 1528 34580 0 0 0 0 2041 2237 13 17 68 2
0 1 0 8812 1536 37292 0 0 0 2627 6459 1189 5 72 24 0
0 0 0 4172 1552 42220 0 0 0 116 2186 2143 12 27 61 0
4 0 0 1980 1580 44460 0 0 0 2369 5792 990 2 80 17 0
0 1 0 1788 768 45124 0 0 10 441 2543 1796 12 36 29 23
1 0 0 2044 796 44904 0 0 0 2104 5653 1481 6 65 15 14
0 1 0 1988 784 44952 0 0 0 0 2042 2262 12 16 43 28
1 0 0 1880 768 45104 0 0 0 2406 5691 841 3 76 14 7
0 0 0 1872 756 45088 0 0 0 0 2017 2218 10 15 48 26
1 1 0 2228 768 44736 0 0 0 2449 5940 983 2 78 10 9

gegen Ende:
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 1 0 1792 500 45336 0 0 0 1691 4787 1444 3 68 17 12
0 1 0 2120 504 45088 0 0 0 49 2105 2208 12 19 43 27
2 1 0 1584 532 45612 0 0 0 1987 4380 330 1 90 8 2
0 1 0 1704 524 45532 0 0 0 511 2626 1748 10 39 30 21
2 1 0 1880 520 45320 0 0 0 1955 5371 1473 6 70 16 9
0 0 0 1844 592 45252 0 0 37 41 2094 2129 11 23 38 29
0 0 0 1864 624 45292 0 0 0 2136 4904 562 2 86 8 4
0 0 0 2024 592 45112 0 0 0 103 2150 2150 11 23 40 26
0 1 0 2164 600 44988 0 0 0 2636 6701 1410 3 72 16 8
Ist es normal, dass in dem Fall nichts ausgelagert wird, auch wenn der Speicher randvoll ist? Würde es etwas ändern, wenn doch ausgelagert werden würde? Enthält die Ausgabe von vmstat sonst noch irgendwas markanntes?

bla!zilla
18.11.06, 16:49
Viel interessanter sind zwei andere Spalten, nämlich sy und wa. sy gibt an wieviel Zeit das System in diesen Prozess investiert, wa gibt an wie lange ein Prozess auf einen I/O (eine Plattenoperation z.B.) wartet. Was man bei dir erkennt: Als die Kiste angefangen hat die Daten zu empfangen und auf die Platte zu schreiben (Spalte bo). Interessant ist das die wa Werte steigen, sobald die Werte für us und sy. Möglicherweise ein Anzeichen dafür das eine Operation im Userspace abläuft und auf irgendwas wartet. Die Maschine ist auf jeden Fall nicht am swappen.

Hier die interessanten Zeilen:



procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 1 0 1792 500 45336 0 0 0 1691 4787 1444 3 68 17 12
0 1 0 2120 504 45088 0 0 0 49 2105 2208 12 19 43 27
2 1 0 1584 532 45612 0 0 0 1987 4380 330 1 90 8 2
0 1 0 1704 524 45532 0 0 0 511 2626 1748 10 39 30 21
2 1 0 1880 520 45320 0 0 0 1955 5371 1473 6 70 16 9
0 0 0 1844 592 45252 0 0 37 41 2094 2129 11 23 38 29
0 0 0 1864 624 45292 0 0 0 2136 4904 562 2 86 8 4
0 0 0 2024 592 45112 0 0 0 103 2150 2150 11 23 40 26
0 1 0 2164 600 44988 0 0 0 2636 6701 1410 3 72 16 8

DrGonzo
19.11.06, 13:09
Wenn ich große Dateien vom Server herunterlade, treten die Probleme übrigens nicht auf. Ich habe mal auf dem Server per
dd bs=1024 count=1048576 if=/dev/urandom of=/home/icke eine Datei generiert um zu gucken ob es da probleme gibt. Auch da blieb wa durchweg bei 0. Lässt sich daraus schließen, dass das Problem eher Seitens der Netzwerkkarte besteht? Wenn man eben durch die Bandbreite des WLAN versucht zu große Datenmengen durch die Karte zu quetschen? Die Festplatte ist relativ neu und ziemlich schnell...

bla!zilla
19.11.06, 13:47
Ja, ich würde in diese Richtung weiterforschen.

DrGonzo
20.11.06, 18:07
Ich habe mal testweise das Bus Mastering im BIOS deaktiviert. Jetzt funktioniert alles reibungslos und booten geht auch sehr viel schneller! Ist Bus Mastering nicht eigentlich dazu gedacht, den Kernel zu entlasten? Oder habe ich da was falsch verstanden?

bla!zilla
20.11.06, 18:16
Wenn eine Karte dabei ist die damit nicht richtig klar kommt, dann kann es zu Problemen kommen.

jonah
20.11.06, 21:41
Was für eine Netzwerkkarte hast du in dem Rechner verbaut. Es gibt NICs welche die Netzwerkkarte stark beanspruchen und Karten die schonend mit der CPU umgehen. Gerade Karten mit Realtek-Chipsatz gehen mit der CPU hart ins Gericht. Poste bitte mal die Ausgabe des Befehls cat /proc/loadavg, wenn du gerade Daten auf den Server schiebst. Nutzt du NFS oder Samba?

Hi bla!zilla!

ich klink mich mal frech hier ein und frage mal, ob du weisst, welcher Chipsatz auf Netzwerkkarten die CPU nicht so belastet. Hast du da einen Tip?

cu

RichieX
21.11.06, 09:46
Ich wurde zwar nicht gefragt, aber empfehlen kann ich dir die 3COM Serverkarten (Fast und Giga) und die echten! Intel-Karten.

RichieX

DrGonzo
21.11.06, 15:29
Wenn der Server also jetzt auch sehr viel schneller bootet, lässt sich daraus schließen, dass Der Konflikt zwischen Bus Mastering und Festplatte herrschte?

bla!zilla
21.11.06, 17:53
Hi, ich kann RichieX nur beistimmen. Alternativ Karten mit DEC Chipsätzen. Die waren auch gut.

jonah
22.11.06, 07:20
Hi, ich kann RichieX nur beistimmen. Alternativ Karten mit DEC Chipsätzen. Die waren auch gut.

Danke! ;)

Wo bekomme ich eine solche Karte? Kann auch gebraucht sein. Bei hood.de finde ich nix und bei Ebay bin ich nicht angemeldet.

Hat jemand noch eine von diesen Karten und möchte sie veräußern?

Gruss

DrGonzo
23.11.06, 22:02
Hier mal eine aktuelle Bilanz. Riesige Dateien auf den Server Schieben funktioniert jetzt einwandfrei. Allerdings ist jetzt die Festplatte voll.
Wenn mein Mitbewohner emule anschmeißt, geht das auch eigentlich ganz gut, außer, dass der Access Point, über den der Server per WLAN mit dem Internet verbunden ist, hin und wieder (ca. alle viertel stunde) entweder den Server rausschmeißt weil er überlastet ist, oder die WLAN-Karte aufgiebt. So genau hab ich das noch nicht herausfinden können. Um dem entgegenzuwirken habe ich ein Script geschrieben, welches per ping prüft ob die Verbindung noch steht und wenn dies nicht der Fall ist den Treiber der WLAN-Karte neu läd. Des weiteren habe ich dem Server eine statische ip zugewiesen, damit er den AP nicht immer auf ein neues um eine ip anbetteln muss. Das dauert auf Grund der schlechten Verbindung meist ewig. Wenn nun emule läuft bleibt nach ein paar Stunden ifconfig bei dem Versuch die WLAN Karte nach abgerissener Verbindung neu zu konfigurieren hängen und lässt sich auch nicht killen. Wenn ich direkt am Server versuche den Monitor anzuschmeißen, reagiert der nicht und ich komme nur noch per ssh auf den Server. Manchmal sogar überhaupt nicht mehr.

Wenn ich wärend emule läuft vmstat laufen lasse, kann ich nicht wirklich was auffälliges entdecken. Damit kenn ich mich ja jetzt aus... ;)

Wenn emule nicht läuft steht alles Stabil wie ne eins, das Internet erscheint ohne Verzögerung auf unseren Bildschirmen und das Script arbeitet wie es soll...

bla!zilla
25.11.06, 21:58
Halt einfach mal nach Intel NICs ausschau. Schau mal hier:


http://www.intel.com/network/connectivity/products/server_adapters.htm?iid=connect_nav1+svradap
http://www.intel.com/network/connectivity/products/desktop_adapters.htm?iid=ncdcnav2+conn_deskadap

jonah
25.11.06, 23:54
Hi!

Ich danke dir. Habe mich jetzt für eine gebrauchte Intel Pro-Karte entschieden, die dann hoffentlich nicht so cpu-lastig wie eine mit Realtek-Chip ist.

;)

bla!zilla
26.11.06, 16:04
Noch besser sind nur noch Serverkarten mit TOE (TCP/IP Offload-Engine). Aber das sind Karten die meist für 64Bit PCI ausgelegt, und recht teuer sind.