Defragmenter Windows 8?

17

Sepertinya defragperintah Windows 8 memiliki beberapa opsi baru, termasuk:

/K Lakukan konsolidasi lempengan pada volume yang ditentukan.

Adakah yang tahu apa artinya ini dalam bahasa Inggris?

pengguna541686
sumber

Jawaban:

7

PDF ini tampaknya memiliki penjelasan tentang ini, bersama dengan fitur NTFS baru.

Ia mengatakan:

  • Konsolidasi Slab

    • Mendefrag file secara efisien untuk meminimalkan jumlah slab yang dialokasikan

    • Slab adalah unit alokasi pada volume yang disediakan tipis

    • Membutuhkan dukungan untuk IOCTL_STORAGE_QUERY_PROPERTYmeminta ID properti dari:StorageDeviceLBProvisioningProperty

      • Mengambil ukuran slab volume
pengguna541686
sumber
3

Saya tidak dapat menemukan apa pun yang secara khusus menjelaskan apa artinya ini dalam konteks defragmenter Windows 8. Tapi "konsolidasi slab" umumnya mengacu pada objek bergerak sehingga objek yang dibulatkan ke ukuran alokasi yang sama ditempatkan bersama.

Manfaat melakukan ini biasanya sangat minim. Tapi itu cenderung mengurangi waktu pencarian rata-rata ketika sejumlah besar objek kecil diakses.

David Schwartz
sumber
0

Sebenarnya saya tidak berpikir slab dibuat untuk menyesuaikan alokasi banyak file dengan ukuran yang sama untuk mengurangi waktu pencarian rata-rata.

Pendapat saya adalah bahwa ini digunakan untuk mengurangi latensi untuk alokasi pada volume besar yang sebaliknya akan menyebabkan terlalu banyak akses bersamaan dengan utas paralel ketika mereka perlu mengalokasikan ruang pada volume, karena ini akan menempatkan kunci pada bagian yang sama dari alokasi volume bitmap. Untuk menghindari pemrosesan bitmap yang besar, bitmap dapat dibagi lagi menjadi "lempengan" yang ukurannya dalam bit mewakili area contibusous pada disk menggunakan fragmen bitmap yang sama (menempati setidaknya 1 atau lebih cluster; jika ukuran cluster Anda jika 4KB, cluster di bitmap mewakili 4K * 8 = 32K cluster yang dapat dialokasikan, yaitu 128 MB penyimpanan os; ukuran slab sebenarnya dalam volume disetel antara 33 dan 64, memungkinkan sekitar 33 utas bersamaan untuk mengalokasikan ruang dalam bitmap pada dist tanpa memblokir satu sama lain)

Jadi lempengan digunakan untuk mempercepat alokasi ruang pada volume, dengan asumsi bahwa utas membuat banyak file akan melakukannya paling sering di dalam lempengannya sendiri, sebelum membuka kunci dan mencoba lempengan lain, atau mencoba dengan mengalokasikan jumlah yang lebih kecil dalam lempengan saat ini, sebelum mencoba slab non-terkunci lain yang tersedia, dan kemudian mencoba merangkap akses ke slab yang saat ini digunakan oleh utas lain.

Ini menjelaskan mengapa alokasi pada disk "menyebar" di seluruh volume. Juga ini menjelaskan mengapa MFT pada NTFS memiliki setidaknya 2 fragmen, milik lempengan lain, karena menghindari penguncian parah antara banyak thread menggunakan volume. Anda dapat mendefrag MFT tetapi akan tetap setidaknya satu fragmen disimpan di "area yang dicadangkan" untuk alokasi bersamaan yang harus menghindari melakukan pemblokiran I / O pada volume NTFS).

Di masa lalu, volume NTFS tidak dibagi menjadi beberapa slab, dan ada penalti kinerja yang sangat besar dengan banyak pemblokiran ulir dan terlalu banyak sakelar ulir dalam kernel yang menunggu penyelesaian I / O (bahkan jika alokasi dalam bitmap sebenarnya sangat cepat dan membutuhkan nanodetik karena sebagian besar bagian menarik dari bitmap adalah laready di-cache dalam memori). Ketika menulis pada volume kemudian dibilas, dan dijurnal, ada kunci lain yang terjadi karena alokasi pada jurnal, sehingga jurnal sekarang menggunakan juga slab terpisah pada volume (jika mungkin).

Tapi saya tidak berpikir bahwa NTFS mendedikasikan slab untuk file dengan ukuran tertentu. NTFS secara internal akan sedikit mendefragmentasi pelat ketika data dihapus dan ukurannya yang dialokasikan turun di bawah beberapa ambang batas dan dua pelat tersebut dapat digabungkan.

Anda bisa mendapatkan info tentang ukuran pelat dengan:

fsutil fsinfo ntfsinfo c:

Jelas pelat adalah parameter penyetelan yang dimaksudkan untuk kinerja. Tetapi banyak alat defragmentasi pihak ketiga mengabaikan pengaturan ini dan tidak menggunakan penempatan optimal. Idealnya Anda harus memiliki ruang kosong di setiap lempengan volume, kecuali jika lempengan penuh dengan file dan indeks yang tidak dialokasikan kembali dan harus tetap stabil. Untuk banyak file temporer kecil dan transaksi yang terus-menerus dibuat dan didaur ulang, Anda perlu menempatkannya dalam lembaran yang cukup tergantung pada jumlah utas bersamaan dan hindari menempatkannya terlalu jauh dari kluster lain yang perlu dibaca jika volumenya adalah hard disk atau array RAID (ini tidak masalah pada SSD).

Slab juga dapat berguna untuk sistem file jarak jauh tetapi ukuran optimalnya sulit diprediksi. Pelat di sisi sebaliknya sangat kecil untuk volume yang berbeda dari volume tervirtualisasi hierarkis dan ada strategi penempatan yang sangat berbeda, memberikan bahwa alokasi adalah virtual dan dipetakan kembali ke tempat fisik yang berbeda.

Kami masih memerlukan info dari Microsoft tentang parameter penyetelan berikut dalam registri:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\SlabifyFunction]
MinimumReclaimSlabsMB      = REG_DWORD: 10240
MinimumReclaimSlabsPercent = REG_DWORD: 10
SlabEvictUpperBoundKB      = REG_DWORD: 204800
SlabEvictUpperBoundPercent = REG_DWORD: 20

Saya pikir ini dibiarkan tidak didokumentasikan dengan sengaja karena Microsoft masih berpikir tentang mengubah strategi penempatan dan dapat mengubahnya dari waktu ke waktu. Mereka tidak diekspos oleh API, Anda hanya menemukan bukti mereka di registri dan dalam implementasi kode sumber internal driver NTFS.

Yang kita tahu adalah bahwa slab diekspos secara singkat oleh parameter "/ K" dari alat baris perintah DEFRAG.EXE, yang tidak terlalu detail. Tetapi mudah untuk mengamati bahwa / optimasi K memberikan keuntungan kinerja besar setelah instalasi awal Windows (bahkan sebelum optimasi Bootvis dibuat setelah 6 reboot dan pengukuran). Ada juga parameter / L yang terkait dengan pemotongan pada SSD.

verdy_p
sumber