2011-02-08 29 views
6

Trên một máy CentOS 5.5 chạy phiên bản hạt nhân Linux 2.6.18-194.26.1.el5, tôi nhận thấy rằng posix_fadvise (WILLNEED) làm cho việc đọc các tệp 60K chậm hơn nhiều so với chỉ IO thông thường gần 200%.posix_fadvise (WILLNEED) làm cho IO chậm hơn?

Dường như cuộc gọi fadvise thực sự là đồng bộ và nó cũng trì hoãn lập lịch trình các chủ đề khác trong ứng dụng sử dụng dữ liệu được đọc từ các tệp.

Có thể hạt nhân đang bận với việc tìm nạp dữ liệu từ đĩa do cuộc gọi fadvise, và kết thúc trì hoãn nhiệm vụ được lên lịch khác? Có vẻ như trái ngược với hành vi tìm nạp trước không đồng bộ mong đợi mà chúng tôi mong đợi từ việc thực hiện cuộc gọi fadvise.

Câu hỏi của tôi là: có bất kỳ tham số hạt nhân có thể điều chỉnh nào có thể được sử dụng để thực thi hành vi không đồng bộ cho posix_fadvise (WILLNEED) không? Giống như tăng các luồng IO của nhân, bộ đệm trang?

Trả lời

7

Đây chỉ là gần đây asked on LKML. Đó chỉ là cách nó được thiết kế. Nếu bạn cần một không bị chặn fadvise, hãy làm điều đó trong một chuỗi khác.

+0

Cảm ơn câu trả lời. Câu trả lời được cung cấp trong liên kết ám chỉ đến số lượng các yêu cầu IO được phục vụ trong hạt nhân. Đó có phải là một số có thể cấu hình không? Nếu hệ thống có nhiều tài nguyên, việc tăng hàng đợi này có thể giúp giảm hiệu ứng của hành vi đồng bộ ... – Specksynder

+0

['nr_requests' trên mỗi hàng đợi, vì vậy bạn có thể điều chỉnh nó] (https://www.kernel.org/doc/Documentation /block/queue-sysfs.txt). Tôi không chắc nó được khởi tạo từ đâu. – sourcejedi

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