Qua kết nối gigabit, Teracopy có tốc độ 31MB / s, nhưng Windows 8 có tốc độ ~ 109 MB mỗi giây?
Chính xác thì điều gì gây ra điều này? Và tôi có thể kích hoạt tốc độ như vậy thông qua Teracopy không? Tôi thực sự đào các tính năng bổ sung mà Teracopy có, chắc chắn sẽ bỏ lỡ chúng ngay bây giờ: D
Hai từ: xác minh và bộ đệm
Giải thích kỹ thuật
Đây là quy trình chung để sao chép tệp bằng Windows Explorer:
- Đọc một đoạn dữ liệu từ ổ đĩa nguồn vào bộ nhớ
- Gửi chunk thông qua (các) hệ thống
- Viết đoạn mã vào ổ đĩa đích
- Nếu chưa xong, quay lại bước 1
Điều này có vẻ đơn giản và đủ ngắn. Với thuật toán chuyển này, mỗi byte của tệp chỉ được xử lý hai lần: một lần đọc, một lần ghi.
Nhưng ngoài ra, Windows sử dụng bộ nhớ (cũng như ổ đĩa) để lưu trữ một số dữ liệu. Vì vậy, thay vì chờ đoạn trước đó hoàn thành việc viết, và sau đó đọc đoạn tiếp theo, một đoạn mới có thể được đọc trong khi đoạn trước vẫn đang được viết. Rõ ràng điều này không thể giữ được mãi mãi, nhưng Windows có thể sử dụng tất cả bộ nhớ còn lại như một bộ đệm tạm thời để lưu trữ hầu hết, nếu không phải là tất cả các tệp đang được đọc trong bộ nhớ.
Bạn có thể thấy bộ nhớ đệm đang hoạt động bằng cách sao chép một tập tin lớn hoặc một thư mục chứa rất nhiều tập tin từ một ổ đĩa này sang ổ đĩa khác, sau đó so sánh ngay lập tức cả hai. Việc so sánh sẽ nhanh hơn nhiều vào thời điểm đó so với việc bạn thực hiện sau đó vì (các) tệp vẫn còn trong bộ nhớ, vì vậy nó không thực sự đọc chúng từ (các) ổ đĩa.
Vì bộ nhớ rất nhanh và tốc độ đọc có xu hướng nhanh hơn một chút so với tốc độ ghi, tốc độ truyền cuối cùng chỉ bị giới hạn bởi tốc độ ghi của ổ đĩa đích.
Teracopy có thể thực hiện hai điều có thể làm chậm quá trình truyền tệp mà Explorer không thực hiện:
Không giống như Explorer chỉ kiểm tra các lỗi cơ bản trong quá trình truyền, Teracopy thực sự có thể xác minh rằng dữ liệu được ghi chính xác vào ổ đĩa đích để ngăn ngừa hỏng dữ liệu có thể xảy ra do sự cố trong phương tiện truyền tải (mạng / cáp ổ đĩa / v.v. ) hoặc chính ổ đĩa (bad sector, v.v.) Làm điều này có nghĩa là nó phải đọc tệp từ đích để so sánh nó với bản gốc.
Tùy thuộc vào thuật toán được sử dụng và kích thước của tệp, xác minh có thể được tối ưu hóa ở mức thấp (nhưng không ít hơn) ba thao tác ổ đĩa cho mỗi tệp / tệp dữ liệu trái ngược với hai của Explorer: đọc tệp từ nguồn, ghi tập tin đến đích và đọc tập tin từ đích.
Hãy xem điều gì xảy ra khi bạn sao chép một tệp bằng Teracopy (với thuật toán được tối ưu hóa cho ổ cứng):
- Đọc một đoạn từ ổ đĩa nguồn
- Hash băm đọc từ ổ đĩa nguồn
- Gửi chunk thông qua (các) hệ thống
- Viết nó vào ổ đĩa đích
- Xóa bộ nhớ cache
- Đọc đoạn mã trở lại từ ổ đĩa đích
- Băm chunk từ ổ đĩa đích
- So sánh băm
- Xác định bước tiếp theo
- Nếu băm không khớp, đưa ra lỗi và nhắc người dùng hành động
- Nếu băm khớp và không kết thúc, quay lại bước 1
Vấn đề là nếu bạn lưu trữ các tệp trong quá trình truyền, việc so sánh trở nên vô ích vì bạn không đọc dữ liệu thực tế trên ổ đĩa đích, bạn đang đọc bản sao được lưu trong bộ nhớ cache từ nguồn. Do đó, để xác minh đúng, bạn phải xóa bộ đệm. Điều này có thể được thực hiện sau mỗi lần đọc và ghi (đây là một thao tác bổ sung cuối cùng sẽ được thực hiện vô số lần đối với các tệp có kích thước đáng kể) hoặc chỉ một lần sau khi toàn bộ tệp được chuyển.
Theo ảnh chụp màn hình bên dưới, TeraCopy thực hiện xác minh sau khi các tệp được chuyển, không phải trong thời gian. Điều này có nghĩa là nó sử dụng thuật toán chuyển tối ưu hóa CPU / RAM này:
- Đọc một đoạn từ ổ đĩa nguồn
- Gửi chunk thông qua (các) hệ thống
- Viết nó vào ổ đĩa đích
- Nếu chưa xong, quay lại bước 1
- Sao chép xong, để xóa bộ nhớ cache và được xác minh
- Đọc một đoạn từ ổ đĩa nguồn
- Băm chunk từ ổ đĩa đích
- Đọc một đoạn từ ổ đĩa đích
- Băm chunk từ ổ đĩa đích
- So sánh băm
- Xác định bước tiếp theo
- Nếu băm không khớp, đưa ra lỗi và nhắc người dùng hành động
- Nếu băm khớp và không kết thúc, quay lại bước 6
Mặc dù thuật toán này làm giảm ít hơn một chút cho CPU và RAM, nhưng nó cũng gây ra sự căng thẳng hơn cho (các) ổ đĩa vì bây giờ mỗi tệp phải được xử lý bốn lần: đọc toàn bộ tệp từ nguồn, ghi vào đích , sau đó đọc lại từ nguồn và một lần nữa từ đích.
(Nếu TeraCopy được tối ưu hóa cho chuyển mạng, thì nó có thể tránh gửi toàn bộ tệp lần thứ hai để xác minh và chỉ gửi các giá trị băm nhỏ hơn nhiều, nhưng hiện tại không phải là trường hợp và trình điều khiển mạng được xử lý như nhau là ổ đĩa cục bộ, vì vậy nó thực sự đọc lại nguồn.)
Theo mặc định, TeraCopy không xác minh hoặc sử dụng bộ đệm. Không xác minh sẽ tăng tốc độ truyền lên (hoặc chính xác hơn, không làm chậm nó), trong khi không sử dụng bộ đệm sẽ làm chậm nó.
Ứng dụng
Để xác định kết quả tốc độ cụ thể của bạn, bạn sẽ phải kiểm tra cài đặt của mình để xem bạn đã thay đổi chúng chưa. Sau đó, bạn có thể thử tính gần đúng loại tốc độ bạn sẽ nhận được với các cài đặt khác nhau (lưu ý rằng chúng có thể sẽ tương tác, vì vậy việc thêm hoặc bớt) không phải là vấn đề đơn giản.
Điều đó nói rằng, hãy thực hiện một phép tính chữ thảo bằng cách sử dụng các số của bạn:
- Truyền tệp cục bộ: 875Mbps (tức là tốc độ ổ đĩa)
- Tốc độ mạng: 1Gbps = 119,21 MBps
- Sao chép qua Windows Explorer: 109MBps
- Sao chép qua TeraCopy: 34MBps
Ngay lập tức, chúng tôi thấy rằng việc truyền tệp của Explorer gần như tối đa hóa thông lượng mạng của bạn. Một 1Gbps liên kết là tương đương với 1000000000 bit mỗi giây, do đó đơn vị nhị phân của byte , là 119MBps. Explorer đang có tốc độ 109MBps và 10 MBps còn lại (đủ đáng ngạc nhiên là mức tối đa trước đó của bạn :^Þ
) có thể dễ dàng được tính bằng chi phí, tải nền và phân mảnh.
(Vì tốc độ truyền gần bằng tốc độ mạng, chúng tôi có thể phỏng đoán rằng việc truyền tệp của Explorer là một chiều và chỉ một bản sao duy nhất của mỗi tệp được gửi.) Explorer nhận được 110MBps cho hai lần truy cập tệp cho mỗi tệp.
Bây giờ cho TeraCopy. Có vẻ như TeraCopy đang nhận được gần như một phần ba tốc độ của Explorer.
Tùy thuộc vào việc hộp thoại tùy chọn của nó có biểu thị chính xác thuật toán mà nó sử dụng hay không, thì TeraCopy thực sự có thể gửi toàn bộ tệp nguồn hai lần để nó có thể kiểm tra bản sao. Ngay lập tức, điều này cắt giảm thông lượng một nửa. Nếu bộ đệm được bật, thì điều đó cũng làm giảm tốc độ vì nó phải đợi cho mỗi lần ghi hoàn thành trước khi nó có thể gửi một đoạn mới. Khi kết hợp với xác minh, nó có thể hạ gục nó nhiều hơn.
Tốc độ truyền 34MBps của bạn có vẻ hợp lý nếu bạn đã xác minh và tắt bộ đệm. Nếu bạn tắt xác minh và lưu vào bộ đệm, bạn sẽ nhận được giống như Explorer (bạn vẫn có thể nhận được ít hơn hoặc thậm chí nhiều hơn một chút tùy thuộc vào mức độ khác nhau của mã chuyển tệp mà TeraCopy sử dụng là từ mà Explorer sử dụng).
Nếu bạn có tâm trạng chuyển gần 10 GB, thì bạn cũng có thể thử thay đổi cài đặt và thực hiện lại việc chuyển cho từng trong bốn hoán vị và ghi lại tốc độ bạn nhận được (để an toàn, hãy đặt hàng để bộ nhớ cache được tắt giữa các lần chạy V+C+, V+C-, V-C+, V-C-
:).