Kinerja lambat pada drive NTFS dengan sejumlah besar file

12

Saya melihat pengaturan ini:

  • Windows Server 2012
  • Drive 1 TB NTFS, 4 kluster KB, ~ 90% penuh
  • ~ 10 juta file disimpan dalam 10.000 folder = ~ 1.000 file / folder
  • File sebagian besar cukup kecil <50 KB
  • Drive virtual di-host pada larik disk

Ketika suatu aplikasi mengakses file yang disimpan dalam folder acak, dibutuhkan 60-100 ms untuk membaca setiap file. Dengan alat uji, tampaknya penundaan terjadi saat membuka file. Membaca data maka hanya membutuhkan sebagian kecil dari waktu.

Singkatnya ini berarti bahwa membaca 50 file dapat dengan mudah mengambil 3-4 detik yang jauh lebih dari yang diharapkan. Penulisan dilakukan dalam batch sehingga kinerja tidak menjadi masalah di sini.

Saya sudah mengikuti saran tentang SO dan SF untuk sampai pada angka-angka ini.

Apa yang harus dilakukan tentang waktu baca?

  • Anggap 60-100 ms per file tidak masalah (bukan, bukan?)
  • Adakah ide bagaimana pengaturan dapat ditingkatkan?
  • Apakah ada alat pemantauan tingkat rendah yang dapat mengetahui dengan tepat waktu yang dihabiskan?

MEMPERBARUI

  1. Seperti disebutkan dalam komentar, sistem menjalankan Symantec Endpoint Protection. Namun, menonaktifkannya tidak mengubah waktu baca.

  2. PerfMon mengukur 10-20 ms per baca. Ini berarti bahwa setiap file yang dibaca membutuhkan operasi ~ 6 I / O, kan? Apakah ini pemeriksaan MFT dan ACL?

  3. MFT memiliki ukuran ~ 8,5 GB yang lebih dari memori utama.

Paul B.
sumber
Untuk mengesampingkan sesuatu, maukah Anda berbagi tangkapan layar RAMMap ?
Tomas Dabasinskas
Apakah maksud Anda tabel Ringkasan File? Sekarang setelah Anda menyebutkannya, saya melihat file SYMEFA.DB dengan memori 900 MB yang mengingatkan saya bahwa Symantec Endpoint Protection diinstal pada sistem. Mungkin itu pelakunya? Saya akan mencoba mencari tahu lebih lanjut.
Paul B.
Sebenarnya, saya lebih tertarik pada penggunaan Metafile
Tomas Dabasinskas
OK mengerti. Metafile menunjukkan total 250 MB, 40 aktif, 210 siaga. Tampak normal atau tidak?
Paul B.
Ya, sepertinya begitu
Tomas Dabasinskas

Jawaban:

5

Server tidak memiliki cukup memori. Alih-alih melakukan caching data metafile NTFS dalam memori setiap akses file diperlukan banyak pembacaan disk. Seperti biasa, masalahnya sudah jelas begitu Anda melihatnya. Biarkan saya berbagi apa yang mengaburkan perspektif saya:

  • Server menunjukkan 2 GB memori yang tersedia di Task Manager dan RamMap. Jadi Windows memutuskan bahwa memori yang tersedia tidak cukup untuk menyimpan bagian yang bermakna dari data metafile. Atau beberapa batasan internal tidak memungkinkan untuk menggunakan bit memori terakhir untuk data metafile.

  • Setelah memutakhirkan, Pengelola Tugas RAM tidak akan menunjukkan lebih banyak memori yang digunakan. Namun, RamMap melaporkan beberapa GB data metafile ditahan sebagai data siaga. Rupanya, data siaga dapat berdampak besar.

Alat yang digunakan untuk analisis:

  • fsutil fsinfo ntfsinfo driveletter:untuk menampilkan ukuran MFT NTFS (atau NTFSInfo )
  • RamMap untuk menunjukkan alokasi memori
  • Proses Monitor untuk menunjukkan bahwa setiap pembacaan file didahului oleh sekitar 4 operasi pembacaan ke drive: \ $ Mft dan drive: \ $ Directory. Meskipun saya tidak dapat menemukan definisi yang pasti dari $ Directory, sepertinya ini berkaitan dengan MFT juga.
Paul B.
sumber
Jadi peningkatan memori fisik tidak meningkatkan waktu respons? Anda tidak mengonfigurasi pengaturan registri apa pun?
D-Klotz
1
Iya. Saya sebelumnya bermain-main dengan pengaturan registri. Tetapi pada akhirnya tidak ada perubahan yang diperlukan setelah menambahkan memori.
Paul B.
Memori siaga adalah wilayah memori yang siap digunakan oleh program. Tetapi karena mereka belum digunakan, OS akan menggunakannya sebagai cache. Setelah setiap program membutuhkan memori itu akan segera dirilis
phuclv