Bitte um Hilfe! ML350 G3 optimieren, oder erneuern ?

sunny-ko

New Member
Guten Abend!

Nach langem suchen, freue ich mich, dieses Forum über google gefunden zu haben.

Da es mein erster Post hier ist, kurz zu mir:
Bin der Dirk, komme aus Koblenz, und hab solala Kenntnisse mit OpenSUSE & PC-Hardware.

Hier mein Problem:
Die Performance ist nicht so doll (Wartezeit auf die Daten auf den Arbeitsplätzen).
Jetzt überlege ich, ob es sich lohnt/sinnvoll ist, den Server zu opimieren/erweitern, oder besser erneuern (durch z.B. Asus Boad, 3ware Controller, Q6600 CPU, 4Gb-Ram).

Ich habe einen:
HP ML-350 G3
Smart Array 642 Controller (ohne externen WriteCache)
6 Festplatten (laufen ohne HotSpare im Raid 5) je 36GB, 320SCSI, 10TSD Umdrehungen
3 Gb Arbeitsspeicher
2 Stück Xenon 3,06Ghz CPU`s
Über Cat7 Kabel an einen DLink DGS-1224T mit Gigabit Kupfer angeschlossen.
Betriebssystem OpenSUSE 11.0

Auf dem Server läuft eine Warenwirtschaft (über SSH Terminal), Cups, Samba, DocMGR, Archivierungssoftware.
Es arbeiten max. 5 User auf dem Server.

Klingt eigentlich nicht nach viel, aber die Archivierunsgssoftware arbeitet mit Tesseract (Schrifterkennung), die schon gewaltig reinhaut, ausserdem werden bei allen Ausdrucken automatisch Briefbogen hinterlegt, sprich alle Ausdrucke werden aufbereitet/neu generiert, bevor sie über Postscript ausgedruckt werden.

Danke für Tipps!
Gruß Dirk
 
Willkommen im Forum!

Die Xeons sind zwar nicht von der allerneusten Sorte (ich hatte vor ein paar Wochen ein ähnliches gebrauchtes System HP DL380 G3 zum Testen da...), sollten der Aufgabe aber eigentlich gewachsen sein. Wenn Du das Hyperthreading aktiviert hast, stehen dem Betriebssystem ja 4 Prozessor-Instanzen zur Verfügung, so dass auch noch weitere Jobs laufen können, während gerade die Texterkennung eine CPU voll auslastet (oder läuft das Programm multithreaded?!).

Die Frage ist daher, was stellt den Flaschenhals dar? Poste doch mal hier im Forum die Ausgabe von "top" (bitte in
Code:
[noparse]
[/noparse]-Tags einschließen), die zu einem Zeitpunkt aufgenommen wurde, zu dem es "zäh" läuft. Daraus sollte dann schon mal klar werden, wie es mit der RAM- und Prozessor-Auslastung bestellt ist.
 
Hallo @LinuxAdmin!

Danke für die Antwort.
Das Hyperthreading habe ich eingeschaltet.

Aber, wenn ich das richtig verstehe, hat das Board 2 Prozessor-Instanzen, und nicht 4 (es sind 2 CPU`s auf dem Board, jeweils eine Xeon 3,06 Ghz) ??

Wenn die Schrifterkennung läuft, zeigt top bis zu 99% CPU-Last an.

Die Warenwirtschaft ist eine Anwendung, die in FlagShip6 geschrieben ist.
Ist zwar aktuell, aber, soweit ich weiß, unterstützt dieses Multiprozezzor nicht wirklich.

Ausserdem kann ich auf dem Server wohl "nur" die i586 Version von openSUSE aufspielen, da dieses Board/Speicher wohl keine vollwertige 64-Bit Version ist.

Danke!
Gruß Dirk
 
Hier die Infos von top:

tesseract+convert+clamscan erreichen (zeitweise) bis zu knapp 200% CPU-Last (99+86+10) in der Prozessliste

(tesseract=Schrifterkennung, convert=in ein anderes Grafikformat wandeln, clamscan= Datei auf Viren scannen)

Jetzt läuft noch kein Drucker, noch keine Nutzer auf Samba, keine E-Mails, keine Warenwirtschaft -> Datenbankabfragen,
und so wie es aussieht, steht der Server "mit dem Rücken an der Wand".



Code:
top - 07:54:59 up 23:09,  2 users,  load average: 1.69, 0.51, 0.16
Tasks: 140 total,   5 running, 135 sleeping,   0 stopped,   0 zombie
Cpu(s): 67.2%us,  5.1%sy,  0.0%ni, 25.5%id,  2.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3115508k total,  1230748k used,  1884760k free,   133428k buffers
Swap:  2104472k total,        0k used,  2104472k free,   736080k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15554 root      20   0 16996  13m 2140 R   95  0.5   0:04.64 tesseract
15617 root      20   0 13776  11m  788 R   12  0.4   0:00.36 clamscan
15619 root      20   0 83708  75m  75m R   11  2.5   0:00.32 convert
14667 root      20   0 93440  11m 6164 S    1  0.4   0:00.28 php5
14778 root      20   0 93108  11m 6112 S    1  0.4   0:00.32 php
    1 root      20   0   772  300  256 S    0  0.0   0:01.44 init
    2 root      15  -5     0    0    0 S    0  0.0   0:00.00 kthreadd
    3 root      RT  -5     0    0    0 S    0  0.0   0:01.18 migration/0
    4 root      15  -5     0    0    0 S    0  0.0   0:03.98 ksoftirqd/0
    5 root      RT  -5     0    0    0 S    0  0.0   0:01.80 migration/1
    6 root      15  -5     0    0    0 S    0  0.0   0:04.50 ksoftirqd/1
    7 root      RT  -5     0    0    0 S    0  0.0   0:00.54 migration/2
    8 root      15  -5     0    0    0 S    0  0.0   0:02.26 ksoftirqd/2
    9 root      RT  -5     0    0    0 S    0  0.0   0:01.32 migration/3
   10 root      15  -5     0    0    0 S    0  0.0   0:02.40 ksoftirqd/3
   11 root      15  -5     0    0    0 S    0  0.0   0:00.42 events/0
   12 root      15  -5     0    0    0 S    0  0.0   0:00.86 events/1
   13 root      15  -5     0    0    0 S    0  0.0   0:01.30 events/2
   14 root      15  -5     0    0    0 S    0  0.0   0:02.30 events/3
   15 root      15  -5     0    0    0 S    0  0.0   0:00.00 khelper
   16 root      15  -5     0    0    0 S    0  0.0   0:00.00 kblockd/0
   17 root      15  -5     0    0    0 S    0  0.0   0:00.00 kblockd/1
   18 root      15  -5     0    0    0 S    0  0.0   0:00.00 kblockd/2
   19 root      15  -5     0    0    0 S    0  0.0   0:00.00 kblockd/3
   20 root      15  -5     0    0    0 S    0  0.0   0:00.00 kacpid
   21 root      15  -5     0    0    0 S    0  0.0   0:00.00 kacpi_notify
   22 root      15  -5     0    0    0 S    0  0.0   0:00.00 cqueue
   23 root      15  -5     0    0    0 S    0  0.0   0:00.00 kseriod
   24 root      15  -5     0    0    0 S    0  0.0   0:00.00 kondemand/0
   25 root      15  -5     0    0    0 S    0  0.0   0:00.00 kondemand/1
   26 root      15  -5     0    0    0 S    0  0.0   0:00.00 kondemand/2
   27 root      15  -5     0    0    0 S    0  0.0   0:00.00 kondemand/3
   28 root      20   0     0    0    0 S    0  0.0   0:00.34 pdflush
   29 root      20   0     0    0    0 S    0  0.0   0:00.00 pdflush
   30 root      15  -5     0    0    0 S    0  0.0   0:00.00 kswapd0
   31 root      15  -5     0    0    0 S    0  0.0   0:00.00 aio/0
   32 root      15  -5     0    0    0 S    0  0.0   0:00.00 aio/1
   33 root      15  -5     0    0    0 S    0  0.0   0:00.00 aio/2
 
Last edited by a moderator:
In der Xeon-Architektur stehen die meisten funktionalen Einheiten mehrfach zur Verfügung, lediglich besonders aufwändige Einheiten wie z.B. Fließkomma-Arithmetik, sind nur einfach vorhanden. Durch das "Hyperthreading" genannte Verfahren können so in den meisten Fällen -- sofern keine Datenabhängigkeiten bestehen oder Ressourcen benötigt werden, die nur einfach vorhanden sind -- zwei Befehle gleichzeitig auf einer CPU abgearbeitet werden. Das ist dann so, als ob zwei CPUs vorhanden wären. Da Du zwei mal (real) zwei (virtuelle) CPUs hast, erkennt das Betriebssystem 4 CPUs (-> cat /proc/cpuinfo zeigt Dir bei eingeschaltetem Hyperthreading 4 CPUs an).
Aus diesem Grund zeigt Dir das top-Ergebnis auch, dass das System noch lange nicht "mit dem Rücken zur Wand" steht, das wäre erst bei dauerhaft 4x100% der Fall, wenn alle CPUs ausgelastet sind. Vom RAM her ist auch noch alles weit im grünen Bereich und am langsamen I/O liegt es wohl auch nicht...

PS: ja diese Version der Xeons ist eine 32-Bit Version: http://en.wikipedia.org/wiki/List_of_Intel_Xeon_microprocessors
 
Guten Morgen, LinuxAdmin!

Danke.
Habe soeben "cat /proc/cpuinfo" aufgerufen, und es werden auch CPU 0-3 angezeigt. Also soweit alles okay.

Da die Warenwirtschaft (Terminallösung über Putty/SSH) aber dann abgrundtief in die Kniee geht (normalerweise Bruchteil einer Sekunde, bis die Daten auf den Arbeitsplätzen sind, dann aber 5-10 Sekunden!) kommt ja auch das Netzwerk nicht in Frage.

Kommt doch jetzt eigentlich als nächstes die Festplatten in Frage, das dort ein Nadelöhr entsteht.

Aber die Werte sehen doch recht gut aus, oder?

Die Platten:
6 Stück gleichen Typs
320er SCSI Schnittstelle
10.000 Umdrehungen
je 36GB

laufen im RAID5 ohne HotSpare.

Controller
Smart Array 642
64 MB readCache
kein WriteCache-Module vorhanden


Code:
 hdparm -tT /dev/cciss/c0d0p2

/dev/cciss/c0d0p2:
 Timing cached reads:   1448 MB in  2.00 seconds = 723.81 MB/sec
 Timing buffered disk reads:  224 MB in  3.01 seconds =  74.35 MB/sec

Danke!
 
Hm, also Raid/Platten würde ich schon mal als Problemquelle ausschließen.

Wie bei jedem Problem kann es nicht schaden zu schauen, ob die Software aktuell ist: tesseract-ocr - Google Code

Des weiteren könnte es m.E. gut sein, dass in diesem Fall Hyperthreading eher kontraproduktiv ist. Man müsste mal näher analysieren, ob evtl die 2x fast 100% von tesseract und convert nicht vielleicht ungünstig auf den 2 Pseudocores EINER CPU ablaufen? Sollte das der Fall sein, wäre das Ausschalten von HT evtl hilfreicher, da dann die 2 Threads definitiv auf unterschiedlichen CPUs (und somit potentiell schneller) laufen. Allerdings könnte das auch die Ressourcen für die anderen Prozesse deutlich verknappen.

Anscheinend kann man mit "schedutils & taskset" einen Prozess fest einem Core zuteilen. Das wäre evtl ja einen Versuch wert.

Des weiteren kann man die Priorität von Prozessen per "nice" regulieren (Prozesse unter Linux administrieren - Artikel von www.it-academy.cc - Verein für Informationstechnologie ). Hier könnte man für den "hängenden" Prozess eine höhere Priorität als für tesseract und convert vergeben.
 
Back
Top