2013-10-23 7 views
7

Ich führe ein Skript aus, das große Dateien lädt. Ich habe das gleiche Skript in einem einzigen OpenSuSe-Server und Quad-Core-PC ausgeführt. Wie in meinem PC erwartet, ist es viel schneller als auf dem Server. Aber das Skript verlangsamt den Server und macht es unmöglich, etwas anderes zu tun.Warum ist die System-CPU-Zeit (% sy) hoch?

Mein Skript ist

for 100 iterations 
Load saved data (about 10 mb) 

Zeit myscript (PC)

real 0m52.564s 
user 0m51.768s 
sys 0m0.524s 

Zeit myscript (in Server)

real 32m32.810s 
user 4m37.677s 
sys 12m51.524s 

Ich frage mich, warum "sys" ist so hoch, wenn Ich führe den Code im Server aus. Ich habe den Befehl top verwendet, um die Speicher- und CPU-Auslastung zu überprüfen. enter image description here Es scheint, dass es noch freien Speicher gibt, also ist das Austauschen nicht der Grund. % sy ist so hoch, es ist wahrscheinlich der Grund für die Geschwindigkeit des Servers, aber ich weiß nicht, was% sy so hoch verursacht. Der Prozess, der den höchsten Prozentsatz der CPU (99%) verwendet, ist "myscript". % wa ist im Screenshot Null, aber manchmal wird es sehr hoch (50%).

Wenn das Skript ausgeführt wird, durchschnittliche Belastung ist größer als 1, aber noch nie als 2.

ich meine Scheibe auch so hoch gesehen geprüft:

strt:~ # hdparm -tT /dev/sda 

/dev/sda: 
Timing cached reads: 16480 MB in 2.00 seconds = 8247.94 MB/sec 
Timing buffered disk reads: 20 MB in 3.44 seconds = 5.81 MB/sec 

[email protected]:~> df -h 
Filesystem  Size Used Avail Use% Mounted on 
/dev/sda2  245G 102G 131G 44%/
udev   4.0G 152K 4.0G 1% /dev 
tmpfs   4.0G 76K 4.0G 1% /dev/shm 

ich diese Dinge überprüft haben, aber Ich bin mir immer noch nicht sicher, was das eigentliche Problem in meinem Server ist und wie es zu beheben ist. Kann jemand einen wahrscheinlichen Grund für die Langsamkeit identifizieren? Was könnte die Lösung sein? Oder sollte ich noch etwas überprüfen?

Danke!

+0

Was "Problem"? Wenn Sie das System bitten, viel zu arbeiten, wird es ziemlich beschäftigt sein, bis es fertig ist. Bei einem typischen Skript wird fast die gesamte "Arbeit" in untergeordneten Prozessen (oder Kernraumaufgaben in ihrem Namen, wie E/A) stattfinden, nicht im Shell-Prozess, der das Skript interpretiert. –

+0

Wenn das Skript ausgeführt wird, erhalten andere Benutzer auf dem Server eine langsame Antwort. Ich möchte das Skript schneller ausführen und andere Benutzer nicht stören. Wenn das Hinzufügen einiger Ressourcen eine Lösung ist, könnte ich das tun. Aber ich weiß nicht, was helfen könnte. – Abhishek

+0

Wenn Sie fragen, welche Art von System zu kaufen/Upgrades für eine bessere Leistung zu machen, das ist wahrscheinlich eine Superuser Frage.Wenn Sie versuchen wollen, die Aufgabe selbst effizienter zu machen (die zusammengeschusterten Lösungen können viel Raum für Verbesserungen haben), müssen Sie viel genauer darüber sein, was es tut und wie - tatsächlicher Code oder zumindest eine enge funktionale Beschreibung. –

Antwort

1

Sie erzielen eine hohe sys-Aktivität, da die Belastung der Daten, die Sie gerade ausführen, Systemaufrufe im Kernel erfordert. Es ist möglich, Probleme mit der Langsamkeit zu beheben, ohne den Server zu aktualisieren. Sie können die Planungspriorität ändern. Siehe die man-Seiten für nett und renice. Siehe here und speziell:

Die Werte für die Güte liegen zwischen -20 (höchste Priorität, niedrigste Schlichtheit) und 19 (niedrigste Priorität, höchste Schlichtheit).

$ ps -lp 941 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 941 1 0 70 -10 - 1713 poll_s? 00.00.00 sshd

$ nett -n 19 ./test.sh Mein Nettigkeit Wert ist 19

$ renice -n 10 -p 941 941 (Prozess-ID) alt Priorität -10, neu Priorität 10

Verwandte Themen