Hiệu suất chậm trên ổ đĩa NTFS với số lượng tệp lớn


11

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.

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

  1. 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.

  2. 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?

  3. MFT có kích thước ~ 8,5 GB nhiều hơn bộ nhớ chính.


Để loại trừ điều gì đó, bạn có phiền khi chia sẻ ảnh chụp màn hình của RAMMap không?
Tomas Dabasinskas

Bạn có nghĩa là bảng Tóm tắt tệp? Bây giờ bạn đề cập đến nó, tôi thấy một tệp SYMEFA.DB có bộ nhớ 900 MB nhắc nhở tôi rằng Symantec Endpoint Protection được cài đặt trên hệ thống. Có lẽ đó là thủ phạm? Tôi sẽ cố gắng tìm hiểu thêm.
Paul B.

Trên thực tế, tôi đã quan tâm nhiều hơn đến việc sử dụng Metafile
Tomas Dabasinskas

OK đã nhận nó. Metafile hiển thị tổng cộng 250 MB, 40 hoạt động, 210 chế độ chờ. Có vẻ bình thường hay không?
Paul B.

Vâng, có vẻ như vậy
Tomas Dabasinskas

Câu trả lời:


5

Máy chủ không có đủ bộ nhớ. Thay vì lưu trữ dữ liệu siêu dữ liệu NTFS trong bộ nhớ, mỗi lần truy cập tệp yêu cầu nhiều lần đọc đĩa. Như thường lệ, vấn đề là rõ ràng một khi bạn nhìn thấy nó. Hãy để tôi chia sẻ những gì che mờ quan điểm của tôi:

  • Máy chủ hiển thị bộ nhớ 2 GB khả dụng cả trong Trình quản lý tác vụ và RamMap. Vì vậy, Windows đã quyết định rằng bộ nhớ khả dụng là không đủ để chứa một phần có ý nghĩa của dữ liệu siêu dữ liệu. Hoặc một số hạn chế nội bộ không cho phép sử dụng bit bộ nhớ cuối cùng cho dữ liệu siêu dữ liệu.

  • Sau khi nâng cấp Trình quản lý tác vụ RAM sẽ không hiển thị thêm bộ nhớ đang được sử dụng. Tuy nhiên, RamMap đã báo cáo nhiều GB dữ liệu siêu dữ liệu được lưu giữ dưới dạng dữ liệu dự phòng. Rõ ràng, dữ liệu dự phòng có thể có một tác động đáng kể.

Các công cụ được sử dụng để phân tích:

  • fsutil fsinfo ntfsinfo driveletter:để hiển thị kích thước MFT NTFS (hoặc NTFSInfo )
  • RamMap để hiển thị phân bổ bộ nhớ
  • Trình giám sát quy trình để hiển thị rằng mọi tệp được đọc trước khoảng 4 thao tác đọc để lái xe: \ $ Mft và ổ đĩa: \ $ Thư mục. Mặc dù tôi không thể tìm thấy định nghĩa chính xác của $ Directory nhưng dường như nó cũng liên quan đến MFT .

Vì vậy, tăng bộ nhớ vật lý đã cải thiện thời gian đáp ứng? Bạn đã không cấu hình bất kỳ cài đặt đăng ký?
D-Klotz

1
Đúng. Trước đây tôi đã chơi xung quanh với các thiết lập đăng ký. Nhưng cuối cùng, không cần thay đổi gì sau khi thêm bộ nhớ.
Paul B.

Bộ nhớ dự phòng là vùng nhớ sẵn sàng cho các chương trình sử dụng. Nhưng vì chúng chưa được sử dụng, nên HĐH sẽ sử dụng chúng làm bộ đệm. Khi bất kỳ chương trình nào cần bộ nhớ đó, nó sẽ được phát hành ngay lập tức
phuclv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.