การทำงานของดิสก์ตรึง Debian


12

ฉันเพิ่งติดตั้งการทดสอบ Debian บนเดสก์ท็อปใหม่ของฉันและฉันไม่พอใจกับประสิทธิภาพมากนัก - เมื่อฉันใช้งานดิสก์จำนวนมากเช่นแพ็คเกจการอัปเกรดในระบบทุกอย่างดูเหมือนจะหยุดเช่นการเปลี่ยนแท็บใน Iceweasel ใช้เวลา 3 วินาที ฉันใช้ Debian บน Thinkpad X60 ultra-portable พกพาอายุ 3 ปีและฉันไม่มีปัญหาเหล่านี้ (ทุกพารามิเตอร์ของแล็ปท็อปแย่กว่าเดสก์ท็อปมาก)

ฉันใช้เคอร์เนลและสคริปต์เริ่มต้นที่แพ็กเกจแล้ว

ฉันวิ่ง

hdparm -t /dev/sda1

และฉันได้รับประมาณ 96GB / s ซึ่งคาดว่า มีอะไรอีกบ้างที่ฉันสามารถพยายามทำให้มันทำงานได้ดีขึ้น?

แก้ไข :

grzes:/home/ga# hdparm -i /dev/sda

/dev/sda:

 Model=WDC WD15EARS-00Z5B1, FwRev=80.00A80, SerialNo=WD-WMAVU1362357
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=2930277168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

 * signifies the current active mode

แก้ไข 2 : แม้ภรรยาของฉันพูดว่า "ในคอมพิวเตอร์เครื่องใหม่นี้ฉันไม่สามารถทำอะไรได้เลยเมื่อฉันคัดลอกรูปภาพจากกล้องและมันแย่กว่าเก่ามาก" ดังนั้นจะต้องจริงจัง

EDIT3 : อัปเดตเป็น 2.6.32 แต่ยังไม่มีการปรับปรุง

EDIT4 : ฉันลืมที่จะพูดถึงว่าดิสก์ใหม่เป็น ext4 เก่าคือ ext3

EDIT5 : ยังไม่แก้ไข ฉันมีบอร์ด P43 ASUS P5QL-E เส้นจาก dmesg ที่ดูเหมือนเกี่ยวข้อง:

[    0.370850] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)                              
[    0.370852] io scheduler noop registered                                                                      
[    0.370853] io scheduler anticipatory registered                                                              
[    0.370854] io scheduler deadline registered                                                                  
[    0.370876] io scheduler cfq registered (default)
...
[    0.908233] ata_piix 0000:00:1f.2: version 2.13                                                               
[    0.908243] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19                                 
[    0.908246] ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]                                                        
[    0.908275] ata_piix 0000:00:1f.2: setting latency timer to 64                                                
[    0.908316] scsi0 : ata_piix                                                                                  
[    0.908374] scsi1 : ata_piix                                                                                  
[    0.909180] ata1: SATA max UDMA/133 cmd 0xa000 ctl 0x9c00 bmdma 0x9480 irq 19                                 
[    0.909183] ata2: SATA max UDMA/133 cmd 0x9880 ctl 0x9800 bmdma 0x9488 irq 19                                 
[    0.909199] ata_piix 0000:00:1f.5: PCI INT B -> GSI 19 (level, low) -> IRQ 19                                 
[    0.909202] ata_piix 0000:00:1f.5: MAP [ P0 -- P1 -- ]                                                        
[    0.909228] ata_piix 0000:00:1f.5: setting latency timer to 64                                                
[    0.909279] scsi2 : ata_piix                                                                                  
[    0.909326] scsi3 : ata_piix                                                                                  
[    0.910021] ata3: SATA max UDMA/133 cmd 0xb000 ctl 0xac00 bmdma 0xa480 irq 19                       

1
ฉันยังมีปัญหาเดียวกัน ฉันใช้ Ubuntu 9.10 64 บิต
Abhijeet Rastogi

1
มีการอัพเดทอะไรบ้าง? ยังคงมีปัญหาหรือไม่ ถ้าเป็นเช่นนั้นคุณช่วยบอกเราได้ไหมว่าชิปเซ็ตใช้เมนบอร์ด? มีสิ่งใดที่น่าสนใจdmesgเกี่ยวกับชิปเซ็ตหรือไดรฟ์ หากคุณแก้ไขมันอย่างใดพิจารณาการโพสต์เขียนเป็นคำตอบเพื่อให้ผู้อ่านในอนาคตทราบ
ต้มตุ๋น quixote

@ ~ นักต้มตุ๋นยังไม่ได้แก้ไขโปรดดูการแก้ไข
Grzenio

คำตอบ:


4

ตรวจสอบออฟเซ็ตสำหรับพาร์ติชัน - ต้องหารด้วย 4 สำหรับ EARS เนื่องจากมีเทคโนโลยี 4096 ถ้าไม่ใช่ - แบ่งให้มันเพื่อรับการจัดตำแหน่งและปัญหาด้านประสิทธิภาพควรหายไป (ไดรฟ์ EARS ที่ไม่ตรงแนวจะทำให้เซกเตอร์เขียนได้มากขึ้นต่อ op op)


ooooooooo คุณอาจจะมีบางอย่าง เอาต์พุต dmesg ระบุว่าอาจตรวจจับไดรฟ์ว่าเป็นไดรฟ์เซกเตอร์ขนาด 512 ไบต์: "[sda] 2930277168 บล็อกเชิงตรรกะขนาด 512 ไบต์" .. มี "จัมเปอร์ XP" ในไดรฟ์ที่ตั้งโหมดความเข้ากันได้ไหม มี ... ดูจัมเปอร์ "รูปแบบขั้นสูง" ที่นี่: wdc.custhelp.com/cgi-bin/wdc.cfg/php/enduser/ .. .. ที่อาจบอกระบบปฏิบัติการว่ามีเซ็กเตอร์ขนาด 512 ไบต์ตรวจสอบให้แน่ใจว่าไม่ได้ ชุด
ต้มตุ๋น quixote

ขอบคุณสำหรับคำตอบ คุณช่วยบอกฉันทีฉันจะตรวจสอบการชดเชยได้อย่างไร ฉันสามารถย้ายพาร์ติชันได้หรือไม่หรือต้องสร้างใหม่หรือไม่?
Grzenio

มีวิธีตรวจสอบออฟเซ็ตบนพาร์ติชั่นหรือไม่? คำสั่งที่สามารถรันได้หรือไม่?
Warren P

คุณสามารถใช้ gdisk เพื่อตรวจสอบพาร์ติชันออฟเซ็ต - rodsbooks.com/gdisk
James Sumners

4

ฉันมีปัญหาค้างที่คล้ายกันเมื่อทำดิสก์ IO จำนวนมาก ในระหว่างการสำรองข้อมูลเดสก์ท็อปถูกแช่แข็งเป็นเวลาสองสามวินาทีอีกครั้งและอีกครั้งจนกระทั่งการสำรองข้อมูลเสร็จสิ้น

มันไม่เกี่ยวข้องกับการจัดตำแหน่งใด ๆ หรือการปรับแต่ง hdparm (แม้ว่าฉันจะเห็นด้วยกับมันจะช่วย)

การล็อคระบบเกิดจากตัวกำหนดตารางเวลา IO ซึ่งหน่วงเวลาบาง IOs ที่ต้องการโดยแอปพลิเคชันแบบโต้ตอบมากขึ้น (Firefox, KDE หรืออะไรก็ตาม) ผิดพลาด IO ตารางเวลาเป็นcfg

ในการแก้ปัญหาคุณต้องใช้กำหนดเวลา IO กำหนดเวลา คุณเปิดใช้งานบนดิสก์ด้วยคำสั่งต่อไปนี้ที่คุณสามารถเพิ่มใน/etc/rc.local :

echo deadline >  /sys/block/sda/queue/scheduler

ตรวจสอบการล็อคระบบของ Linux เมื่อมีการใช้งานดิสก์ I / O อย่างเข้มข้นสำหรับข้อมูลเพิ่มเติม


2

มันเป็นภาพที่ถ่ายในที่มืด แต่ฉันมีปัญหาแบบนี้มานานแล้วและสาเหตุก็คือเคอร์เนลไม่รองรับชิปเซ็ตอย่างสมบูรณ์และ DMA ถูกปิด ตรวจสอบกับ

hdparm -i /dev/sda

เปิดใช้งานโหมด DMA หรือไม่

(วิธีแก้ปัญหาในกรณีนี้คือการรับเคอร์เนลที่ใหม่กว่า)


ผลลัพธ์: - โหมด DMA: mdma0 mdma1 mdma2 โหมด UDMA: udma0 udma1 udma2 udma3 udma4 udma5 * udma6 ดังนั้นมันเป็นปัญหาอะไร ??
Abhijeet Rastogi

ฉันได้: Model=WDC, FwRev=80.00A80, SerialNo=WD-WMAVU1362357 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50 BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=16 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=2930277168 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 AdvancedPM=no WriteCache=enabled Drive conforms to: Unspecified: ATA/ATAPI-1,2,3,4,5,6,7
Grzenio

ดูเหมือนว่าไม่มีโหมด dma ที่จะมีดาว (เป็นโหมดที่เกี่ยวข้อง) มันสำคัญไหม ฉันจะกำหนดค่าได้อย่างไร
Grzenio

นอกจากนี้ฉันไม่แน่ใจว่ามันจะไม่เกี่ยวข้องเฉพาะกับอุปกรณ์ IDE เพราะฉันได้รับ: hdparm -d / dev / sda / dev / sda: HDIO_GET_DMA ล้มเหลว: ioctl ที่ไม่เหมาะสมสำหรับอุปกรณ์
Grzenio

@Grzenio: โหมด udma6 ดูเหมือนว่าจะมีดาวนั่นไม่ถูกต้องเหรอ? อาจต้องการแก้ไขข้อมูลนี้ในโพสต์ของคุณเพื่อให้คุณสามารถจัดรูปแบบได้
ต้มตุ๋น quixote

2

ฉันพบปัญหาที่การดำเนินการที่ใช้การโทร fsync (2) มากมายจะทำให้ระบบหลักช้าลง ในกรณีของฉันฉันกำลังรันด้วยพาร์ติชันรากของฉันที่มีอยู่ใน LVM ที่มีอยู่ใน LUKS คุณกำลังใช้ LVM หรือ LUKS อยู่หรือไม่?

เครื่องมือที่อาจช่วยให้ระบุเฉพาะสิ่งที่จะเคี้ยวดิสก์ของคุณ (แทนที่จะเป็นเพียงแค่ "แพคเกจติดตั้ง") iotopจะเรียกว่า ฉันขอแนะนำให้เรียกใช้ในขณะที่คุณทำหนึ่งในงานเหล่านี้และอาจชี้ให้เห็นกระบวนการพื้นหลังอื่น ๆ ที่อาจเรียกใช้ในเวลาเดียวกันและทำให้ปริมาณงาน I / O ของคุณหมด


สวัสดีขอโทษสำหรับการตอบช้า: iotop บอกว่า [jbd2 / sda3-8] ใช้ 80% -99% IO แต่การอ่านดิสก์เขียนและสลับเป็น 0.0 ในเวลาเดียวกัน ความคิดใด ๆ
Grzenio

โดยทั่วไปการตรวจสอบ fsync มากเกินไปเป็นจุดที่ดีในการตรวจสอบ อย่างไรก็ตามในกรณีนี้ซอฟต์แวร์เดียวกันนี้ทำงานได้ดีกว่ากับฮาร์ดแวร์อื่น (T60 แบบเก่า) ดังนั้นจึงดูเหมือนว่าจะมีปัญหากับชุดไดรเวอร์ฮาร์ดแวร์นี้โดยเฉพาะ ยังดีที่จะจำไว้ในใจ
sleske

2

sudo fdisk -u / dev / sda

นั่นควรให้ออฟเซ็ตเริ่มต้นของคุณ ฉันคิดว่าคุณสามารถสร้างพาร์ติชั่นโดยใช้ fdisk -o 64 หรืออะไรสักอย่าง - ฉันจะต้อง google เพื่อที่จะให้คุณทำ googling บน fdisk และตั้งค่าพาร์ติชั่นออฟเซ็ตด้วยตนเอง (ค่าเริ่มต้นคือ 63

และใช่ดิสก์จะแสดงด้วยส่วน 512b ตามที่มันอ้างว่าเป็นเช่นนั้นกับ OS - Vista / W7 จัดการสิ่งนี้โดยการตั้งค่าออฟเซ็ตที่ถูกต้อง แต่ XP และฉันคิดว่าใกล้ linus distros dont :( ด้วยตนเองเป็นวิธีเดียวที่ดูเหมือน (ของฉันเป็นเพียงไดรฟ์จัดเก็บข้อมูลและสร้างขึ้นใน win7 / ntfs ดังนั้นจึงไม่มีปัญหาสำหรับฉัน)

แก้ไข: - พบโพสต์ที่ดีที่ wdc - นี้ควรมีคุณและทำงานในเวลาไม่นาน :)

http://community.wdc.com/t5/Desktop/Problem-with-WD-Advanced-Format-drive-in-LINUX-WD15EARS/mp/10920#M631


สวัสดีฉันได้รับ: grzes: / home / ga # fdisk -u / dev / sda จำนวนกระบอกสูบสำหรับดิสก์นี้ถูกตั้งค่าเป็น 182401 ไม่มีอะไรผิดปกติ แต่มีขนาดใหญ่กว่า 1024 และสามารถตั้งค่าบางอย่างได้ ทำให้เกิดปัญหากับ: 1) ซอฟต์แวร์ที่ทำงานในเวลาบูต (เช่น LILO รุ่นเก่า) 2) การบูตและการแบ่งซอฟต์แวร์จากระบบปฏิบัติการอื่น (เช่น DOS FDISK, OS / 2 FDISK) คำสั่ง (m สำหรับความช่วยเหลือ):
Grzenio

ในที่สุดฉันก็จัดการให้เสร็จ แต่ก็ไม่ได้ช่วยจริงๆ :( ปัญหาที่แท้จริงจะต้องอยู่ที่อื่น
Grzenio

1

แค่ภาพสุ่มซึ่งดูเหมือนว่าโง่เพราะคุณใช้ Debian ... แต่ฉันพบว่ามันช่วยคนที่มี HDD รุ่นเดียวกัน: คุณลองอัปเดตไบออสแล้วหรือยัง?


ไม่ฉันไม่ได้ คุ้มค่าที่จะลองแม้ว่าอาจ
Grzenio

1

ตามกฎทั่วไปแล้วถ้าคุณสามารถใช้ hdparm บนอุปกรณ์นี่เป็นอินเทอร์เฟซ ATA "เก่า" กับอินเตอร์เฟส SATA / SCSI ที่ใหม่กว่า หากเป็นเช่นนั้นแสดงว่าปัญหาอาจเกิดจากการที่ดิสก์ไม่ทำงานระหว่างการขัดจังหวะโดยค่าเริ่มต้น นี่เป็นปัญหาที่พบบ่อยในเครื่องบางเครื่องที่ใช้อินเตอร์เฟส ATA แบบเก่าและจะลดประสิทธิภาพการทำงานของดิสก์หรือระบบในระหว่างการดำเนินการ I / O อย่างหนัก

คุณควรลองสิ่งนี้จริง ๆ :

sudo hdparm -t -T /dev/sda
sudo hdparm -a8 -c3 -u1 /dev/sda
sudo hdparm -t -T /dev/sda

หากคุณไม่เห็นการปรับปรุงประสิทธิภาพในการรันกำหนดเวลาครั้งที่ 2 (คำสั่งที่สาม) แสดงว่ามีสิ่งอื่นเกิดขึ้น

ปัจจัยอีกประการหนึ่งคือการคาดหวังว่าโหมด UDMA6 จะทำงานผ่านสายเคเบิลที่ไม่ใช่ UDMA (สมมติว่าไม่ใช่อินเตอร์เฟส SATA) หากคุณใช้สายเคเบิล ATA 80 พินคุณก็สบายดี หากคุณใช้ 40-pin ที่เก่ากว่าคุณจะได้รับความโศกเศร้าทุกประเภท หากสายเคเบิลเป็น 40 พินที่เก่ากว่าคุณจะต้องก้าวไปสู่อัตราการถ่ายโอนข้อมูลเป็นสิ่งที่สามารถรองรับ "ปลอดภัย" คำเตือน: การปรับอินเทอร์เฟซ IDE สามารถวางไดรฟ์และ / หรืออินเทอร์เฟซและถ้าไดรฟ์เป็นระบบไฟล์รูทของคุณระบบทั้งหมดจะหยุดทำงาน!

หากคุณต้องการลดอัตราการถ่ายโอนเพื่อให้ตรงกับฮาร์ดแวร์ให้ลองปฏิบัติดังนี้:

sudo hdparm -t -T /dev/sda
sudo sync; sleep 3 ; sync    
sudo hdparm -d 1 -X mdma2 /dev/sda
sudo hdparm -t -T /dev/sda

อีกครั้งเวลาที่สอง (คำสั่งที่สามที่ออก) ควรแสดงการปรับปรุง

ท้ายที่สุดตัวไดรฟ์อาจไม่ได้ใช้งาน แต่หากไม่มีการรายงานแบบสมาร์ทคุณอาจไม่สังเกตเห็นปัญหา (จนกว่าจะสายเกินไป) ฉันอยากจะแนะนำให้ติดตั้งsmartmontoolsแพคเกจเพื่อช่วยเหลือคุณโดยเฉพาะอย่างยิ่งถ้าคุณมีไดรฟ์รุ่นเก่าที่ต้องใช้ TLC เล็กน้อยในตอนนี้

sudo apt-get update && apt-get install smartmontools

หากสิ่งอื่นล้มเหลวให้ค้นหา/var/log/messagesข้อผิดพลาดของดิสก์ I / O


ปรับปรุง:

ดูเหมือนว่าคุณไม่ได้อยู่คนเดียว มีกระดานข้อความทั่ว 'รายงานสุทธิ heartache ทุกชนิดกับหน่วยเหล่านี้

นอกจากนี้ยังมีการกล่าวถึงไดรฟ์ที่ใช้ขนาดเซกเตอร์ 4k เทียบกับขนาด "ดั้งเดิม" 512 ไบต์ ฉันสามารถจินตนาการได้ว่าปัญหานี้จะต้องก่อให้เกิดปัญหาอะไร

สุดท้ายเมื่อดูที่เอาต์พุตของคุณอีกครั้งดูเหมือนว่าการทำเจอร์นัลเธรดจะผูกระบบ ระบบไฟล์ที่ไม่ถูกเจอร์นัลอาจบรรเทาปัญหาชั่วคราว แต่เป็นการป้องกันที่ดีที่สุดและไม่ได้แก้ไขปัญหาที่เลวร้ายที่สุด


สวัสดีขอบคุณสำหรับคำตอบของคุณ (1) นี่คือไดรฟ์ SATA และเชื่อมต่อโดยใช้สายเคเบิล sata แบบบางกับอินเตอร์เฟส sata บนเมนบอร์ด (2) พยายามทดสอบครั้งแรกและประสิทธิภาพของ Actaully ลดลงจาก 90.93 MB / วินาทีเป็น 52.50 MB / วินาที ดูเหมือนว่าประสิทธิภาพการอ่านแบบดิบจะไม่เป็นปัญหา (90MB คือสิ่งที่ฉันคาดหวังจากไดรฟ์นี้) ซึ่งเป็นเพียงการปฏิบัติการเล็กน้อยที่ทำให้ระบบ
ค้าง

การทดสอบครั้งที่สองไม่ได้ปรับปรุงอะไรอย่างแท้จริงเช่นกัน ในกรณีแรกและพารามิเตอร์ส่วนใหญ่ที่สองล้มเหลวในการตั้งค่า: hdparm -d 1 -X mdma2 / dev / sda / dev / sda: การตั้งค่า using_dma เป็น 1 (เปิด) HDIO_SET_DMA ล้มเหลว: ioctl ที่ไม่เหมาะสมสำหรับการตั้งค่าอุปกรณ์ xfermode 34 (โหมดมัลติ DMA 2) HDIO_DRIVE_CMD (setxfermode) ล้มเหลว: การแลกเปลี่ยน HDIO_GET_DMA ไม่ถูกต้องล้มเหลว: ioctl ที่ไม่เหมาะสมสำหรับอุปกรณ์
Grzenio

ฉันติดตั้ง smartmontools เมื่อวานนี้ แต่ไม่รู้วิธีใช้งาน คุณช่วยให้รายละเอียดเพิ่มเติมหน่อยได้ไหม?
Grzenio

อุ๊ยตาย ดังนั้นฮาร์ดไดรฟ์ใหม่จะเป็นความคิดที่ดี
Warren P

1

นี่คือการแก้ไขในที่สุด! เป็น @Rachel ชี้ให้เห็นปัญหาแน่นอนว่ามีการจัดตำแหน่งไปยังภาค 4kb แต่น่าเสียดายที่บทความที่เชื่อมโยงไม่ถูกต้อง :(

วิธีที่ถูกต้องในการจัดแนวพาร์ติชันอยู่ที่นี่: http://www.linuxconfig.org/linux-wd-ears-advanced-format

และบทความนี้ให้เกณฑ์มาตรฐานที่ดีงามเพื่อให้คุณสามารถตรวจสอบว่าตารางพาร์ติชันของคุณถูกต้องหรือไม่: http://article.gmane.org/gmane.linux.utilities.util-linux-ng/2955

ในบันทึกด้านข้างหากคุณมีไดรฟ์นี้และใช้ Linux คุณควรเพิ่มตัวจับเวลาที่ไม่ทำงานดังที่อธิบายไว้ที่นี่: http://wdc.custhelp.com/cgi-bin/wdc.cfg/php/enduser/std_adp .php? p_faqid = 5357 & p_created = 1266947046 & p_sid = Os7DQL2k & p_accessibility = 0 & p_redirect = & p_srch = 1 & p_lva = & p_sp = cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTEsNTEmcF9wcm9kcz0yMjcsMjk0JnBfY2F0cz0xMzAmcF9wdj0yLjI5NCZwX2N2PTEuMTMwJnBfcGFnZT0x & p_li = & p_topview = 1


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