2008-10-02 36 views
5

Khi chạy kiểm tra hiệu năng, việc lưu trữ hoặc xóa bộ nhớ cache của hệ thống có thể ảnh hưởng đáng kể đến kết quả kiểm tra. Do đó, trước khi chạy thử nghiệm như vậy được sử dụng các tập tin được gỡ bỏ từ bộ nhớ cache hệ thống. Làm thế nào để làm điều đó trên Linux?Làm cách nào để gỡ bỏ tệp khỏi bộ đệm hệ thống trên Linux?

Làm rõ: Nếu có thể, giải pháp không được yêu cầu quyền root.

Trả lời

9

Hà, tôi có câu trả lời:

#include <unistd.h> 
#include <fcntl.h> 
int main(int argc, char *argv[]) { 
    int fd; 
    fd = open(argv[1], O_RDONLY); 
    fdatasync(fd); 
    posix_fadvise(fd, 0,0,POSIX_FADV_DONTNEED); 
    close(fd); 
    return 0; 
} 

Đây là từ http://insights.oetiker.ch/linux/fadvise.html

11

Là một superuser bạn có thể làm như sau:

Để chủBộ nhớ đệm miễn phí:

  • echo 1>/proc/sys/vm/drop_caches

Để dentries miễn phí và inodes:

  • echo 2>/proc/sys/vm/drop_caches

Để miễn phí chủBộ nhớ đệm, dentries và inodes:

  • vang 3>/proc/sys/vm/drop_caches

Thao tác này sẽ không "mất" bất kỳ dữ liệu (lưu trữ được viết ra để đĩa trước khi dữ liệu của họ bị xóa), tuy nhiên, để thực sự đảm bảo tất cả bộ nhớ cache được làm sạch, bạn nên đồng bộ hóa trước. Ví dụ. tất cả bộ đệm nên được xóa nếu bạn chạy

sync; echo 3 > /proc/sys/vm/drop_caches 

Như tôi đã nói, chỉ người dùng superuser (root) mới có thể làm như vậy.

0

Về việc sử dụng O_DIRECT: điều đó sẽ làm xáo trộn kết quả theo một cách khác. Hạt nhân sẽ cố gắng để DMA dữ liệu hệ thống tập tin trực tiếp vào bộ đệm read() của bạn, vì vậy nó có thể được gửi đến ứng dụng của bạn mà không cần bất kỳ bản sao bổ sung nào được thực hiện. Không có O_DIRECT hạt nhân DMA, dữ liệu tệp vào bộ đệm trang và sao chép nó từ bộ nhớ cache trang vào bộ đệm read() của bạn.

Điều này là tốt nếu ứng dụng của bạn thực sự sử dụng O_DIRECT trong quá trình sản xuất. Nếu bạn chạy thử nghiệm hiệu suất với O_DIRECT và sau đó loại bỏ O_DIRECT cho sản xuất, kiểm tra hiệu suất của bạn sẽ không thực tế.

-1

Nếu bạn có thể đặt các dữ liệu thử nghiệm trong một hệ thống tập tin riêng biệt sau đó gắn hệ thống tập tin lại lần nữa cho kỳ thi này sẽ cung cấp cho bạn lưu trữ trống .

Nếu bạn liệt kê filesystem kiểm tra trong/etc/fstab với tùy chọn "sử dụng", sau đó bạn có thể gắn nó cho kỳ thi này mà không bị superuser

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