Tôi đang xem thiết lập này:
- Máy chủ Windows 2012
- Ổ đĩa NTFS 1 TB, cụm 4 KB, ~ 90% đầy đủ
- ~ 10 triệu tệp được lưu trữ trong 10.000 thư mục = ~ 1.000 tệp / thư mục
- Các tệp hầu hết khá nhỏ <50 KB
- Ổ đĩa ảo được lưu trữ trên mảng đĩa
Khi một ứng dụng truy cập các tệp được lưu trữ trong các thư mục ngẫu nhiên, phải mất 60-100 ms để đọc từng tệp. Với một công cụ kiểm tra có vẻ như sự chậm trễ xảy ra khi mở tệp. Đọc dữ liệu sau đó chỉ mất một phần thời gian.
Tóm lại, điều này có nghĩa là việc đọc 50 tệp có thể dễ dàng mất 3-4 giây, nhiều hơn dự kiến. Viết được thực hiện theo lô để hiệu suất không phải là một vấn đề ở đây.
Tôi đã làm theo lời khuyên về SO và SF để đến những con số này.
- Sử dụng các thư mục để giảm số lượng tệp trên mỗi thư mục ( Lưu trữ một triệu hình ảnh trong hệ thống tệp )
- Chạy
contig
để chống phân mảnh thư mục và tệp ( /programming//a/291292/1059776 ) - 8.3 tên và thời gian truy cập cuối bị vô hiệu hóa (Định cấu hình hệ thống tệp NTFS để thực hiện )
Làm gì về thời gian đọc?
- Hãy xem xét 60-100 ms cho mỗi tệp là ổn (không phải vậy sao?)
- Bất kỳ ý tưởng làm thế nào thiết lập có thể được cải thiện?
- Có công cụ giám sát cấp thấp nào có thể cho biết chính xác thời gian dành cho việc gì không?
CẬP NHẬT
Như đã đề cập trong các bình luận, hệ thống chạy Symantec Endpoint Protection. Tuy nhiên, vô hiệu hóa nó không thay đổi thời gian đọc.
PerfMon đo 10-20 ms mỗi lần đọc. Điều này có nghĩa là bất kỳ tập tin đọc nào cũng mất ~ 6 thao tác đọc I / O, phải không? Đây sẽ là tra cứu MFT và kiểm tra ACL?
MFT có kích thước ~ 8,5 GB nhiều hơn bộ nhớ chính.