Tôi đã làm một số thử nghiệm và có một số kết quả. Các thử nghiệm được thực hiện trên 100Mbps & 1Gbps NIC. Máy nguồn là máy chủ Win2K3 (SATA) và máy đích là máy chủ Win2k3 (RAID 5).
tôi chạy 3 kiểm tra:
1) Mạng đọc -> Chương trình này chỉ đọc các file trên mạng. Mục đích của chương trình là tìm tốc độ đọc n/w tối đa. Tôi đang thực hiện một NON BUFFERED lần đọc bằng cách sử dụng CreateFile & ReadFile.
2) Trình ghi đĩa -> Chương trình này đánh giá tốc độ RAID 5 bằng cách ghi dữ liệu. NON BUFFERED viết được thực hiện bằng cách sử dụng CreateFile & WriteFile.
3) Blitz Copy -> Chương trình này là công cụ sao chép tệp. Nó sao chép các tập tin trên mạng. Logic của chương trình này đã được thảo luận trong câu hỏi ban đầu. Tôi đang sử dụng I/O đồng bộ với NO_BUFFERING Reads & Viết. Các API được sử dụng là CreateFile, ReadFile & WriteFile.
Dưới đây là kết quả:
NETWORK READER: -
100 Mbps NIC
Đã 148.344 ms đọc 768 MB với kích thước đoạn 8 KB.
Took 89.359 ms đọc 768 MB với kích thước đoạn 64 KB
Took 82.625 ms đọc 768 MB với kích thước đoạn 128 KB
Took 79.594 ms đọc 768 MB với chunk size 256 KB
Mất 78687 ms để đọc 768 MB với kích thước chunk 512 KB
Took 79.078 ms đọc 768 MB với kích thước đoạn 1024 KB
Took 78.594 ms đọc 768 MB với kích thước đoạn 2048 KB
Took 78.406 ms đọc 768 MB với kích thước đoạn 4096 KB
Took 78.281 ms đọc 768 MB với kích thước đoạn 8192 KB
1 Gbps NIC
Đã 206.203 ms để đọc 5120 MB (5GB) với kích thước đoạn 8 KB
Took 77.860 ms để đọc 5120 MB với kích thước đoạn 64 KB
Đã đọc 74531 mili giây để đọc 5120 MB với kích thước chunk 128 KB
Took 68656 ms để đọc 5120 MB với kích thước chunk 256 KB
Took 64.922 ms để đọc 5120 MB với kích thước đoạn 512 KB
Took 66.312 ms để đọc 5120 MB với kích thước đoạn 1024 KB
Took 68.688 ms để đọc 5120 MB với chunk size 2048 KB
Mất 64922 ms để đọc 5120 MB với kích thước chunk 4096 KB
Took 66.047 ms để đọc 5120 MB với kích thước đoạn 8192 KB
DISK WRITER: -
Viết thực hiện trên RAID 5 Với NO_BUFFERING & WRITE_THROUGH
Viết 2048MB (2GB) dữ liệu với kích thước chunk 4MB mất 68328ms.
Viết 2048MB dữ liệu với kích thước chunk 8MB mất 55985ms.
Viết 2048MB dữ liệu với kích thước chunk 16MB mất 49569ms.
Viết 2048MB dữ liệu với kích thước chunk 32MB mất 47281ms.
Viết thực hiện trên RAID 5 Với NO_BUFFERING chỉ
Viết 2048MB (2GB) dữ liệu với kích thước đoạn 4MB mất 57484ms.
Viết 2048MB dữ liệu với kích thước chunk 8MB mất 52594ms.
Viết 2048MB dữ liệu với kích thước chunk 16MB mất 49125ms.
Viết 2048MB dữ liệu với kích thước chunk 32MB mất 46360ms.
Viết hiệu suất làm giảm tuyến tính khi kích thước đoạn văn bản giảm. Và WRITE_THROUGH cờ giới thiệu một số hiệu suất trúng
BLITZ COPY: -
1 Gbps NIC, Sao chép 60 GB bộ file với NO_BUFFERING
gian thực hiện để hoàn thành bản sao: 2.236.735 ms. Tức là, 37,2 phút. Tốc độ là ~ 97 GB/mỗi.
100 Mbps NIC, Sao chép 60 GB bộ file với NO_BUFFERING
gian thực hiện để hoàn thành bản sao: 7.337.219 ms. Tức là, 122 phút. Tốc độ là ~ 30 GB/mỗi.
Tôi đã thử sử dụng chương trình 10 FileCopy của Jeffrey Ritcher sử dụng Async-IO với NO_BUFFERING. Nhưng, kết quả rất kém. Tôi đoán lý do có thể là kích thước chunk là 256 KB ... 256 KB ghi trên RAID 5 là khủng khiếp chậm.
So sánh với robocopy:
100 Mbps NIC: Blitz Sao chép và robocopy thực hiện @ ~ 30 GB mỗi giờ.
1 GBps NIC: Blitz Sao chép chuyển @ ~ 97 GB mỗi giờ trong khi robocopy @ ~ 50 GB mỗi giờ.
Bạn có thể muốn đăng một số mã, để biến điều này thành câu hỏi lập trình; nếu không, nó có khả năng được chuyển đến serverfault.com. – RickNZ
Chờ, 44MB mỗi giây? Đó không phải là loại thông lượng bền vững mà bạn có nghĩa vụ phải mua một đĩa đơn ngày nay sao? –
@Pascal: RAID 5 không được tối ưu hóa cho tốc độ ghi. Tôi ngạc nhiên khi bạn thậm chí còn nhận được 44MB/s. Tôi đã mong đợi thấp hơn. – jalf