• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Samba in einer Richtung extrem langsam

Status
Für weitere Antworten geschlossen.

Kurt M

Hacker
zum langsamen Samba gibt es ja schon haufenweise Beiträge. Leider haben sie alle nicht geholfen, vielleicht ist das hier anders:

Auf einem PC mit Suse 9.3 (alle Updates am neuesten Stand, keine unstables) läuft Samba, angeschlossen ein Win2000 PC.

Irgendwann fiel mir auf, dass die Datenübertragung sehr langsam wurde.
Um festzustellen ob es an Windows liegt, habe ich einen zweiten Suse (10.0) PC angeschlossen, und mit dessen Samba-Client eine Verbindung zum Suse 9.3 Samba-Server hergestellt. Die Übertragung ging genauso langsam wie unter Windows, also liegt es am Samba-Server.

Das lustige ist, dass es nur in einer Richtung so langsam ist:
Samba-Server -> Client : nur 0,4 MByte/s
Client -> Samba-Server: 12 MByte/s

mit NFS läuft die Verbindung in beiden Richtungen mit über 20 MB/s, also liegt es auch nicht an der Hardware.

Dann habe ich mit ethereal das Protokoll gecheckt. Alle Daten sind OK, jedoch sieht man am Zeitstempel, dass die Verbindung genau 1x in der Sekunde für fast 1 Sekunde aussetzt. Also 2ms lang rauschen Daten über die Leitung, dann 998ms nichts. Das sieht man auch an der LED am Router. Dieser Takt ist übrigens sehr exakt 1 Sekunde.

Für die Protokollfreaks noch eine Info:
Im Ethereal Protokoll (aufgezeichnet am Client):

der langsame Server>Client:
Code:
< SMB-Read-Request
> TCP-Segment
> TCP-Segment
> SMB-Read-Response
< TCP-ACK

mit einem anderen Suse 10 PC, wo alles perfekt schnell läuft, sieht die gleiche Datenübertragung so aus:
Code:
< SMB-Read-Request
> SMB-Read-Respone
> NBSS-Continuation
> NBSS-Continuation
< TCP-ACK

Hier ein Auszug aus der smb.conf:
Code:
[global]
        workgroup = ARBEITSGRUPPE
        printing = cups
        printcap name = cups
        printcap cache time = 750
        cups options = raw
        printer admin = @ntadmin, root, administrator
        username map = /etc/samba/smbusers
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        logon path = \\%L\profiles\.msprofile
        logon home = \\%L\%U\.9xprofile
        logon drive = P:
        add machine script = /usr/sbin/useradd  -c Machine -d /var/lib/nobody -s /bin/false %m$
        domain logons = Yes
        domain master = Yes
        local master = Yes
        netbios name = kmserver
        os level = 65
        preferred master = Yes
        security = user
... dann die üblichen Freigaben, sehen so aus wie immer...
am Schluss steht noch das, keine Ahnung was das zu bedeuten hat:
[netlogon]
        comment = Network Logon Service
        path = /var/lib/samba/netlogon
        write list = root

irgendeine Idee was das sein könnte, oder was ich noch nachprüfen sollte ?

Danke
 

Frankie777

Advanced Hacker
Es gibt zwar Beiträge zu "Samba und langsam" nur ist Samba eigentlich nie die Ursache. Samba ist mindestens genauso schnell wie Windows, wenn nicht sogar schneller.

Hast Du ein GBit Netzwerk oder wie erreichst Du diese Übertragungsraten?

Wie so oft ist auch hier Windoof das Problem. Evtl. hat MS das Produkt kastriert damit es nicht so als Virenschleuder dienen kann, zweifelhafte Programme und Tips aus zeitschriften haben das OS beschädigt oder OnAccess Virenscanner tun ihre Arbeit.

Ich habe leider den Link nicht mehr aber hier ist die Erklärung für dieses Verhalten.


--
But, strange to say, data packets are dropped accidentally on a Windows machines with a particular Network Interface Card (NIC). It can be because of NIC, NIC driver, Winsock, or Windows itself, but I have not found the reasons. Even if Receive Buffer Size is large enough, some packets will be dropped.
When a data packet is dropped, a resend request is transmitted. This resend request is performed by transmitting several Ack packets showing that reception up to how many bytes is completed .
Samba (to be strict the TCP driver of a Unix machine running Samba) will anyway resend a packet in response to such Ack packets.
As it is just one packet that Windows has dropped, when data has reached from Samba, Ack will proceed by several packets at a time. Then after a while (i.e. only 15 msec or so) Windows will drop a packet again.
After these things were repeated several times, TCP layer of Samba will anticipate as follows:
"Some packet's arraival might be delayed for some reasons. Let's wait for a while for delayed Ack packet".
Then, it will try to send nothing for about one second. Eventually,the condition does not become better, and Samba's TCP layer will decide to resend a data packet.
If Windows machine will cause this problem, data transmitting will occur for 0.1 - 0.3 seconds and then wait for 1 second, repeatingly. Moreover, this value of one second will actually become bigger each time of waiting. Consequently, the effective transfer speed become 1/20 of the real speed that should be obtained.
 
OP
Kurt M

Kurt M

Hacker
ja, es ist ein Gigabit Netzwerk.

Deine Beschreibung klingt sehr nach dem Fehler, diese 1 Sekunden Delays.

Nur ist es bei mir nicht Windows. Ich habe es auch mit 2 Linux PCs getestet, wobei einer als Samba-Client arbeitet (als Ersatz für den Windows PC), was zum gleichen Fehler führt.
 

Frankie777

Advanced Hacker
interessant!
Dann die Treiber der Netzwerkkarten prüfen/aktualisieren.
PS: Was für Karten hast Du denn?
Testweise eine andere Karte/Treiber testen

ansonsten man smb.conf
siehe socket options
 

knarf0007

Newbie
Hallo Zusammen,

ich habe genau das gleiche Problem. Mit dem kleinen Unterschied, dass ich erschrekenderweise mit Windows (XP) in beiden Richtungen gute Transferraten (17-20 MB/s) erziele. Auf dem selben Rechner (also exakt gleiche Hardware, NC D-LINK 530T) befindet sich mein Hauptarbeitsplatz (SUSE 10.0) und hier zeigt sich das oben beschriebene Verhalten:

Samba Client Linux -> Samba Server: gute Performance
Samba Server -> Samaba Client: miserable Performance max. 1MB/s
(per NFS ist die Performance in beiden Richtugen gut!)

Mein SAMBA-Server läuft unter SUSE 10.0

Hier die global section meiner smb.conf:

[global]
workgroup = WORKGROUP
server string = Knarf Server
security = share
guest account = nobody
browseable = yes
guest ok = yes
public = yes
writeable = yes
read only = No
# socket options = TCP_NODELAY
# read prediction = yes
# read raw = yes
# write raw = yes
# getwd cache = yes
# fake oplocks = no
# oplocks = yes

Habe alle "ausgesternten Optionen" in verschiedensten Permutationen durchprobiert - leider ohne Erfolg. Für sachdienliche Hinweise aller Art währe ich extrem dankbar!

Gruß
knarf0007
 
Sucht mal im Kernel-Log nach "transmit time out" oder "timed out". Hatte auch mal ne VIA Rhine II die das aus heiterem Himmel machte.
 

knarf0007

Newbie
Danke für den Hinweis, leider konnte ich keine entsprechenden Meldungen finden. Die D-LINK 530T benutzt das Modul sk98lin. Meine erste Vermutung war auch, dass der Treiber noch nicht ausgereift bzw. fehlerhaft ist. Allerdings funktioniert der Zugriff per NFS in beiden Richtungen gleichermaßen gut. Irgendwie passt das alles noch nicht zusammen. Die Karte wird mit folgenden Einstellungen gestartet:
eth0: network connection up using port A
speed: 1000
autonegotiation: yes
duplex mode: full
flowctrl: symmetric
role: slave
irq moderation: disabled
scatter-gather: enabled
tx-checksum: enabled
rx-checksum: enabled

Ist das so o.k.?

Gruß
knarf0007
 
OP
Kurt M

Kurt M

Hacker
@knarf0007:

interessant dass es mit XP geht, das musste ich sofort auch ausprobieren, da es mit Win2000 bei mir nicht geht.

Und sieht da, mit WinXP ist die Übertragung tatsächlich normal schnell. Nur mit einem Win2000 oder einen Linux-Samba Client ist es langsam.

Mit einer Einschränkung: unter XP ist die Datenübertragung zwar schnell, aber das Öffnen von Verzeichnissen am Server ebenfalls quälend langsam.

Da bei mir W2000 und W-XP und Linux alles am gleichen PC läuft (vmware) und daher auch die gleiche Hardware und identische Treiber benutzen, bleibt als Fehler nur mehr die Samba-Serversoftware bzw deren Konfiguration übrig.
Ohne zu wissen was man tun soll, ist es aber ziemlich aussichtslos die richtige Einstellung zu finden, das wäre als würde man einen 6er im Lotto gewinnen.

Ich habe auch schon einen Downgrade des Sambaservers auf die DVD-Version gemacht (weil es früher ja funktionierte), was aber leider nichts gebracht hat.
 
A

Anonymous

Gast
Kurt M schrieb:
bleibt als Fehler nur mehr die Samba-Serversoftware bzw deren Konfiguration übrig.

Wenn du mal genau hinschaust siehst du, das du dir selbst widersprichst.

Kurt M schrieb:
Ich habe auch schon einen Downgrade des Sambaservers auf die DVD-Version gemacht (weil es früher ja funktionierte), was aber leider nichts gebracht hat.
 
OP
Kurt M

Kurt M

Hacker
jetzt hab ich noch ein paar Stunden hineingesteckt, man hat ja sonst nichts zu tun :wink:

Server: Suse 9.3 oder 10.0 (ist egal) funktioniert beides

Client:
Suse 9.3 ... läuft mit guten 12 MB/s
Suse 10.0 ... läuft mit nur 0,5 bis 1,0 MB/s

um das ganze noch genauer zu untersuchen, habe ich auf einer freien Partition eine jungfräuliche Installation, sowohl von 9.3 als auch von 10.0 gemacht.

Ergebnis: mit 9.3 klappt es immer, mit 10.0 klappt es nie.

Ich muss also meine vorherige Vermutung widerrufen, es ist tatsächlich der Client, und hier nur eine Suse 10.0 Installation, bei der Samba extrem langsam läuft.

Da knarf0007 das gleiche Problem hat, liegt jetzt die Vermutung nahe, dass der Suse 10.0 Samba-Client ein Problem hat.
Auch wenn es unüblich ist, dass man zwei Linux PCs über Samba verbindet, wäre es doch interessant ob das noch jemand mit Suse 10.0 ausprobieren könnte.
 

knarf0007

Newbie
@KURT M
Danke, da hast Du Dir ja echt Mühe gemacht des Rätsels Lösung zu finden.

Super, ich bin erst vor kurzem von SUSE 9.3 auf 10.0 migriert, bei gleichzeitiger Umrüstung der Hadware auf GB-Ethernet. Der alte Grundsatz "Never change a running System" scheint sich wieder einmal zu bestätigen. :? Sollte man den Samba Entwicklern evt. irgendeinen Hinweis geben? Vielleicht ist das Problem mit einem kleinen Patch zu beheben. Ich werde erst mal etwas abwarten und dann im Zweifelsfall einen Downgrade vornehmen.
Davon abgesehen finde ich die Lösung unter Linux auf ein Samba-Server zuzugreifen in einer heterogenen Client-Landschaft schon sinnvoll.

Gruß
knarf0007
 

matibaer

Newbie
Bei mir ist es schon länger her, dass ich von SuSE Linux 9.1 auf SuSE Linux 10 umgestiegen bin (Neuinstallation).

Erst danach kaufte ich mir ein Gigabit-Switch (Marvel Gigabit NIC OnBoard).

Von WinXP->WinXP-PC lief es recht zügig (44 MB/s Schnittstelle->Schnittstelle, 20 MB/s von HD PC1 -> HD PC2).

So setzte ich einen SAMBA-Mountpoint auf eine Windows-Freigabe und kopierte Dateien in mein Homedrive auf dem Linux-PC.

Das maximal Mögliche bei sämtlicher Optimierung lag bei ca. 7 MB/s.


Ich kaufte mir extra Cat6-Kabel und eine Intel Pro1000 für die Linuxkiste.

Die Kat6-Kabel hätte ich mir als erstes schenken können.
Bei den modernen SOHO-Switches ist es drietens-egal, ob ich Cat5, Cat5e oder Cat6-Kabel (verm. auch Cat7) verwende, das macht überhaupt nichts, zumindest nicht im realtistischen Geschwindigkeitsbereich.

Mit der Pro1000 erreichte ich in reiner Windows-Umgebung ungefähr die gleichen Werte, vielleicht 1 MB/s mehr.

Unter Linux (Samba-Client) erreicht ich nun bis zu 12 MB/s.
Das ist ja 100 MBit/s-Netzwerke ganz gut, aber hat mit 1000 MBit/s nichts zu tun.

Am Ende glaubte ich, es sei das Interrupt-Management von Linux, aber es hat sich gerade etwas anderes bestätigt.


Ich installierte einen FTP-Server auf der WinXP-Kiste und transferierte unter Linux via FTP ein paar Dateien auf den XP-PC und von den XP-PC zum Linux-PC.
In beide Richtungen erreichte ich 29 MB/s.

Also ist´s nun klar, es liegt am Samba-Client, bzw. an Samba unter SuSE Linux 10.0

Tolle Wurst - seit Monaten muss es schon so sein und keiner hat eine Lösung
Wie wär´s mit einem Patch ?

Naja, bei SuSE läuft sowieso nicht mehr viel (Positives für Endkunden), seit Novell seine Hände drauf hat.
Was da bei 10.0 alles aus rechtlichen (bezahlpflichtigen) Gründen fehlte...


Eventuell hat ja irgendeiner mal eine brauchbare Lösung ?!
 

strikegun

Newbie
hi ich habe ein vielleicht so ähliches problem.
Mit suse10 ist die transfer rate fürn arsch.

Eine große Datei (sagen wir mal 700MB) über Samba mit gigbitlan beträgt die rate ca 1,5~6 MBs. Breche ab.
nun komsich ist das wenn ich die selbe datei mal mit FTP ziehe liegt es bei 16MB/s. Breche wieder ab
dann ziehe ich mir die Datei wieder über Samba und da hab ich bis zur stelle wo ich mit FTP zog 40MB/s und dann bricht es wieder ein und zieht wieder mit ~5MB/s dannam ende legt er wieder zu und geht wieder rauf auf 34 MB/s

Das ganze konnte ich z.b 2x reproduzieren und das mit 2 unterscheidlichen Dateien.

FS ist ReiserFS
 

Yehudi

Guru
Ich kann zwar kein Lösung bieten, aber bei mir ist der Transfer in Ordnung, solange es um ene interne Festplatte geht in Ordnung, nur bei der USB 2 Festplatte happert es manchmal, da dauert das raufkopieren meistens lange, das liegt aber nicht an Samba, sondern wohl an der Einbindung der Platte, unter SuSE 9.x geht das wunderbar.
Wenn ich die internen Platten mit NFS vergleiche, dann geht es zwar ein bisschen fixer bei NFS, aber es ist OK.
Allerdings nutze ich OS X als Client.
 

Dr. Glastonbury

Advanced Hacker
Ich hab auch keine Lösung, dafür ein noch interessanteres Problem - ebenfalls mit der Geschwindigkeit.

Gleich vorweg ich will hier keine Hilfe dafür - so dringend ist es nicht mehr - aber vielleicht können das hier die anderen auch mal Probieren.

Also ich hatte auf nem XP-PC n haufen kleine und große Dateien (so an die 2000 stück mit etwa 4MB bis hin zu 1GB) und die jeweils in viele Ordner untergliedert.

Immer wenn ich den Überordner (in dem die ganzen Unterordner mit den Dateien lagen) kopieren wollte wurden lediglich die Ordner angelegt, dann ein bisschen rübergeladen und dann mit einem Fehler abgeschlossen. Die Übertragungsrate war dabei EXTREM langsam - unter 1MB/s bei einem 100MBit/s Netzwerk.

Dann hab ich mal zwei Unterordner GLEICHZEITIG kopiert und plötzlich ging die Geschwinidigkeit auf 4MB/s pro Kopierfenster hoch. In dem Moment wo einer der beiden Kopiervorgänge abgeschlossen war wurde der zweite wieder langsam und brach schließlich mit ner Fehlermeldung ab ( die angegebene Ressource konnte nicht gefunden werden ). Ich denke eigentlich nicht, dass es an Windows lag, denn schließlich hatte ich ja zuvor die Dateien mit Linux erst auf den Win-Rechner geladen.

Ähnliche Geschwindigkeiten erhielt ich auch beim Lesen und Schreiben auf ein Windows98 beim Backupmachen.... kA was da also los ist :?
 

strikegun

Newbie
Mir ist immer aufgefallen das mein kopieren von linux -> windows auch total lahm ist aber jetzt mal zum test in die andere richtung.
Geht ab mit 20MB/s

Also hier mein System:
Suse 10
Samba 3.0.21c
3com 3c2000 NIC (3c941 chip)
reiserfs fs
Asus A7n8x-x Mainboard
 

Yehudi

Guru
Ich gebe noch mal den Link von strikegun hinzu:
http://www.linux-club.de/viewtopic.php?t=56142
in dem er sein Problem beschreibt. Bitte hier dann weiterposten, den anderen Thread schließe ich.

Mir fällt gerade mal so in den Anfragen Samba zu langsam auf, dass es sich meistens um Gigabyte-Netzwerkkarten handelt.

Edit:

Das Problem scheint wohl wirklich öffters aufzutreten:
http://lists.suse.com/archive/suse-linux/2004-Oct/2218.html
 

Frankie777

Advanced Hacker
Es scheint insbesondere ein Problem bei Suse 10 und GBit Netzwerkkarten/Treiber (bestimmter Type?) zu sein.

Man wird hier nur weiterkommen wenn einer der Betroffenen sich mal mit Ethereal anschaut was da so passiert.
Oder eine Netzwerkkarte eines anderen Herstellers probiert.
 

Yehudi

Guru
@Frankie: Ja, klar das mit SuSE 10.0 ist mir zwar auch aufgefallen, hatte ich aber nicht weiter erwähnt, weil sich die Netzwerkkarte geradezu ins Auge stach.

Es gibt wohl aktive und passive, aber hier wäre es sehr gut, wenn alle Beteiligten mal ihre Netzwerkkarte posten.
 

strikegun

Newbie
Meine Karten waren:
3com 3C2000T
Dlink DGE-530T
(Beide nutzen die Treiber "sk98lin")

Morgen teste ich eine NIC mit dem rtl8169s Chip.
 
Status
Für weitere Antworten geschlossen.
Oben