2013-08-05 27 views
7

Khi tôi thực hiện cp folder1 folder2 -rf, lần đầu tiên mất khoảng 10 phút. Nhưng khi tôi thực hiện lệnh thứ hai cp folder1 folder3 -rf, nó mất khoảng 1 phút. folder1 chứa khoảng 100 000 tệp.tại sao lệnh cp thứ hai nhanh hơn

Tại sao có cải thiện thời gian cho lần thứ hai?

+3

Chỉ cần đoán: Có thể vì nội dung của 'thư mục1' nằm trong bộ nhớ để có thể sao chép nhanh hơn? – fedorqui

Trả lời

10

Điều này là do bộ nhớ đệm trang. Chạy sync ; echo 3 > /proc/sys/vm/drop_caches để làm cho nó chậm lại.

Tiếp tục đọc:

+0

Nitpick nhỏ: Việc gọi 'sync' ở đây là khá vô ích. Lý do tại sao người ta muốn đồng bộ là các vật bẩn không thể bị thanh lọc. Tuy nhiên, 'sync' chỉ _initiates_ writeback, nó không thực sự" đồng bộ "(nghĩa là, chặn cho đến khi hoàn thành writeback). Vì vậy, thả bộ nhớ cache ngay lập tức sau khi gọi đồng bộ hóa là khá nhiều giống như không đồng bộ hóa. – Damon

5

Lần đầu tiên các tệp được đọc từ ổ cứng của bạn.

Lần thứ hai các tệp được đọc từ bộ nhớ.

Linux, như hầu hết các hệ điều hành, lưu trữ các tệp/khối truy cập trong bộ nhớ.

1

Điều này là do các tập tin hiện đang được lưu trữ trong bộ nhớ cache. Lần đầu tiên lệnh này được thực thi, nó phải đọc tệp từ đĩa, chậm hơn nhiều. Điều này cũng quan trọng cần nhớ nếu bạn muốn chạy bất kỳ hình thức điểm chuẩn nào sử dụng truy cập đĩa, ví dụ bằng cách thêm "cat MYFILE>/dev/null" trước khi điểm chuẩn thực tế được thực thi để có được kết quả nhất quán.

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