Bagikan melalui


Memecahkan Masalah Performa Cache dan Manajer Memori

Sebelum Windows Server 2012, dua potensi masalah utama menyebabkan cache file sistem tumbuh sampai memori yang tersedia hampir habis di bawah beban kerja tertentu. Ketika situasi ini mengakibatkan sistem menjadi lamban, Anda dapat menentukan apakah server menghadapi salah satu masalah ini.

Penghitung untuk dipantau

  • Memori\Masa Pakai Siaga Rata-Rata Jangka Panjang Siaga (s) < 1800 detik

  • Memori\Tersedia (dalam Byte, KByte, atau MBytes)

  • Memori\Byte Residen Cache Sistem

Jika Memory\Available Mbytes rendah dan pada saat yang sama Memory\System Cache Resident Bytes mengonsumsi bagian signifikan dari memori fisik, Anda dapat menggunakan RAMMAP untuk mengetahui untuk apa cache digunakan.

Cache file sistem berisi struktur data metafile NTFS

Masalah ini ditunjukkan oleh tingginya jumlah halaman Metafile aktif dalam output RAMMAP, seperti yang ditunjukkan pada gambar berikut. Masalah ini mungkin telah diamati di server sibuk dengan jutaan file diakses, sehingga mengakibatkan penembolokan data metafile NTFS tidak dirilis dari cache.

rammap view

Masalah yang digunakan untuk dimitigasi oleh alat DynCache . Di Windows Server 2012+, arsitektur telah dirancang ulang dan masalah ini seharusnya tidak ada lagi.

Cache file sistem berisi file yang dipetakan memori

Masalah ini ditunjukkan oleh tingginya jumlah halaman file aktif yang dipetakan dalam output RAMMAP. Ini biasanya menunjukkan bahwa beberapa aplikasi di server membuka banyak file besar menggunakan CreateFile API dengan FILE_FLAG_RANDOM_ACCESS set bendera.

Masalah ini dijelaskan secara rinci dalam artikel KB 2549369. FILE_FLAG_RANDOM_ACCESS bendera adalah petunjuk bagi Cache Manager untuk menyimpan tampilan file yang dipetakan dalam memori selama mungkin (sampai Memory Manager tidak memberi sinyal kondisi memori rendah). Pada saat yang sama, bendera ini menginstruksikan Cache Manager untuk menonaktifkan prefetching data file.

Situasi ini telah dimitigasi sampai batas tertentu dengan penyempurnaan pemangkasan set kerja di Windows Server 2012+, tetapi masalah itu sendiri harus ditangani terutama oleh vendor aplikasi dengan tidak menggunakan FILE_FLAG_RANDOM_ACCESS. Solusi alternatif untuk vendor aplikasi mungkin menggunakan prioritas memori rendah saat mengakses file. Ini dapat dicapai menggunakan API SetThreadInformation . Halaman yang diakses dengan prioritas memori rendah dihapus dari set kerja dengan lebih agresif.

Manajer Cache, mulai Windows Server 2016 lebih lanjut mengurangi ini dengan mengabaikan FILE_FLAG_RANDOM_ACCESS saat membuat keputusan pemangkasan, sehingga diperlakukan sama seperti file lain yang dibuka tanpa FILE_FLAG_RANDOM_ACCESS bendera (Manajer Cache masih menghormati bendera ini untuk menonaktifkan pengambilan data file sebelumnya). Anda masih dapat menyebabkan penembolokan cache sistem jika Anda memiliki sejumlah besar file yang dibuka dengan bendera ini dan diakses dengan cara yang benar-benar acak. Sangat disarankan agar FILE_FLAG_RANDOM_ACCESS tidak digunakan oleh aplikasi.

Ambang halaman kotor file jarak jauh terlampaui secara konsisten

Masalah ini ditunjukkan jika sistem mengalami perlambatan sesekali selama penulisan dari klien jarak jauh. Masalah ini mungkin terjadi ketika sejumlah besar data ditulis dari klien jarak jauh yang cepat ke tujuan server yang lambat.

Sebelum Windows Server 2016, dalam skenario seperti itu, jika ambang halaman kotor dalam cache tercapai, penulisan lebih lanjut akan berperilaku seolah-olah ada write-through. Ini dapat menyebabkan flush sejumlah besar data ke disk, yang dapat menyebabkan penundaan panjang jika penyimpanan lambat, mengakibatkan batas waktu untuk koneksi jarak jauh.

Di Window Server 2016 dan ke depan, mitigasi diberlakukan untuk mengurangi kemungkinan waktu habis. Ambang halaman kotor terpisah untuk penulisan jarak jauh diimplementasikan, dan flush sebaris akan dilakukan ketika terlampaui. Ini dapat mengakibatkan perlambatan sesekali selama aktivitas penulisan yang berat, tetapi menghilangkan risiko batas waktu dalam banyak kasus. Ambang halaman kotor jarak jauh ini adalah 5 GB per file secara default. Untuk beberapa konfigurasi dan beban kerja, angka yang berbeda berkinerja lebih baik.

Jika ukuran default 5 GB tidak berfungsi dengan baik untuk konfigurasi Anda, disarankan untuk mencoba meningkatkan batas dalam kenaikan 256-MB hingga performa memuaskan. Perhatikan hal-hal berikut:

  • Reboot diperlukan agar perubahan pada kunci registri ini diterapkan.

  • Unit RemoteFileDirtyPageThreshold adalah jumlah halaman (dengan ukuran halaman seperti yang dikelola oleh Cache Manager). Ini berarti harus diatur ke ukuran yang diinginkan dalam byte, dibagi dengan 4096.

  • Nilai yang direkomendasikan adalah 128 MB <= N <= 50% dari memori yang tersedia.

  • Ambang ini dapat dinonaktifkan sepenuhnya dengan mengaturnya ke -1. Ini tidak disarankan karena dapat mengakibatkan batas waktu untuk koneksi jarak jauh.

Misalnya, jika Anda ingin menetapkan batas ke 10GiB yaitu 10.737.418.240 byte / 4096 = 2.621.440 yang merupakan nilai DWORD desimal 2621440.

Ambang ini dapat dikontrol menggunakan nilai registri berikut.

  • Kunci: HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
    • Jenis: DWORD
    • Nama nilai: RemoteFileDirtyPageThreshold
    • Data nilai: Desimal - Jumlah halaman (ukuran halaman seperti yang dikelola oleh Cache Manager).