Bir USB sürücüsüne çok fazla dosya kopyaladığımda masaüstüm neden kilitleniyor?


11

Masaüstüm, ağır yük altında bile genellikle çok duyarlı. Ancak dosyaları bir USB sürücüsüne kopyaladığımda, bir süre sonra daima kilitleniyor. "Kilitle" demekle:

  • Odağı bir pencereden diğerine taşımak 10-20s sürebilir
  • Masaüstünü değiştirmek 10-20s sürebilir
  • Videolar artık güncellenmiyor (YouTube'da ses oynatılmaya devam ediyor, yalnızca video donuyor)

Bu olduğunda sistem yükü olağanüstü yüksek değildir. Bazen xosview üzerinde çekirdeğin bir yerlerde meşgul olduğunu gösteren çok beyaz görüyorum.

İlk bakışta, USB sürücüsüne dosya kopyalamak bir şekilde compiz'i engelleyecek gibi görünüyor, ancak bağlantının ne olabileceğini hayal edemiyorum.

İşte çıktı htop:

Asmadan kısa bir süre sonra htop çıkışı

İşte iostat -c -z -t -x -d 12 dakikalık bir asılma sırasındaki çıktı :

19.07.2012 20:38:22
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1,27    0,00    0,38   37,52    0,00   60,84

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdg               0,00     2,00    0,00  216,00     0,00 109248,00  1011,56   247,75  677,69    0,00  677,69   4,63 100,00

Gördüğünüz gibi, yalnızca harici sabit disk etkin. İşte tam günlük: http://pastebin.com/YNWTAkh4

Asmak 20:38:01 'de başladı ve 20:40:19' da sona erdi.

Yazılım bilgileri:

  • openSUSE 12.1
  • KDE 4.7.x
  • Dosya sistemleri: dahili sabit diskimdeki reiserfs ve btrfs, USB sürücüsünde btrfs

1
Bunun sync(eğer varsa) bunun nasıl bir etkisi olduğunu görmek için USB sürücüsünü monte etmeyi denediniz mi?
Alexios

2
USB'nin bir dezavantajı, IO için CPU'ya büyük ölçüde güvenmesidir. Sisteminizde ne tür bir CPU var? grep name /proc/cpuinfoSorunuzun çıktısını lütfen ekleyin .
jippie

1
Dosyaları yunus kullanarak sürükleyip bırakıyor musunuz? Öyleyse, cpolası yunus hatalarını hariç tutmak için komut satırından deneyin .
Jari Laamanen

@JariLaamanen: rsyncKomut satırından kullanıyorum.
Aaron Digulla

1
@jippie: Aslında UI gerçekleştiğinde kilitlendiği için değil, bu yüzden ekran görüntüsü yapamıyorum. iostat -c -z -d 1
İle

Yanıtlar:


4

İlk tahminim, btrfsbu dosya sisteminin I / O işlemlerinin bazen devralmasıydı. Ama X'in neden kilitlendiğini açıklamıyor.

Kesmelere baktığımda şunu görüyorum:

# cat /proc/interrupts 
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       
  0:        179          0          0          0          0          0          0          0  IR-IO-APIC-edge      timer
  1:          6          0          0          0          0          0          0          0  IR-IO-APIC-edge      i8042
  8:          1          0          0          0          0          0          0          0  IR-IO-APIC-edge      rtc0
  9:          0          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   acpi
 12:         10          0          0          0          0          0          0          0  IR-IO-APIC-edge      i8042
 16:    3306384          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   ehci_hcd:usb1, nvidia, mei, eth1

Şey, duh. USB sürücüsü, grafik kartıyla aynı IRQ'yu kullanır ve ilk olarak zincirde bulunur. Kilitlenirse (dosya sistemi pahalı bir şey yaptığı için) grafik kartı açlıktan ölür (ve ağ da).


2

OpenSUSE 12.1'in linux-3.1 çekirdeğinde benzer sorunlar gördüm ve şeffaf büyük sayfaları devre dışı bırakmanın yardımcı olduğunu buldum:

echo never > /sys/kernel/mm/transparent_hugepage/enabled

Temel sorun, bir uygulama 4MB veya daha fazla ayırırsa, çekirdeğin büyük bir sayfa vermeye çalışacağı ve bunun için de tamamen bitişik bir 4MB RAM gerekir. Şimdi, hala yavaş bir USB aygıtına yazılması gereken çok sayıda kirli sayfa varsa, bellek ayırma işlemine devam etmeden önce IO'nun bitmesini bekler.


1

Belirtildiği gibi, bu muhtemelen çekirdek devasa sayfalar kurulumu ile ilgilidir. Bu sorunu yaşayan birkaç insan tanıyorum. Bununla ilgili çeşitli belgeleri web'de bulabilirsiniz, örn.

Aşağıdakileri yaparak kurulumumdaki sorunu tamamen çözdüm. YMMV'ye dikkat edin, aşağıdaki düzeltmelerin tümü gerekli olmayabilir ve belki de yeterli olmazlar. Dürüst olmak gerekirse bir şey unutmuş olabilirim. Her neyse, bu benim kurulumum ve işe yarıyor.

  • Linux-ck çekirdeği kullan
  • echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
  • echo never > /sys/kernel/mm/transparent_hugepage/defrag

-2

Kabloyu değiştirin. USB bağlantı noktasından / kablolardan oksit çıkarın.


Biraz daha ayrıntılı olması gerekiyor. Lütfen SSS
Karlson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.