Hệ thống khóa khi đĩa I / O bão hòa


8

Khi tôi thực hiện chuyển tập tin lớn từ ổ cứng USB3 bên ngoài sang ổ cứng bên trong (hoặc ngược lại), thông qua Nautilus hoặc qua thiết bị đầu cuối, Ubuntu (Unity) sẽ gần như khóa hoàn toàn. Những thứ như tab alt mất 20 giây trở lên để hoàn thành trong khi quá trình truyền tệp đang chạy. Đây không phải là trường hợp khi có rất nhiều lần đọc / ghi ngẫu nhiên vào đĩa, chẳng hạn như khi cài đặt các gói.

Khi tôi đang chạy Windows, tôi có thể chạy chuyển tập tin ở chế độ nền và vẫn có thể thực hiện mọi việc, mặc dù chậm hơn khi có thứ gì đó cần để truy cập vào đĩa. Tôi vẫn có thể alt-tab tốt.

Dường như Ubuntu ưu tiên chuyển tập tin lên trên tất cả các I / O đĩa khác, đó là lý do tại sao nó bị khóa. Trong Windows, có vẻ như chuyển tập tin có mức độ ưu tiên thấp hơn, có nghĩa là hệ thống có thể phản hồi nhanh trong khi đĩa đã bão hòa.

Làm thế nào tôi có thể sửa lỗi này? Điều này khá khó chịu, vì máy tính trở nên hoàn toàn không sử dụng được khi sao chép tệp. Vấn đề này xảy ra trong cả 14.04 và 15.10. Tôi buộc phải cắm ổ cứng vào cổng USB2 để ngăn chặn sự cố này và điều đó dẫn đến thời gian truyền lâu hơn nhiều.


Không nên, nhưng kiểm tra xem unix.stackexchange.com/questions/107703/ cho trợ giúp
Rmano

Câu trả lời:


10

Tôi đã có một vấn đề tương tự trên máy tính xách tay của tôi, có một hệ thống đĩa khá chậm so với phần còn lại của máy tính.

Tôi đã có thể làm điều này tốt hơn nhiều, bằng cách thay đổi thuật toán lập lịch được sử dụng để chuyển đĩa. Theo mặc định, Ubuntu sử dụng Hạn chót, nhưng tôi thấy hệ thống của mình phản hồi nhanh hơn khi tôi sử dụng cfq.

Để xem bạn đang sử dụng bộ lập lịch nào, hãy dùng lệnh

cat /sys/class/block/sda/queue/scheduler    

Để thực hiện thay đổi một lần (cho đến khi khởi động lại), hãy ra lệnh

echo cfq | sudo tee /sys/class/block/sda/queue/scheduler

Lưu ý rằng điều quan trọng là thay đổi phải được thực hiện đối với bất kỳ thứ gì bạn có cho ổ cứng ngoài; Của tôi thường tải lên như sdb. vì vậy tôi sẽ ban hành lệnhecho cfq | sudo tee /sys/class/block/sdb/queue/scheduler

Tôi thực hiện thay đổi vĩnh viễn cho tất cả các ổ đĩa được gắn vào máy tính của mình, bằng cách thêm tham số kernel elevator=cfqtrong tệp grub của tôi, trông giống như sau:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"

Wow, điều này đã làm việc. Cảm ơn! Hệ thống của tôi bây giờ phản ứng nhanh hơn trong khi chuyển, và thực sự nhanh hơn trong việc tải mọi thứ tổng thể.
Degru

Vui mừng khi nghe nó đã giúp.
Charles Green

1
> Theo mặc định, Ubuntu sử dụng Hạn chót, nhưng tôi thấy hệ thống của mình phản hồi nhanh hơn khi tôi sử dụng thời hạn. Tôi nghi ngờ bạn đã muốn cụm từ này kết thúc bằng '... khi tôi sử dụng cfq'.
markus_b

Tôi không bao giờ tìm kiếm một giải pháp cho điều này vì lý do này hay lý do khác. Tôi đã đưa ra câu trả lời này khi nó được đăng cách đây vài ngày, bây giờ tôi đã có cơ hội kiểm tra nó (tôi đã phải di chuyển rất nhiều torrent từ Deluge trở lại Transmission, yêu cầu kiểm tra lại từng torrent) và thực sự thay đổi lịch trình một sự cải tiến. Hệ thống vẫn hoạt động ổn định, đặc biệt là khi chuyển đổi không gian làm việc, nhưng chắc chắn nó không bị treo gần như hoàn toàn như trước đây. Cảm ơn! Câu trả lời này hữu ích đến mức IMO xứng đáng nhận được tiền thưởng (và tôi đang đặt một).
kos

@kos Đó không phải là một giải pháp hoàn chỉnh, hoặc tôi chắc chắn sẽ hạnh phúc hơn nhiều - tôi vẫn thỉnh thoảng nói lắp, và thấy điều này rất bực bội.
Charles Green
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.