GNU/Linux >> Znalost Linux >  >> Linux

Proč PC zamrzne, když kopíruji soubor na Pendrive?

Mám tu opravdu zvláštní situaci. Můj počítač funguje dobře, alespoň ve většině případů, ale je tu jedna věc, se kterou si nevím rady. Když se pokusím zkopírovat soubor z mého pendrive, vše je v pořádku — mám 16-19M/s, funguje to docela dobře. Ale když se pokusím něco zkopírovat na stejný pendrive, můj počítač zamrzne. Ukazatel myši se na sekundu nebo dvě zastaví, pak se trochu pohne a znovu se zastaví. Když něco hraje, třeba v Amaroku, tak zvuk působí jako kulomet. Rychlost vyskočí z 500K/s na 15M/s, průměrně 8M/s. K tomu dochází pouze tehdy, když něco kopíruji na pendrive. Po dokončení procesu kopírování se vše vrátí do normálu.

Zkoušel jsem všechno – jiný flash disk, jiný USB port na předním panelu nebo ty porty zezadu, dokonce jsem vyměnil USB piny na základní desce (přední panel), ale ať dám USB klíč kamkoli, vždy je to stejné. Zkoušel jsem jiný souborový systém — fat32 , ext4 . Nemám problém se zařízením na Windows, na mém notebooku. Musí to být můj počítač nebo něco v mém systému. Nevím, co hledat. Používám testování Debianu se samostatným Openboxem. Můj PC je tak trochu starý — Pentium D 3GHz, 1GiB RAM, 1,5TB WD Green disk. Pokud máte něco, co by mi pomohlo tento problém vyřešit, rád si to poslechnu.

Nevím, jaké další informace bych měl poskytnout, ale pokud něco potřebujete, zeptejte se, tento příspěvek co nejdříve aktualizuji.

Pokusil jsem se reprodukovat tento problém na živém CD ubuntu 13.04. Připojil jsem svůj šifrovaný oddíl + šifrovaný swap a připojil svůj pendrive k portu usb. Dále jsem zkusil spustit nějaké aplikace a teď mám ~820MiB v RAM a asi 400MiB ve SWAPu. Není problém s kopírováním, vůbec žádné zamrzání, vše je tak, jak má být. Takže to vypadá, že je to chyba systému, ale kde přesně? Co by způsobilo takové podivné chování?

Přijatá odpověď:

Používáte 64bitovou verzi Linuxu s velkým množstvím paměti? V takovém případě může být problém v tom, že Linux dokáže na několik minut zablokovat velké zápisy na pomalých zařízeních, jako jsou například
SD karty nebo USB klíčenky. Je to známá chyba, která by měla být opravena v novějších jádrech.

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

Řešení:jako kořenový problém:

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

Přidal jsem to do svého /etc/rc.local soubor na mých 64bitových počítačích.

Související:Php:chown — Změní vlastníka souboru

TANSTAAFL; tato změna může (a pravděpodobně sníží) vaši propustnost na tato zařízení – je to kompromis mezi latencí a rychlostí. Chcete-li se vrátit k předchozímu chování, můžete

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

…což jsou výchozí hodnoty, což znamená, že chování zpětného zápisu bude řízeno parametry dirty_ratio a dirty_background_ratio .

Poznámka pro méně experty na linux:soubory v /proc jsou pseudosoubory – pouze komunikační kanály mezi jádrem a uživatelským prostorem. Nikdy nepoužívejte editor k jejich změně nebo prohlížení; získejte místo toho výzvu shellu — například pomocí sudo -i (příchuti Ubuntu) nebo su root a použijte echo a cat ).

Aktualizace 2016/04/18 zdá se, že problém tu přeci jen je. Můžete se na to podívat na LWN.net v tomto článku o frontách zpětného zápisu.


Linux
  1. Proč Ls a Hexdump nesouhlasí s velikostí souboru?

  2. on-the-fly výstup přesměrování, vidět výstup přesměrování souboru, zatímco program stále běží

  3. Proč xargs -L poskytuje správný formát, zatímco xargs -n ne?

  1. Kde je hlavičkový soubor <conio.h> v systému Linux? Proč nemohu najít <conio.h>?

  2. Proč se funkce zavření nazývá release v `struct file_operations` v jádře Linuxu?

  3. Kopírování souboru pouze v případě, že je novější než cíl

  1. Proč „sshpass“ není správný způsob automatizace přenosů souborů v Linuxu

  2. Proč skript Bash nerozpozná aliasy?

  3. The Bash ‘?