Tôi có thể mô phỏng một ổ cứng chậm không?


19

Tôi linh cảm rằng một lỗi không liên tục nhất định chỉ có thể tự biểu hiện khi có tốc độ đọc đĩa chậm. Khắc phục sự cố rất khó vì tôi không thể tái tạo nó một cách đáng tin cậy.

Nói một cách đơn giản là ngấu nghiến IO với quy trình ưu tiên cao, có cách nào để tôi mô phỏng việc có một ổ cứng chậm không?


Tôi nhớ đã thấy một lệnh để bảo các ổ cứng chạy ở tốc độ xe buýt nhất định. Tôi sẽ xem nếu tôi có thể đào nó ra.
Jeremy

man hdparmhãy xem tùy chọn -X có thể? Có khá nhiều thứ trong đó bạn có thể sử dụng để làm chậm ổ đĩa của mình, nhưng một số trong số chúng có nguy cơ làm những điều khó chịu với dữ liệu!
Jeremy

Ngoài ra, hãy thử gắn một chia sẻ mạng dưới dạng một thư mục (google là bạn của bạn), thậm chí có thể qua wifi, nếu điều đó là hợp lý.
Jeremy

1
Đây không phải là câu trả lời trực tiếp, nhưng: nếu tôi gặp lỗi không liên tục như thế này, có lẽ tôi sẽ thử chạy quy trình theo Valgrind (nếu nó ở ngôn ngữ được biên dịch), vì điều đó có thể sẽ nắm bắt các điều kiện của cuộc đua IO.
poolie

1
Bạn đang nói về một lỗi trong một ứng dụng, hoặc kernel hoặc trình điều khiển thiết bị? Hoặc bạn không biết gì cả? Nó có thể giúp nếu bạn giải thích thêm.
poolie

Câu trả lời:


15

Sử dụng nbd , Thiết bị chặn mạng và sau đó xếp hạng giới hạn quyền truy cập vào thiết bị bằng cách sử dụng say trickle.

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

+1 cho một giải pháp khá tuyệt vời. tuy nhiên, đây không phải là một thử nghiệm thực sự bởi vì bạn sẽ không truy cập trình điều khiển thiết bị đĩa cứng thực sự, nơi vấn đề có thể nằm ở đó.
Unix Janitor

1
Tôi không nghĩ anh ta đang nói về một lỗi trình điều khiển, nhưng đó chỉ là một giả định. Hãy xem nào.
poolie

10
Có thể thêm lệnh thực tế vào câu trả lời này? Hiện tại bạn chỉ hiển thị cách cài đặt các công cụ cần thiết :)
Rich

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

Điều đó sẽ làm bạn chậm lại :)

Nó sẽ buộc bạn đọc từ đĩa, thay vì tận dụng trang được lưu trữ.

Nếu bạn thực sự muốn trở nên tinh vi, bạn có thể làm điều gì đó như giả mạo lỗi đọc mỗi lần thứ n bằng cách sử dụng khung tiêm lỗi scsi.

http://scsifaultinjtst.sourceforge.net/


1
Lưu ý: Điều này sẽ chỉ thả bộ nhớ cache một lần. Sau đó, nó sẽ ngay lập tức bắt đầu lưu trữ lại. Bạn có thể muốn bọc nó trong một vòng lặp.
Androbin

@Androbin Tôi thích ý tưởng đó. Bạn thậm chí có thể thêm một khoảng thời gian ngủ vào vòng lặp. Cảm ơn!
ppetraki

4

Có một trung tâm USB 1.1? Hay thẻ SD chậm? Họ sẽ đưa bạn xuống dưới 10mbps.


tốt ... không đủ kỹ thuật cho +1 nhưng tốt
RobotHumans

3

Đây không phải là một giải pháp hoàn chỉnh, nhưng nó có thể giúp kết hợp với các biện pháp khác: Có một bộ lập lịch I / O giống như một bộ lập lịch xử lý và nó có thể được điều chỉnh.

Đáng chú ý nhất, bạn thực sự có thể chọn trong số các lịch trình khác nhau:

~# 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 có thể giúp bạn có được kết quả tái sản xuất mạnh mẽ hơn.

noop, như tên gọi của nó, cực kỳ ngu ngốc, và sẽ cho phép bạn phá hỏng sự tàn phá tuyệt đối trên hiệu suất I / O với ít nỗ lực.

anticipatorycfqcả hai đều cố gắng thông minh về điều đó, mặc dù cfqnhìn chung là thông minh hơn cả hai. (Như tôi nhớ, anticipatorythực ra là bộ lập lịch kế thừa từ ngay trước khi kernel bắt đầu hỗ trợ nhiều bộ lập lịch.)



2

Bạn có thể thử chạy một bản sao của một tệp lớn, chẳng hạn như iso của đĩa CD cài đặt Ubuntu và chạy nó hai lần. Điều đó sẽ làm chậm ổ đĩa của bạn xuống một chút.


Như câu hỏi nói, "Ngắn gọn chỉ đơn giản là ngấu nghiến IO" ....
poolie

2

Ngoài việc cố gắng tự làm chậm ổ cứng, bạn có thể thử sử dụng các công cụ đo điểm chuẩn hệ thống tập tin như bonnie ++ , điều này có thể gây ra rất nhiều I / O đĩa.

sudo apt-get install bonnie++

1
Như câu hỏi nói, "Ngắn gọn chỉ đơn giản là ngấu nghiến IO" ....
poolie

0

làm thế nào về make -j64? trong các bài viết mô tả rằng bản vá hiệu suất 200 dòng mới, make -j64là một nhiệm vụ ăn nhiều tài nguyên máy tính


2
Bạn nên giải thích những gì lệnh đó thực sự làm.
papukaija

Như câu hỏi nói, "Ngắn gọn chỉ đơn giản là ngấu nghiến IO" ....
poolie

0

Tại sao không chạy iotopvà xem nếu quá trình mà bạn đang cố gắng gỡ lỗi có gây ra nhiều lần đọc / ghi đĩa không?


3
Tôi nghĩ rằng câu trả lời này được coi là không có ích vì thực tế là quá trình thực hiện nhiều IO có thể đã được biết đến, hoặc bản thân nó không phải là vấn đề. Vấn đề là có một số loại lỗi liên quan đến thời gian trong cách nó xử lý các IO đó.
poolie

0

Gần đây tôi đã tìm ra một thiết lập nơi tôi

  • đã chuyển thư mục vào Google Drive của tôi
  • gắn kết nó thông qua máy khách siêu chậm google-drive-ocamlfuse
  • đã tạo một liên kết tượng trưng từ đường dẫn ban đầu đến đường dẫn mới

Nếu độ trễ 16 giây không đủ chậm, bạn có thể rút phích cắm bộ định tuyến của mình.

Để tham khảo, đây là trường hợp sử dụng ban đầu, nơi tôi có ý tưởng cho việc này: https://github.com/goavki/apertium-acco/pull/76#issuecomment-355007128

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.