Cách giới hạn tốc độ ghi của ổ cứng cho các chương trình đã chọn


24

Ổ cứng của tôi chậm 5400RPM và khi làm việc với các tệp có kích thước 10 GB, không thể sử dụng máy tính cho đến khi tệp lớn đó hoàn thành việc tạo lại một bản sao / muxing / write / mới. phụ thuộc vào quá trình, điều này là nó ăn hết tốc độ ổ cứng và không có chương trình nào khác có thể được sử dụng trong khi quá trình này chạy.

Vì vậy, tôi đã nghĩ có lẽ tôi có thể giới hạn tốc độ ghi của ổ cứng cho các chương trình tôi làm việc cùng, vì vậy nó sẽ dành tốc độ còn lại của ổ cứng miễn phí để sử dụng để duyệt internet hoặc phát mp3 trong khi các tệp lớn đang được xử lý.


2
Tôi chưa bao giờ nghe nói về một ổ cứng IO IO trong Windows, ít nhất là về mặt nguyên bản. Bạn đã thử thiết lập quy trình sự ưu tiên ? wmic process where name="calc.exe" CALL setpriority "idle"
Marcelo

@Marcelo Ưu tiên chỉ định thời gian CPU, không phải đĩa. Khi xử lý một tệp lớn, đĩa là thứ làm chậm máy tính chứ không phải CPU.
Keltari


@Keltari Vâng, tôi biết. Tôi chỉ nghĩ rằng có thể sửa đổi mức độ ưu tiên cho CPU có thể có một số tác động đến mục tiêu cuối cùng trong câu hỏi.
Marcelo

2
Nếu máy tính "không sử dụng được" khi sao chép các tệp lớn, có thể bạn đã quên bật DMA không? Thông thường, việc đĩa có bận hay không sẽ tạo ra ít hoặc không có sự khác biệt vì điều đó xảy ra mà không có sự can thiệp của CPU (hoặc bất kỳ).
Damon

Câu trả lời:


13

Thật không may, bạn không thể làm điều đó. Phần cứng được trừu tượng hóa từ các ứng dụng và thậm chí các bộ phận của HĐH. Về bản chất, ứng dụng nói "ghi cái này vào đĩa" và HĐH xử lý nó. Ứng dụng không xử lý làm sao hoặc thậm chí khi nào nó được viết Tất cả điều này được xử lý ở cấp trình điều khiển và kernel và không có cách nào thực sự để thay đổi điều này.

Ngay cả khi bạn có thể làm điều này, thực tế là bạn đang sử dụng một đĩa từ tính quay - và một rất chậm một lúc - bạn sẽ không thấy được nhiều. Ổ đĩa liên tục quay và đầu di chuyển dọc theo đĩa. Ngay cả khi bạn đã ghi vào tệp của mình ít hơn, đĩa sẽ liên tục tìm kiếm đúng khu vực trên đĩa để đọc / ghi vào / từ.

Của bạn tốt tùy chọn sẽ là lấy một ổ đĩa khác và thực hiện công việc của bạn trên ổ đĩa đó, để lại ổ đĩa đầu tiên cho internet, MP3, v.v.

P.S. Bạn đã không đề cập đến việc bạn có bao nhiêu RAM. Trao đổi có thể là một yếu tố trong tốc độ chậm. Tùy thuộc vào dung lượng RAM bạn có, thêm nhiều hơn sẽ chỉ có ích.


2
Sẽ không phải là phiên bản Windows của Linux ' ionice đến gần để được một câu trả lời?
Daniel Beck

@DanielBeck Có thể có phần mềm ngoài đó có thể hoạt động. Tuy nhiên, ai biết những biến chứng có thể đến từ việc sử dụng nó? Nó sẽ là vì thế dễ dàng hơn nhiều chỉ cần tát vào một ổ đĩa khác và được thực hiện với vấn đề.
Keltari


1
Tôi không thấy bất kỳ đối số nguyên tắc nào về lý do tại sao một ứng dụng không thể được điều chỉnh. Đây là một điều tiết rất đơn giản: Tạm dừng quá trình trong 1 giây mỗi giây. Điều đó giúp điều chỉnh IO khoảng 50% và cho phép các quá trình khác trượt vào sử dụng đĩa. Thời gian tìm kiếm theo thứ tự 10ms.
usr

@usr: Nó phụ thuộc vào loại và tần số của I / O. Cách tiếp cận của bạn hoạt động trong một số trường hợp nhưng không phải cách khác - ví dụ: nếu I / O xảy ra hoàn toàn ở chế độ kernel, tôi không nghĩ bạn luôn có thể tạm dừng nó bằng cách tạm dừng quá trình chế độ người dùng.
Mehrdad

9

Quy trình Lasso cho phép bạn ưu tiên I / O. Từ câu hỏi thường gặp của họ:

Mới trong phiên bản v4.1 (v4.09 beta), Process Lasso có các cài đặt ưu tiên I / O mặc định và hiện tại rõ ràng có sẵn cho những người yêu cầu chúng. Điều này chỉ áp dụng cho NT6 + (Vista, Win7, ...).

TUY NHIÊN, mức độ ưu tiên I / O của Vista dựa trên mức độ ưu tiên của luồng thực hiện I / O, phụ thuộc vào lớp ưu tiên của quy trình thực hiện I / O. Thực tế chỉ có hai mức độ ưu tiên có thể sử dụng được bởi các ứng dụng, Bình thường và Rất thấp. Mặc dù về mặt kỹ thuật có 5, nhưng chỉ có hai điều này được thực hiện hoặc sử dụng theo quy trình.

Do đó, việc điều chỉnh các ưu tiên của luồng sẽ truyền đến I / O của luồng đó. Theo cách này, Process Lasso đã thực hiện ưu tiên I / O. Microsoft khuyến nghị các ứng dụng điều chỉnh mức ưu tiên I / O của chúng dựa trên việc đặt mức độ ưu tiên của luồng gọi (trực tiếp hoặc bằng cách điều chỉnh lớp cơ sở ưu tiên quy trình).

Xem thêm bài viết về ưu tiên I / O từ Microsoft .


1

Những gì tôi làm khi tôi có một quy trình tiếp tục ăn tất cả I / O đĩa của tôi trên Windows sẽ đưa Process Explorer và tạm dừng quá trình vi phạm. Sau khi tôi hoàn thành công việc của mình và sẵn sàng chờ một chút, tôi tiếp tục. Đây chắc chắn không phải là cách làm hiệu quả nhất vì nó là cách kiểm soát I / O đĩa hoàn toàn hoặc không có gì và quá trình của bạn sẽ phải chờ trong khi bạn sử dụng máy tính của mình, nhưng cho đến nay tôi chưa thấy phương án nào tốt hơn.

Mặt khác, nếu bạn có thể thực hiện quy trình của mình trên Cygwin, bạn có thể cài đặt pv trên máy tính của bạn và sử dụng nó như bước đầu tiên hoặc cuối cùng với một tùy chọn (tôi nghĩ đó là -r) để điều chỉnh tốc độ đầu ra của pv.

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.