เหตุใดเดสก์ท็อปของฉันจึงล็อคเมื่อฉันคัดลอกไฟล์จำนวนมากไปยังไดรฟ์ USB


11

เดสก์ท็อปของฉันมักตอบสนองได้ดีแม้จะมีภาระมาก แต่เมื่อฉันคัดลอกไฟล์ไปยังไดรฟ์ USB มันจะล็อคไว้เสมอหลังจากผ่านไประยะหนึ่ง โดย "ล็อค" ฉันหมายถึง:

  • การย้ายโฟกัสจากหน้าต่างหนึ่งไปอีกหน้าต่างหนึ่งอาจใช้เวลา 10-20 วินาที
  • การสลับเดสก์ท็อปอาจใช้เวลา 10-20 วินาที
  • วิดีโอไม่อัปเดตอีกต่อไป (ใน YouTube เสียงยังคงเล่นต่อเฉพาะวิดีโอค้าง)

โหลดระบบไม่สูงเป็นพิเศษเมื่อเกิดเหตุการณ์เช่นนี้ บางครั้งฉันเห็นขาวจำนวนมากบน xosview ซึ่งระบุว่าเคอร์เนลไม่ว่างอยู่ที่ไหนซักแห่ง

เมื่อมองแวบแรกดูเหมือนว่าการคัดลอกไฟล์ไปยังไดรฟ์ USB จะรบกวนการทำงานของ compiz แต่ฉันไม่สามารถจินตนาการได้ว่าการเชื่อมต่อจะเป็นอย่างไร

นี่คือผลลัพธ์ของhtop:

เอาต์พุตของ htop ไม่นานหลังจากที่หยุดทำงาน

นี่คือผลลัพธ์ของiostat -c -z -t -x -d 1ในช่วง 2 นาทีที่แขวน:

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

อย่างที่คุณเห็นเฉพาะฮาร์ดดิสก์ภายนอกเท่านั้นที่ทำงาน นี่คือบันทึกที่สมบูรณ์: http://pastebin.com/YNWTAkh4

การแขวนเริ่มเมื่อเวลา 20:38:01 น. และสิ้นสุดเวลา 20:40:19

ข้อมูลซอฟต์แวร์:

  • openSUSE 12.1
  • KDE 4.7.x
  • ระบบไฟล์: reiserfs และ btrfs บน harddisk ภายในของฉัน btrfs บนไดรฟ์ USB

1
คุณได้ลองติดตั้งไดรฟ์ USB syncเพื่อดูว่ามีผลกระทบ (ถ้ามี) นี้หรือไม่
Alexios

2
ข้อเสียของ USB คือความจริงที่ว่ามันอาศัย CPU สำหรับ IO อย่างมาก ระบบของคุณใช้ซีพียูประเภทใด? โปรดเพิ่มผลลัพธ์ของgrep name /proc/cpuinfoคำถามของคุณต่อท้าย
jippie

1
คุณลากและวางไฟล์โดยใช้ปลาโลมาหรือไม่? หากเป็นเช่นนั้นให้ลองcpจากบรรทัดคำสั่งเพื่อแยกข้อบกพร่องของดอลฟินที่อาจเกิดขึ้น
Jari Laamanen

@JariLaamanen: ฉันใช้rsyncจากบรรทัดคำสั่ง
Aaron Digulla

1
@ jippie: ไม่ใช่เพราะ UI ล็อคเมื่อมันเกิดขึ้นดังนั้นฉันไม่สามารถสร้างภาพหน้าจอ ฉันจะพยายามสร้างบันทึกด้วยiostat -c -z -d 1
Aaron Digulla

คำตอบ:


4

การเดาครั้งแรกของฉันคือbtrfsเนื่องจากกระบวนการ I / O ของระบบไฟล์นี้บางครั้งใช้เวลามากกว่า แต่มันจะไม่อธิบายว่าทำไม X ล็อคขึ้น

เมื่อดูที่การขัดจังหวะฉันเห็นสิ่งนี้:

# 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

เอ่อ ไดรเวอร์ USB ใช้ IRQ เดียวกันกับกราฟิกการ์ดและเป็นครั้งแรกในห่วงโซ่ ถ้าล็อคไว้ (เพราะระบบไฟล์ทำอะไรบางอย่างแพง) การ์ดกราฟิกจะหยุด (และเครือข่ายด้วย)


2

ฉันเคยเห็นปัญหาที่คล้ายกันกับเคอร์เนล linux-3.1 ของopenSUSE 12.1 และพบว่าการปิดใช้งานหน้าเว็บขนาดใหญ่ที่โปร่งใสช่วยได้:

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

ปัญหาพื้นฐานคือถ้าแอพพลิเคชั่นจัดสรร 4MB ขึ้นไปเคอร์เนลจะพยายามให้มันเป็นหน้าใหญ่ซึ่งมันต้องการแรม 4MB ต่อเนื่องกันทั้งหมด ตอนนี้ถ้ามีหน้าสกปรกหลายหน้าที่ยังคงต้องถูกเขียนไปยังอุปกรณ์ USB ที่ช้าก็จะรอให้ IO นั้นเสร็จสิ้นก่อนที่จะดำเนินการจัดสรรหน่วยความจำต่อไป


1

ดังที่ได้กล่าวมานี้อาจเกี่ยวกับการตั้งค่าเคอร์เนล hugepages ฉันรู้ว่าหลายคนมีปัญหานี้ คุณสามารถค้นหาเอกสารหลายอย่างเกี่ยวกับมันในเว็บเช่น

ฉันได้แก้ไขปัญหาทั้งหมดในการตั้งค่าของฉันแล้วโดยทำสิ่งต่อไปนี้ สังเกต YMMV อาจจำเป็นต้องแก้ไขไม่ใช่ด้านล่างทั้งหมดและอาจจะไม่เพียงพอ ฉันอาจลืมสิ่งที่จะซื่อสัตย์ อย่างไรก็ตามนั่นคือการตั้งค่าของฉันและใช้งานได้

  • ใช้เคอร์เนล linux-ck
  • echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
  • echo never > /sys/kernel/mm/transparent_hugepage/defrag

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.