ฉันสามารถจำลองฮาร์ดไดรฟ์ช้าได้หรือไม่?


19

ฉันมีลางสังหรณ์ว่าข้อผิดพลาดบางอย่างเป็นระยะ ๆอาจปรากฏตัวเองเฉพาะเมื่อมีอัตราการอ่านดิสก์ช้า การแก้ไขปัญหาเป็นเรื่องยากเพราะฉันไม่สามารถทำซ้ำได้อย่างน่าเชื่อถือ

ขาดเพียงการกลืน IO กับกระบวนการที่มีลำดับความสำคัญสูงมีวิธีใดบ้างที่ฉันจะจำลองให้มีฮาร์ดไดรฟ์ช้า?


ฉันจำได้ว่าเห็นคำสั่งให้บอก harddrives ให้ทำงานด้วยความเร็วบัสที่แน่นอน ฉันจะดูว่าฉันสามารถขุดมันออกมาได้ไหม
Jeremy

man hdparmลองดูที่ตัวเลือก -X อาจจะใช่ไหม? มีบางอย่างในนั้นที่คุณสามารถใช้ชะลอไดรฟ์ของคุณ แต่บางคนก็เสี่ยงต่อการทำสิ่งที่น่ารังเกียจกับข้อมูล!
Jeremy

นอกจากนี้ให้ลองติดตั้งเครือข่ายแชร์เป็นโฟลเดอร์ (google เป็นเพื่อนของคุณ) หรืออาจใช้ wifi ก็ได้หากเป็นไปได้
Jeremy

1
นี่ไม่ใช่คำตอบโดยตรง แต่ถ้าฉันมีข้อผิดพลาดเป็นระยะ ๆ เช่นนี้ฉันอาจลองใช้กระบวนการภายใต้ Valgrind (ถ้าเป็นภาษาที่คอมไพล์) เพราะนั่นน่าจะจับเงื่อนไขการแข่งขัน IO
poolie

1
คุณกำลังพูดถึงข้อบกพร่องในแอปพลิเคชันหรือเคอร์เนลหรือไดรเวอร์อุปกรณ์หรือไม่? หรือคุณไม่รู้อะไรเลย? มันอาจช่วยได้ถ้าคุณอธิบายเพิ่มเติม
poolie

คำตอบ:


15

ใช้NBD , อุปกรณ์เครือข่ายที่ถูกบล็อกแล้ว จำกัด trickleการเข้าถึงอัตราต่อโดยใช้การพูด

sudo apt-get install nbd-client nbd-server trickle

+1 สำหรับทางออกที่ยอดเยี่ยม อย่างไรก็ตามมันไม่ใช่การทดสอบจริงเพราะคุณไม่ได้ไปที่ไดรเวอร์อุปกรณ์ฮาร์ดดิสก์จริงซึ่งปัญหาอาจอยู่ที่ใด
Unix Janitor

1
ฉันไม่คิดว่าเขากำลังพูดถึงข้อผิดพลาดของไดรเวอร์ แต่นั่นเป็นเพียงข้อสันนิษฐาน มาดูกัน.
Poolie

10
เป็นไปได้หรือไม่ที่จะเพิ่มคำสั่งจริงลงในคำตอบนี้? ในขณะนี้คุณจะแสดงวิธีการติดตั้งเครื่องมือที่จำเป็นเท่านั้น :)
Rich

5
# echo 1> / proc / sys / vm / drop_caches

นั่นจะทำให้คุณช้าลง :)

มันจะบังคับให้คุณอ่านจากดิสก์แทนที่จะใช้ประโยชน์จากหน้าแคช

หากคุณต้องการที่จะได้รับความซับซ้อนคุณสามารถทำอะไรผิดพลาดอ่านปลอมทุกครั้งที่ใช้โครงร่างการฉีดข้อผิดพลาด scsi

http://scsifaultinjtst.sourceforge.net/


1
หมายเหตุ: นี่จะลดแคชหนึ่งครั้ง จากนั้นจะเริ่มการแคชอีกครั้งทันที คุณอาจต้องการห่อสิ่งนั้นด้วยการวนซ้ำ
Androbin

@Androbin ฉันชอบความคิดนั้น คุณสามารถเพิ่มช่วงเวลาสลีปไปที่ลูป ขอบคุณ!
ppetraki

4

มีฮับ USB 1.1 หรือไม่ หรือการ์ด SD ช้า พวกเขาจะทำให้คุณต่ำกว่า 10mbps


ดี ... ไม่ค่อยมีเทคนิคพอสำหรับ +1 แต่ดี
RobotHumans

3

นี่ไม่ใช่วิธีการแก้ปัญหาที่สมบูรณ์ แต่อาจช่วยในการเชื่อมโยงกับมาตรการอื่น ๆ : มีตัวกำหนดตารางเวลา I / O คล้ายกับตัวกำหนดตารางกระบวนการและสามารถปรับแต่งได้

ที่สำคัญที่สุดคือคุณสามารถเลือกระหว่างตัวกำหนดเวลาที่แตกต่างกัน:

~# cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq] 
~# echo "deadline" > /sys/block/sda/queue/scheduler
~# cat /sys/block/sda/queue/scheduler 
noop anticipatory [deadline] cfq 
~# 

deadline อาจช่วยให้คุณได้รับผลลัพธ์ที่ทำซ้ำได้มากขึ้น

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

anticipatoryและcfqทั้งคู่พยายามที่จะฉลาดเกี่ยวกับเรื่องนี้แม้ว่าcfqโดยทั่วไปแล้วจะฉลาดกว่าทั้งสอง (ตามที่ฉันจำได้anticipatoryจริงๆแล้วมันเป็นตัวกำหนดตารางเวลาดั้งเดิมจากขวาก่อนที่เคอร์เนลจะเริ่มสนับสนุนตัวจัดตารางเวลาหลายตัว)


3

คุณสามารถใช้เครื่องเสมือนและการเข้าถึงดิสก์คันเร่ง ... นี่คือเคล็ดลับเกี่ยวกับวิธีการใช้งานใน Virtualbox 5.8 การ จำกัด แบนด์วิดท์สำหรับดิสก์อิมเมจhttps://www.virtualbox.org/manual/ch05.html#storage-bandwidth-limit


2

คุณสามารถลองใช้สำเนาไฟล์ขนาดใหญ่เช่น iso ของ Ubuntu ติดตั้ง cd แล้วรันสองครั้ง ซึ่งควรทำให้ไดรฟ์ของคุณช้าลงเล็กน้อย


ตามที่คำถามบอกว่า "สั้น ๆ แล้วก็กลืน ๆ IO" ....
พุดดิ้ง

2

นอกเหนือจากการพยายามทำให้ฮาร์ดไดรฟ์ช้าลงแล้วคุณสามารถลองใช้เครื่องมือเปรียบเทียบระบบแฟ้มเช่นbonnie ++ซึ่งอาจทำให้ดิสก์ I / O เป็นจำนวนมาก

sudo apt-get install bonnie++

1
ตามที่คำถามบอกว่า "สั้น ๆ แล้วก็กลืน ๆ IO" ....
พุดดิ้ง

0

แล้วไงmake -j64ล่ะ ในบทความอธิบายว่าแพทช์ประสิทธิภาพ 200line ใหม่make -j64เป็นงานที่กินทรัพยากรคอมพิวเตอร์เป็นจำนวนมาก


2
คุณควรอธิบายว่าคำสั่งนั้นทำอะไรได้บ้าง
papukaija

ตามที่คำถามบอกว่า "สั้น ๆ แล้วก็กลืน ๆ IO" ....
พุดดิ้ง

0

ทำไมไม่เรียกใช้iotopและดูว่ากระบวนการที่คุณพยายามดีบักนั้นเป็นสาเหตุที่ทำให้เกิดการอ่าน / เขียนดิสก์จำนวนมากหรือไม่


3
ฉันคิดว่าคำตอบนี้ถูกมองว่าไม่ช่วยเหลือเพราะความจริงที่ว่ากระบวนการกำลังทำ IO จำนวนมากอาจเป็นที่รู้จักกันอยู่แล้วหรือไม่เป็นปัญหาในตัวเอง ปัญหาคือมีข้อผิดพลาดเกี่ยวกับเวลาในการจัดการ IO เหล่านั้น
poolie

0

ฉันเพิ่งพบการตั้งค่าที่ฉัน

  • ย้ายไดเรกทอรีไปยังGoogle Driveของฉัน
  • ติดตั้งผ่านไคลเอนต์ super-duper-slow google-drive-ocamlfuse
  • สร้างsymlinkจากเส้นทางเดิมไปยังใหม่

หากเวลาแฝง 16 วินาทีไม่ช้าพอคุณสามารถถอดปลั๊กเราเตอร์ออกได้

สำหรับการอ้างอิงนี่คือกรณีการใช้งานดั้งเดิมที่ฉันมีความคิดในเรื่องนี้: https://github.com/goavki/apertium-apy/pull/76#issuecomment-355007128

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