Bisakah saya mensimulasikan hard drive lambat?


19

Saya punya firasat bahwa bug intermiten tertentu mungkin hanya memanifestasikan dirinya ketika ada tingkat baca disk yang lambat. Pemecahan masalah sulit karena saya tidak dapat mereproduksi dengan andal.

Singkatnya hanya melahap IO dengan proses prioritas tinggi, apakah ada cara bagi saya untuk mensimulasikan memiliki hard drive yang lambat?


Saya ingat melihat perintah untuk memberi tahu harddisk untuk menjalankan pada kecepatan bus tertentu. Saya akan melihat apakah saya bisa menggalinya.
Jeremy

man hdparmlihat opsi -X mungkin? Ada beberapa hal di sana yang bisa Anda gunakan untuk memperlambat drive Anda, tetapi beberapa di antaranya berisiko melakukan hal-hal buruk pada data!
Jeremy

Juga, coba pasang berbagi jaringan sebagai folder (google adalah teman Anda), mungkin bahkan lebih dari wifi, jika itu masuk akal.
Jeremy

1
Ini bukan jawaban langsung, tetapi: jika saya memiliki bug intermiten seperti ini, saya mungkin akan mencoba menjalankan proses di bawah Valgrind (jika itu dalam bahasa yang dikompilasi), karena itu kemungkinan akan menangkap kondisi lomba IO.
poolie

1
Apakah Anda berbicara tentang bug dalam aplikasi, atau kernel, atau driver perangkat? Atau Anda tidak tahu sama sekali? Mungkin membantu jika Anda menjelaskan lebih lanjut.
poolie

Jawaban:


15

Gunakan nbd , Perangkat Blok Jaringan, dan kemudian tingkat akses batasnya menggunakan katakanlah trickle.

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

+1 untuk solusi yang sangat keren. Namun, ini bukan tes nyata karena Anda tidak akan pergi ke driver perangkat hard disk nyata, yang mana masalahnya mungkin terletak.
The Unix Janitor

1
Saya tidak berpikir dia berbicara tentang bug driver, tapi itu hanya asumsi. Ayo lihat.
poolie

10
Apakah mungkin menambahkan perintah yang sebenarnya ke jawaban ini? Saat ini Anda hanya menunjukkan cara memasang alat yang diperlukan :)
Rich

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

Itu akan memperlambat Anda :)

Ini akan memaksa Anda untuk membaca dari disk, alih-alih memanfaatkan halaman yang di-cache.

Jika Anda benar-benar ingin menjadi canggih, Anda bisa melakukan sesuatu seperti memalsukan kesalahan baca setiap kali menggunakan kerangka injeksi kesalahan scsi.

http://scsifaultinjtst.sourceforge.net/


1
Catatan: Ini hanya akan menjatuhkan cache sekali. Maka itu akan segera mulai caching lagi. Anda mungkin ingin membungkusnya dalam satu lingkaran.
Androbin

@Androbin Saya suka ide itu. Anda bahkan bisa menambahkan interval tidur ke loop. Terima kasih!
ppetraki

4

Punya hub USB 1.1? Atau kartu SD yang lambat? Mereka akan membuat Anda di bawah 10mbps.


bagus ... tidak cukup teknis untuk +1 tetapi bagus
RobotHumans

3

Ini sama sekali bukan solusi yang lengkap, tetapi mungkin membantu dalam hubungannya dengan langkah-langkah lain: Ada penjadwal I / O sangat mirip dengan penjadwal proses, dan itu bisa di-tweak.

Terutama, Anda sebenarnya dapat memilih di antara penjadwal yang berbeda:

~# 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 dapat membantu Anda mendapatkan hasil yang lebih kuat direproduksi.

noop, seperti namanya, gila-gilaan bodoh, dan akan memungkinkan Anda untuk menghancurkan kekacauan mutlak pada kinerja I / O dengan sedikit usaha.

anticipatorydan cfqkeduanya berusaha untuk menjadi pintar tentang hal itu, meskipun pada cfqumumnya lebih pintar dari keduanya. (Seingat saya, anticipatorysebenarnya adalah penjadwal warisan dari tepat sebelum kernel mulai mendukung banyak penjadwal.)



2

Anda dapat mencoba menjalankan salinan file besar, seperti iso dari Ubuntu instal cd, dan jalankan dua kali. Itu akan memperlambat drive Anda sedikit.


Seperti kata pertanyaan, "Pendek hanya melahap IO" ....
poolie

2

Selain mencoba memperlambat hard drive itu sendiri, Anda dapat mencoba menggunakan alat benchmark sistem file seperti Bonnie ++ yang dapat menyebabkan banyak I / O disk.

sudo apt-get install bonnie++

1
Seperti kata pertanyaan, "Pendek hanya melahap IO" ....
poolie

0

bagaimana make -j64? dalam artikel yang menggambarkan bahwa tambalan kinerja 200line baru, make -j64adalah tugas memakan banyak sumber daya komputer


2
Anda harus menjelaskan apa yang sebenarnya dilakukan perintah itu.
papukaija

Seperti kata pertanyaan, "Pendek hanya melahap IO" ....
poolie

0

Mengapa tidak menjalankan iotopdan melihat apakah proses yang Anda coba debug menyebabkan banyak disk membaca / menulis?


3
Saya pikir jawaban ini dipandang tidak membantu karena fakta bahwa proses melakukan banyak IO mungkin sudah diketahui, atau bukan masalah itu sendiri. Masalahnya adalah ada semacam bug terkait waktu dalam cara menangani IO tersebut.
poolie

0

Saya baru saja menemukan pengaturan di mana saya sudah

  • memindahkan direktori ke Google Drive saya
  • memasangnya melalui klien super-duper-lambat google-drive-ocamlfuse
  • membuat symlink dari jalur asli ke yang baru

Jika latensi 16 detik tidak cukup lambat, Anda bisa mencabut router Anda.

Untuk referensi, ini adalah case use asli, di mana saya mendapat ide untuk ini: https://github.com/goavki/apertium-apy/pull/76#issuecomment-355007128

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.