Kurangi penggunaan memori "Metafile"?

8

Komputer kerja saya (Windows 7 64-bit) menghabiskan banyak waktu bertukar memori ketika saya beralih di antara beberapa program. Ini mengejutkan saya karena saya memiliki 4 GB RAM, dan program yang saya gunakan tidak terlalu lapar RAM (Outlook, Emacs, p4win, Firefox, berbagai alat membangun). Saya mengunduh RAMMap , dan itu menunjukkan lebih dari satu gigabyte memori yang digunakan oleh "Metafile".

Dari blog Sysinternals :

Metafile adalah bagian dari cache sistem dan terdiri dari metadata NTFS. Metadata NTFS termasuk MFT serta berbagai file metadata NTFS lainnya. ... Dalam MFT setiap record atribut file membutuhkan 1k dan setiap file memiliki setidaknya satu record atribut. Tambahkan ke ini file metadata NTFS lainnya dan Anda dapat melihat mengapa kategori Metafile dapat tumbuh cukup besar di server dengan banyak file.

Jadi saya mengerti apa itu "Metafile" data ... Saya bekerja pada build besar yang terdiri dari ratusan ribu file (tidak ada yang sebesar itu, tetapi mereka menambahkan hingga beberapa gigabytes). Pertanyaan saya adalah bagaimana saya bisa mengurangi jumlah memori yang digunakan oleh "Metafile"? Saya tidak aktif menggunakan semua file itu sekaligus, jadi mengapa Windows perlu menyimpan info dalam RAM? Me-restart mesin saya setiap kali saya menyinkronkan build baru benar-benar menjengkelkan.

Jay Conrod
sumber
4
Build bersifat intensif IO, dan karenanya Windows menyimpan cache sistem file yang besar untuk meningkatkan kinerja. Sayangnya, alat build juga menggunakan banyak memori dan biasanya dalam paku besar, yang mungkin menyebabkan swamping. Karena ini bersaing dengan cache sistem. Solusi terbaik mungkin dengan menambah lebih banyak memori.
tgiphil
@tgiphil, Dapat dimengerti bahwa banyak memori digunakan saat memeriksa atau membuat build. Namun, masih digunakan dan masih menyebabkan meronta-ronta nanti ketika saya hanya bekerja di daerah kecil. Sayangnya IT tidak akan memberi saya memori lagi.
Jay Conrod
Saya pikir Windows 7 sudah mengoptimalkan kinerja Anda dengan caching. Jadi untuk menambah memori yang tersedia dan untuk mengurangi swap, tutup semua aplikasi yang tidak perlu. Misalnya, Anda dapat memperoleh sebagian memori yang baik dengan menutup Outlook dan Firefox. Jika menggunakan Visual Studio dan hanya perlu mengkompilasi, cobalah membangun command line sebagai gantinya. Saya harap ini membantu. BTW. Dengan memori yang sangat rendah (6Gb di bawah $ 100), ini merupakan investasi produktivitas yang sangat baik.
tgiphil

Jawaban:

4

Saya percaya bahwa cache sistem melepaskan memorinya ketika diperlukan, tetapi gangguan dapat terjadi. Di bawah ini tercantum beberapa kemungkinan.

Sistem 64-bit Anda mengalokasikan memori video dalam memori 4GB pertama. Jadi, jika kartu video Anda memiliki banyak memori, memori itu hilang, seperti dijelaskan dalam:
Memori yang dapat digunakan mungkin kurang dari memori yang diinstal pada komputer berbasis Windows 7

Anda dapat memeriksa penggunaan memori di komputer dengan membuka Device Manager dan di bawah menu View, pilih "Resources by connection". Perluas simpul Memori dan lihat apakah Anda dapat mengetahui apa, jika ada, yang menempati memori. Dalam beberapa kasus, memori dapat ditingkatkan dengan menonaktifkan perangkat yang tidak digunakan seperti firewire.

Anda juga dapat mencoba dan melakukan kebalikan dari apa yang dijelaskan dalam artikel ini:
Meningkatkan Ukuran Cache Memori FileSystem Di Windows 7

Anda juga dapat mencoba Nonaktifkan Windows 7 SuperFetch .

Jika tidak ada yang membantu, akan berguna bagi Anda untuk mengirim tangkapan layar dari tab Task Manager bernama Performance.

harrymc
sumber
+1 untuk "Nonaktifkan Superfetch".
Tidak ada down grade, tetapi Superfetch kemungkinan besar meningkatkan kinerjanya - bukan menguranginya - karena build executable umumnya sering dieksekusi dan akan mendapat manfaat dari di-cache. Sedangkan untuk kartu video memengaruhi memori yang tersedia, itu tidak berlaku pada Windows 7 64bit dengan hanya 4Gb. Kartu video akan dipetakan di atas 4Gb, dalam hal ini.
tgiphil
@tgiphil: Dari artikel Microsoft yang dikutip di atas: "kartu video yang memiliki 256 MB memori terpasang, memori itu harus dipetakan dalam 4 GB ruang alamat pertama".
harrymc
Di organisasi saya, kami juga memiliki banyak file kecil dan metafile NTFS besar dalam RAM. Dari apa yang saya tahu, Windows tidak men-cache Metafile seperti yang lainnya dan tidak pernah benar-benar melepaskannya dari RAM. Komputer akan naik hingga 100% penggunaan memori dan kemudian semua aplikasi Anda mulai macet karena kekurangan memori. Tentu saja ini bukan Windows 7, ini Windows Server 2008 R2.
Phil
Juga tautan "Tingkatkan Memori Sistem File Cache" menyarankan hal-hal yang tidak benar-benar berfungsi. Lihat tweakhound.com/blog/?p=1164
Phil
0

Windows Server 2008 R2 mengalami masalah "cache" metafile yang persis sama, bahwa terlalu banyak info metafile disimpan dalam memori aktif, sehingga fungsi cache tidak memiliki izin untuk mengizinkan memori ini untuk dilepaskan ketika ada tekanan memori.

Saya telah menulis skrip PowerShell di halaman serverfault.com Windows Server 2008 R2 metafile penggunaan RAM yang menetapkan memori aktif metafile maksimum untuk sesuatu yang masuk akal. Sisanya dipindahkan ke memori siaga, dan fungsi cache normal kemudian dapat memprioritaskan hal-hal dengan tepat. Windows 7 x64 dan Server 2008 R2 x64 keduanya memiliki batas memori aktif maksimum default untuk data metafile 1TB. Ya TB, bukan GB.

Work sekarang menjalankan skrip itu di semua situs kami di server kami yang mengatur cadangan situs, yang menangani jutaan file selama siklus cadangannya setiap hari. Server cadangan ini juga menjalankan program java berat memori (VMware vSphere), 2 server SQL, dan WSUS dengan server SQL sendiri. Dengan perangkat lunak cadangan pertama-tama membaca metadata (nama, ukuran, tanggal dimodifikasi, izin, atribut, dll) untuk menentukan daftar file yang akan dicadangkan di dalamnya, SANGAT cepat mengisi cache metafile. Bahkan melakukan semua yang mereka lakukan dengan baik dengan hanya 4GB RAM.

BeowulfNode42
sumber