2008-12-24 27 views
12

Nếu tôi bắt đầu sao chép một cây tệp lớn từ vị trí này sang vị trí khác hoặc nếu một số quy trình khác bắt đầu thực hiện nhiều hoạt động đĩa, ứng dụng nền trước (GUI) chậm đường xuống. Ví dụ, lấy một cây tệp 2gb với 100k tệp trong đó. Mở một giao diện điều khiển và làm cp -r bigtree bigtree2. Sau đó đi đến firefox và bắt đầu duyệt. Firefox gần như không sử dụng được. Ngay cả khi tôi đặt mức độ tốt đẹp của firefox để ưu tiên thực sự cao (-20), nó vẫn còn siêu chậm với sự chậm trễ rất lớn.Làm thế nào để làm cho GUI Linux "có thể sử dụng được" khi nhiều hoạt động đĩa xảy ra

Tôi nhớ một vài năm trước đây khi tôi làm việc trên một hộp Solaris, hệ thống hoạt động tốt hơn nhiều trong các trường hợp tương tự.

HD của tôi đang sử dụng DMA chứ không phải PIO. Đó là SATA. Không được gắn với cờ atime.

Trả lời

7

Hãy thử ionice -ing hoặc làm đẹp quá trình sao chép. Vấn đề là do thực tế là IO được ưu tiên tương tự như GUI, mà cho một máy tính để bàn, ảnh hưởng đến phản ứng nhận thức.

Có một Ubuntu brainstorm về điều này hiện tại.

+1

Tôi sẽ thử điều đó. Nhưng đó không phải chính xác những gì tôi muốn. Tôi muốn tất cả các hoạt động đĩa nền tự động ion hóa chính nó hoặc bất cứ điều gì. Tôi muốn hệ thống đủ thông minh để nói "này, có một con người đang cố gắng làm việc đó. Đừng có chọc giận nữa." – user126593

+0

Tôi không chắc liệu có bất kỳ cách nào để định cấu hình lớp ưu tiên ở cấp độ toàn cầu hay không. Tuy nhiên bạn có thể cấu hình bộ lập lịch IO được sử dụng cho mỗi thiết bị khối (echo termline>/sys/block//queue/scheduler). Đọc http://donami.com/118 để biết thêm chi tiết. – codelogic

+1

Không có cách nào để hệ thống tự động biết. Bạn đã gõ lệnh cp, cho tất cả những gì hệ thống biết bạn đang lo lắng chờ đợi nó kết thúc. –

16

Linux từ lâu đã gặp sự cố với các chương trình khiến tất cả bộ nhớ cache "bẩn" của hệ thống bị lỗi. Những gì đang xảy ra là quá trình sao chép được điền vào bộ nhớ cache ghi với các dữ liệu tập tin nó được sao chép và nó đang làm nó rất nhanh chóng. Vì vậy, khi Firefox đi kèm và cần phải viết nó trước tiên phải chờ đợi cho không gian đệm bẩn hoặc một hàng đợi đĩa có sẵn viết khe. Trong khi chờ đợi nó đang cạnh tranh với quá trình sao chép và chuỗi pdflush của hạt nhân, mà di chuyển dữ liệu từ bộ đệm bẩn vào hàng đợi ghi đĩa.

Firefox vẫn còn một vấn đề khác trong trường hợp này. Nó sử dụng SQLite để lưu trữ dấu trang, lịch sử của nó và những thứ khác. SQLite là một cơ sở dữ liệu tuân thủ ACID và nó sử dụng một hệ thống giao dịch với đĩa ghi được chuyển sang đĩa. Vì vậy, không chỉ phải chờ đợi vùng đệm, nó phải đợi cho hàng đợi đĩa, có đầy đủ các tệp được sao chép, để xóa trước khi nó có thể thừa nhận một ghi thành công.

Đã có tinh chỉnh được thực hiện cho hệ thống xếp hàng và đệm đĩa Linux. Có những thay đổi trong hầu hết các bản phát hành hạt nhân. Hãy thử một trong các bản phát hành mới hơn. Bạn cũng có thể thử tinh chỉnh các giá trị sysctl. Tôi loại như thế này:

vm.dirty_writeback_centisecs = 100 
vm.dirty_expire_centisecs = 9000 
vm.dirty_background_ratio = 4 
vm.dirty_ratio = 80 

Bạn cũng có thể thử tinh chỉnh số lượng vị trí trong hàng đợi đĩa. Giá trị này là /sys/block/sda/queue/nr_requests. Bạn cần thay thế sda bằng bất kỳ ổ đĩa nào của bạn thực sự là. Nhiều khe hơn có nghĩa là nhiều cơ hội hơn để hợp nhất các yêu cầu IO và bộ lập lịch CFQ IO có thể thực hiện một công việc tốt hơn với các ưu tiên. Ít khe hơn thường có nghĩa là chờ đợi ngắn hơn để được ghi vào đĩa cho IO đồng bộ như giao dịch của SQLite. Ít khe hơn cũng có nghĩa là chờ đợi ngắn hơn để có được đọc IO vào hàng đợi đĩa nếu một quá trình ghi nặng hoàn toàn nhồi hàng đợi bằng cách ghi IO.

+0

1 cho câu trả lời rất tốt và chi tiết. Có lẽ anh ta cũng có thể sử dụng một trình duyệt khác. Firefox là lame và cồng kềnh. –

+0

[Bài viết liên quan đến LWN] (https://lwn.net/Articles/572911/) và [Câu trả lời Unix.SE] (https://unix.stackexchange.com/a/107722/27672). – Ruslan

2

Bạn không phải là người đầu tiên nhận thấy sự cố này. Cựu nhà phát triển hạt nhân [Con Kolivas] (http://en.wikipedia.org/wiki/Con_Kolivas) thấy rằng rất nhiều công ty đang trả tiền để cải thiện hiệu suất máy chủ Linux với chi phí hiệu suất máy tính để bàn. Con đã có một ấn tượng set of patches for making the desktop more responsive. Thật không may là có một số loại chiến tranh mã và cuối cùng là Con dropped out.

Tôi rất muốn biết cách kiến ​​nghị nhà phát triển hạt nhân Linux để có hiệu suất máy tính để bàn tốt hơn. Trong thời gian chờ đợi, nếu bạn sẵn sàng chạy hạt nhân 2.6.22, bạn có thể chạy với miếng dán -ck đặt.

0

Đảm bảo rằng DMA được bật trên tất cả các ổ đĩa hỗ trợ. Tùy thuộc vào phân phối của bạn, điều này có thể không phải là mặc định. Đọc man hdparm và xem các hệ thống của bạn init.

Các vấn đề liên quan