Чи можна імітувати повільний жорсткий диск?


19

Я маю на увазі, що певна переривчаста помилка може проявлятися лише тоді, коли є швидкість читання диска. Усунення несправностей складно, оскільки я не можу надійно відтворити його.

Окрім простого поглинання IO з процесом з високим пріоритетом, чи є для мене спосіб імітувати наявність повільного жорсткого диска?


Я пам'ятаю, як бачив команду сказати жорстким дискам працювати з певною швидкістю шини. Я побачу, чи зможу це викопати.
Джеремі

man hdparmпогляньте на -X варіант, можливо? Тут є досить багато речей, які ви можете використати для уповільнення вашого приводу, але деякі з них ризикують зробити неприємні речі з даними!
Джеремі

Крім того, спробуйте встановити мережевий ресурс як папку (Google - ваш друг), можливо, навіть через Wi-Fi, якщо це правдоподібно.
Джеремі

1
Це не пряма відповідь, але: якби у мене був такий переривчастий помилок, я, мабуть, спробував би запустити процес під Valgrind (якщо він був на компільованій мові), тому що це, ймовірно, охоплює умови гонки IO.
poolie

1
Ви говорите про помилку в програмі, ядрі чи драйвері пристрою? Або ти взагалі не знаєш? Це може допомогти, якщо ви пояснили більше.
poolie

Відповіді:


15

Використовуйте nbd , пристрій мережевого блоку, а потім обмежте доступ до нього за допомогою скажіть trickle.

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

+1 за досить круте рішення. однак це не справжнє випробування, оскільки ви не збираєтесь у справжній драйвер пристрою жорсткого диска, де може виникнути проблема.
Двірник Unix

1
Я не думав, що він говорить про помилку з водієм, але це було лише припущення. Подивимось.
poolie

10
Чи можна додати відповідь до цієї відповіді? На даний момент ви показуєте лише, як встановити необхідні інструменти :)
Rich

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

Це сповільнить вас :)

Це змусить вас читати з диска, а не використовувати кешовану сторінку.

Якщо ви дійсно хотіли отримати вишуканість, ви можете зробити щось на кшталт підробленої помилки читання кожен n-й раз, використовуючи рамку введення несправності scsi.

http://scsifaultinjtst.sourceforge.net/


1
Примітка. Це керування буде скинуто лише один раз. Тоді він знову почне кешувати знову. Можливо, ви хочете загорнути це в петлю.
Андробін

@Androbin Мені подобається ця ідея. Ви навіть можете додати інтервал сну до циклу. Спасибі!
ppetraki

4

Маєте концентратор USB 1.1? Або повільна карта SD? Вони зроблять вас до 10 Мбіт / с.


приємно ... недостатньо технічно для +1, але приємно
RobotHumans

3

Це аж ніяк не повне рішення, але це може допомогти у поєднанні з іншими заходами: Існує планувальник вводу-виводу, подібний до планувальника процесів, і його можна налаштувати.

Найголовніше, що ви можете насправді вибирати серед різних планувальників:

~# 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, як випливає з його назви, є шалено тупим, і ви зможете з невеликим зусиллям зруйнувати абсолютний хаос щодо продуктивності вводу / виводу.

anticipatoryі cfqобидва намагаються бути розумними щодо цього, хоча cfqзагалом вони розумніші. (Наскільки я пам'ятаю, anticipatoryнасправді це застарілий планувальник з самого початку, перш ніж ядро ​​почало підтримувати декілька планувальників.)



2

Ви можете спробувати запустити копію великого файлу, наприклад, ізо-диска встановлення Ubuntu CD, та запустити його двічі. Це повинно трохи уповільнити ваш привід.


Як йдеться в запитанні, "Не
вистачає

2

Окрім спроби сповільнити сам жорсткий диск, ви можете спробувати скористатися інструментами тестування файлової системи, такими як bonnie ++, які можуть спричинити велику кількість вводу / виводу диска.

sudo apt-get install bonnie++

1
Як йдеться в запитанні, "Не
вистачає

0

як щодо make -j64? у статтях, що описують цей новий патч на продуктивність 200 ліній, make -j64було завданням, що їсть багато комп'ютерних ресурсів


2
Ви повинні пояснити, що насправді робить ця команда.
papukaija

Як йдеться в запитанні, "Не
вистачає

0

Чому б не запустити iotopі не перевірити, чи викликає процес налагодження чимало дисків читання / запису?


3
Я вважаю, що ця відповідь вважається непорушною, оскільки сам факт того, що процес робить багато IO, може бути вже відомий, або сам по собі не є проблемою. Проблема полягає в тому, що існує якась помилка, пов’язана з тимчасовим часом, у тому, як вона обробляє ці IO.
poolie

0

Нещодавно я з'ясував, у якому місці я є

  • перемістив каталог на мій Диск Google
  • встановив його через супер-пупер-повільний клієнт google-drive-ocamlfuse
  • створили симпосилання з початкового шляху до нового

Якщо затримка на 16 секунд не надто повільна, ви можете просто відключити мережевий маршрутизатор.

Для довідки, ось оригінальний випадок використання, де я отримав ідею для цього: https://github.com/goavki/apertium-apy/pull/76#issuecomment-355007128

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.