2009-08-24 24 views
6

trên một hộp linux với nhiều bộ nhớ (một vài hợp đồng biểu diễn), tôi cần truy cập ngẫu nhiên vào một tệp lớn nhanh nhất có thể.Có thể chạy 'cat' tăng tốc độ truy cập tệp ngẫu nhiên sau đó trên một hộp linux không?

Tôi đã suy nghĩ về việc thực hiện cat myfile > /dev/null trước khi truy cập để các trang tệp của tôi đi vào bộ nhớ tuần tự, do đó nhanh hơn so với truy cập ngẫu nhiên khô.

Cách tiếp cận này có hợp lý với bạn không?

Trả lời

4

Như những người khác đã nói, bạn sẽ cần đánh giá nó trong trường hợp cụ thể của bạn.

Hoàn toàn có thể sẽ dẫn đến tăng hiệu suất đáng kể. Trên phương tiện xoay truyền thống (tức là đĩa cứng) truy cập tuần tự (tệp cat>/dev/null/fadvise) nhanh hơn nhiều so với truy cập ngẫu nhiên.

4

Chỉ có một cách để đảm bảo rằng bất kỳ (có thể sớm) tối ưu hóa nào là đáng giá: chuẩn nó.

2

Về mặt lý thuyết có thể tăng tốc độ truy cập (đặc biệt là nếu bạn truy cập gần như tất cả mọi thứ từ tệp), nhưng tôi sẽ không đặt cược vào một sự khác biệt lớn.

Cách tiếp cận thực sự hữu ích duy nhất là điểm chuẩn cho trường hợp cụ thể của bạn.

7

Khi thực hiện điều đó có thể buộc nội dung của tệp vào bộ nhớ cache của hệ thống, bạn nên sử dụng posix_fadvise() (với lời khuyên POSIX_FADV_WILLNEED) hoặc gọi (chặn) readahead() để làm cho hạt nhân xem trước dữ liệu bạn cần.

CHỈNH SỬA: Bạn cũng có thể thử sử dụng lời khuyên POSIX_FADV_RANDOM để tắt hoàn toàn chế độ đọc. Có một bài viết có giải thích hợp lý về cách sử dụng tại đây: Advising the Linux Kernel on File I/O

2

Nếu bạn thực sự muốn tốc độ, tôi khuyên bạn nên thử IO-ánh xạ bộ nhớ thay vì cố gắng để hack một cái gì đó với con mèo. Tất nhiên, nó phụ thuộc vào kích thước của tập tin bạn đang cố gắng truy cập và loại truy cập bạn muốn .. điều này có thể không thực hiện được ...

readahead là một cuộc gọi tốt quá ...

0

Làm "mèo" trên một tệp lớn có thể mang dữ liệu vào và thổi dữ liệu có giá trị hơn ra khỏi bộ nhớ cache; đây không phải điều bạn muốn. Nếu bạn thực hiện kiểm tra hiệu suất thường xuyên (và ngâm thử nghiệm vv), hãy tiếp tục làm như vậy và xem đồ thị, số liệu, v.v.

của bạn
Các vấn đề liên quan