sâmbătă, 11 ianuarie 2014

Quick fix: sistemul "sacadează" la copierea de fişiere pe/de pe memoriile USB

O altă problemă care şi pe sistemul vechi îmi dădea de cap: sistemul se blochează intermitent la copierea masivă de date pe sau de pe un stick de memorie USB sau card-reader. Problema e cauzată de un feature în kernelul Linux în combinaţie cu calitatea proastă a memoriilor USB, prea lente pentru a face faţă transferului de date. Se rezolvă uşor executând


echo never > /sys/kernel/mm/transparent_hugepage/enabled 
echo never > /sys/kernel/mm/transparent_hugepage/defrag
ca root. Pentru ca modificările să fie definitive,
vedeţi https://wiki.archlinux.org/index.php/Maximizing_Performance#USB_storage_devices.

De asemenea, instalarea unui kernel optimizat pentru sistemele ce folosesc un mediu grafic (cum ar fi linux-pf) poate să ajute mult în acest caz (cel puţin la mine se observă îmbunătăţiri de performanţă).

Edit:
Nope, soluţia de sus s-a dovedit a nu funcţiona pentru mine. Ce s-a dovedit util în cazul meu a fost executarea, ca root:

echo 50331648 > /proc/sys/vm/dirty_bytes 
echo 16777216 > /proc/sys/vm/dirty_background_bytes

Pentru ca fixul de mai sus să se aplice la fiecare boot, creeaţi (sau editaţi) fişierul /etc/sysctl.d/99-sysctl.conf  iar în acesta adăugaţi următoarele linii:
vm.dirty_background_bytes=50331648
vm.dirty_bytes=16777216
UPDATE: dacă valorile nu se setează după reboot, de vină e laptop-mode-tools.