Warum friert mein PC ein, während ich eine Datei auf ein Pendrive kopiere?

61

Ich habe hier eine wirklich seltsame Situation. Mein PC funktioniert zumindest in den meisten Fällen einwandfrei, aber eines kann ich nicht bewältigen. Wenn ich versuche, eine Datei von meinem pendrive zu kopieren, ist alles in Ordnung - ich habe 16-19M / s, es funktioniert ziemlich gut. Aber wenn ich versuche, etwas auf dasselbe Laufwerk zu kopieren, friert mein PC ein. Der Mauszeiger bleibt ein oder zwei Sekunden stehen, bewegt sich dann ein wenig und bleibt dann wieder stehen. Wenn zum Beispiel in Amarok etwas gespielt wird, verhält sich der Sound wie ein Maschinengewehr. Die Geschwindigkeit springt von 500K / s auf 15M / s, durchschnittlich 8M / s. Dies tritt nur auf, wenn ich etwas auf ein Pendrive kopiere. Wenn der Kopiervorgang abgeschlossen ist, kehrt alles zum Normalzustand zurück.

Ich habe alles versucht - andere USB-Sticks, einen anderen USB-Anschluss auf der Vorderseite oder diese Anschlüsse von hinten. Ich habe sogar die USB-Pins auf der Hauptplatine (Vorderseite) geändert, aber egal, wo ich meinen USB-Stick stecke, es ist immer dasselbe. Ich habe versucht , verschiedene Dateisystem - fat32, ext4. Ich habe kein Problem mit dem Gerät unter Windows auf meinem Laptop. Es muss mein PC oder etwas in meinem System sein. Ich habe keine Ahnung, wonach ich suchen soll. Ich benutze Debian-Tests mit eigenständiger Openbox. Mein PC ist ein bisschen alt - Pentium D 3GHz, 1 GB RAM, 1,5 TB WD Green Disk. Wenn Sie etwas haben, das mir bei der Lösung dieses Problems helfen könnte, würde ich mich freuen, das zu hören.

Ich weiß nicht, welche weiteren Informationen ich bereitstellen soll, aber wenn Sie etwas benötigen, fragen Sie einfach, ich werde diesen Beitrag so schnell wie möglich aktualisieren.

Ich habe versucht, dieses Problem auf Ubuntu 13.04 Live-CD zu reproduzieren. Ich habe meine verschlüsselte Partition + den verschlüsselten Swap gemountet und mein pendrive an einen USB-Port angeschlossen. Als nächstes habe ich versucht, einige Apps zu starten, und jetzt habe ich ~ 820 MB RAM und ca. 400 MB SWAP. Es gibt kein Problem mit dem Kopieren, überhaupt kein Einfrieren, alles ist so, wie es sein sollte. Es sieht also so aus, als wäre es ein Systemfehler, aber wo genau? Was würde so ein komisches Verhalten verursachen?

Mikhail Morfikov
quelle
Als ich auf etwas Ähnliches stieß, hatte ich Probleme mit der Festplatte meines Laptops. Die Festplatte hatte einige fehlerhafte Bereiche, und jedes Mal, wenn ich versuchte, etwas aus diesen Bereichen zu lesen, fror sie ein, bis sie fertig war. Nur eine Idee, die man sich ansehen sollte. Vielleicht haben Sie schlechte Sektoren, aus denen Sie zu lesen versuchen.
Slybloty
Meine Festplatte ist in Ordnung, zumindest klug gesagt (nach dem vollständigen Scan).
Mikhail Morfikov
Versuchen Sie, die E / A-Priorität des Kopiervorgangs zu verringern, z ionice -c3 cp something.tgz /media/pendrive. Dadurch wird der neu erzeugte cpProzess in die dritte (= niedrigste) Prioritätsklasse "Leerlauf" gesetzt.
3.
Ich habe es versucht, aber es hat keine Wirkung.
Mikhail Morfikov
@MikhailMorfikov Zu Ihrer Information, dieses Problem wurde unter Linux 4.9 behoben. Ich habe das Update noch nicht selbst getestet. YMMV.
Seamus Connor

Antworten:

85

Verwenden Sie eine 64-Bit-Version von Linux mit viel Speicher? In diesem Fall könnte das Problem sein, dass Linux auf langsamen Geräten wie zum Beispiel SD-Karten oder USB-Sticks für Minuten große Schreibvorgänge sperren kann. Es ist ein bekannter Fehler, der in neueren Kerneln behoben werden sollte.

Siehe http://lwn.net/Articles/572911/

Problemumgehung: als Grundproblem:

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

Ich habe es meiner /etc/rc.localDatei auf meinen 64-Bit-Rechnern hinzugefügt .

TANSTAAFL ; Diese Änderung kann (und wird wahrscheinlich) Ihren Durchsatz auf diesen Geräten verringern - ein Kompromiss zwischen Latenz und Geschwindigkeit. Um zum vorherigen Verhalten zurückzukehren, können Sie

echo 0 > /proc/sys/vm/dirty_background_bytes
echo 0 > /proc/sys/vm/dirty_bytes

... das sind die Standardwerte, dh das Rückschreibverhalten wird durch die Parameter dirty_ratiound gesteuert dirty_background_ratio.

Hinweis für die weniger erfahrenen Linux- /proc Benutzer : Die darin enthaltenen Dateien sind Pseudodateien - nur Kommunikationskanäle zwischen dem Kernel und dem Benutzerbereich. Verwenden Sie niemals einen Editor, um sie zu ändern oder anzusehen. Holen Sie sich stattdessen eine Shell-Eingabeaufforderung --- zum Beispiel mit sudo -i(Ubuntu-Aromen) oder su rootund verwenden Sie echound cat).

Update 18.04.2016 es scheint, dass das Problem immer noch da ist. Sie können es sich auf LWN.net ansehen , in diesem Artikel über Writeback-Warteschlangen .

Rmano
quelle
3
Ich habe 64bit aber nur 1GiB RAM, und ich muss Ihnen sagen, dass diese Lösung funktioniert! Ich habe es gerade getestet und nach dem Einstellen der beiden Parameter gibt es kein Einfrieren mehr. :)
Mikhail Morfikov
1
In meiner 14.04 Installation uname -akehrt 3.13.0-32-genericdas ja zurück. Ich habe aber nicht geprüft, ob der Patch für das Problem endlich in den Kernel integriert wurde oder nicht. Ich besitze eine 16-GB-Maschine und es scheint ohne die Problemumgehung in Ordnung zu sein, obwohl ich sagen muss, dass ich es nicht mit besonders langsamen Geräten versucht habe.
Rmano
1
@ IonicăBizău --- das ist eine Pseudodatei, bearbeite sie vim nie mit . Holen Sie sich eine Root-Shell (mit sudo -i) und verwenden Sie die oben genannten Befehle.
Rmano
1
@ Rmano Es hat funktioniert! Ich habe es jedoch mit VIM bearbeitet. Vielen Dank!
Ionică Bizău
2
Ich verwende Ubuntu 16.04 auf einem brandneuen Laptop (mit 16 GB RAM). Ich war wirklich sauer auf dieses Problem. Ihre Lösung hat wie ein Zauber gewirkt! Vielleicht könnten Sie hinzufügen, dass dies noch mit Kernel 4.8.0-45 benötigt werden könnte.
LGenzelis
3

Der Grund kann die Schreibverstärkung sein, da das System versucht, in kleinere Blöcke zu schreiben, als Block löschen (Lesen / Modifizieren / Schreiben) + Blockfehlausrichtung.

Um Ihre aktuelle Einstellung zu überprüfen, gehen Sie wie folgt vor:

cat /sys/block/sd**X**/device/max_sectors

Sie können die Hallenregeln für diese Geräte anpassen:

Ändern Sie den Wert von USB "max_sectors" für eine ganze Familie von Geräten

In diesem Fall hatte ich max_sectors für alle Geräte ersetzt, die standardmäßig 240 (USB-Speicher) für 32K-Sektoren oder 2K-Sektoren verwendeten.

Auf meinem System (Mageia 4, 3.14.24 Core i7) musste ich dies aufgrund der extrem langsamen Schreibgeschwindigkeit (2 MB / Sek.) Auf dem Kingston DT101 G2 16GB tun:

vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules

und füge hinzu:

SUBSYSTEMS=="scsi", ATTR{max_sectors}=="240", ATTR{max_sectors}="32678"

Und die ddSchreibgeschwindigkeit stieg um das Dreifache. mc cpwahrscheinlich 10-20x höher (nachdem ich die erste Partition im 8192. Sektor gestartet und mit 64k ausgerichteten Clustern neu formatiert hatte):

fdisk -u /dev/sdh # make DOS compat off if on
mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592*** and use *fsck.vfat -v /dev/sdh1

zur Überprüfung der Ausrichtung (überprüfen Sie, ob [Datenstartsektor] ein Vielfaches von 128 (Clustergröße) sein sollte). Passen Sie bei Bedarf die Anzahl der reservierten Sektoren (-R) an.

Die Standardeinstellung max_sectors (240) scheint auf einigen der billigen neuen Laufwerke eine hohe Schreibverstärkung zu verursachen. Aber seien Sie sehr vorsichtig mit solch einer hohen Einstellung, der ähnliche Effekt wird bei 2048 Sektoren erzielt (wahrscheinlich 1 Million Löschblöcke:

SUBSYSTEMS=="scsi", ATTR{max_sectors}=="240", ATTR{max_sectors}="2048"

Testen Sie alle Ihre alten USB-Geräte, dass sie immer noch gut funktionieren. Verwenden Sie Hersteller- / Modellattribute in den Regeldateien, um genauere Angaben zu erhalten.

Kennzeichen
quelle
1

Hardware vs. Software

Ich habe ein ähnliches seltsames Problem mit USB-Sticks, und bei meinen Nachforschungen handelt es sich fast immer entweder um ein Treiberproblem oder um die spezifische Hardware innerhalb des PCs / Motherboards.

Ich weiß das, weil ich mehrere Systeme habe, die identische Hardware haben, und auf einem kann ich diese Operation ohne Probleme ausführen, während auf einem anderen das Problem auftaucht.

Was ist zu tun?

Ihre Möglichkeiten sind hier wirklich begrenzt. Sie können nur sicherstellen, dass auf Ihrem System das neueste BIOS / die neueste Firmware installiert ist und dass Sie über die neuesten Versionen der disto-Pakete verfügen.

Darüber hinaus kann ich nur vorschlagen, dass Sie diese Situation vermeiden, indem Sie nicht versuchen, Dateien zu kopieren, während eine andere Kopie ausgeführt wird.

Wenn Sie die Art von Persönlichkeit haben, bei der Sie solche Dinge ärgern, können Sie eine andere Live-Distribution von Linux ausprobieren und die Schritte wiederholen, die zu Ihrem Problem führen. Dies würde nur beseitigen, ob es sich um ein distro-spezifisches Problem oder ein Hardware-Problem handelt, wie ich es oben beschrieben habe. Es wäre ein kleiner Trost, aber ich mag es immer, Dinge zu wissen, anstatt meinen Kopf in den Sand zu stecken, und nicht.

Noch etwas?

Wenn Sie wirklich besessen sind, können Sie versuchen, die Anwendung straceauszuführen , mit der Sie die Kopie durchführen, in der Hoffnung, dass das System bei jedem Systemaufruf zum Stillstand kommt. Dies sollte auch über die Befehlszeile möglich sein.

Beispiel

$ strace -o cp1.log cp -r /path/to/dir1 /path/to/usb/. 

Dann, während das läuft, starten Sie einen anderen.

$ strace -o cp2.log cp -r /path/to/dir2 /path/to/usb/. 

Das System wird hoffentlich während dieses Vorgangs einfrieren. Vielleicht haben Sie Glück und finden Rauch in einer dieser Protokolldateien.

slm
quelle
Ich verwende immer die einzige Instanz des Dateikopierens. Ich habe das BIOS aktualisiert (2008) und seitdem gibt es keine neuere Version. Ich denke, es ist nicht das BIOS. Meine Debian-Distribution wird auch auf den Testzweig aktualisiert. Ich habe versucht es zu benutzen straceund es hat fast augenblicklich gefroren, also habe ich ein paar Sekunden gewartet und den Prozess abgebrochen. Ich habe ein 1-MB-Protokoll, kann es jedoch nicht lesen und weiß nicht, wonach ich suchen soll. Sie können es hier überprüfen pastebin.com/u29RvqgC - es ist nicht das vollständige Protokoll (auf 500 KB beschränkt), aber es gab nur ähnliche Zeilen wie am Ende. Ich werde versuchen, dieses Problem mit Ubuntu Live-CD zu reproduzieren.
Mikhail Morfikov
Ich habe die Frage zum Testen von Live-CDs aktualisiert.
Mikhail Morfikov
@MikhailMorfikov - Ich denke, Sie sind ziemlich am Ende dessen, was Sie erwarten können. Ihre Hardware ist ziemlich alt (2008) und es gibt wirklich nicht viel anderes, was Sie tun können, als ich oben skizziert habe.
slm
Aber auch ältere PCs können problemlos Dateien kopieren.
Mikhail Morfikov
@MikhailMorfikov - Alter ist nicht der einzige Faktor, aber die Wahrscheinlichkeit, dass Aktualisierungen der Firmware oder der Software für alte Hardware vorgenommen werden, ist gering.
slm