Bagikan melalui


BypassIO dalam driver penyimpanan

Tentang BypassIO

Mulai Windows 11, BypassIO ditambahkan sebagai jalur I/O yang dioptimalkan untuk membaca dari file. Tujuan dari jalur ini adalah untuk mengurangi overhead CPU dalam melakukan bacaan, yang membantu memenuhi tuntutan I/O untuk memuat dan menjalankan game generasi berikutnya di Windows. BypassIO adalah bagian dari infrastruktur untuk mendukung DirectStorage di Windows.

Penting bagi driver penyimpanan untuk menerapkan dukungan untuk BypassIO, dan Anda mengaktifkan BypassIO sebanyak mungkin. Tanpa dukungan tumpukan penyimpanan, performa game terdegradasi, mengakibatkan pengalaman bermain game yang buruk bagi pengguna akhir.

Akan ada penggunaan aplikasi yang lebih luas di luar game dalam rilis Windows mendatang.

IOCTL_STORAGE_MANAGE_BYPASS_IO dan FSCTL_MANAGE_BYPASS_IO yang setara ditambahkan sebagai bagian dari infrastruktur ini. IOCTL_STORAGE_MANAGE_BYPASS_IO dikirim oleh sistem file ke tumpukan volume/penyimpanan, sementara minifilter memproses FSCTL_MANAGE_BYPASS_IO. Kode kontrol ini dirancang agar dapat didiagnosis: keduanya mengembalikan identitas driver yang gagal permintaan BypassIO, dan alasan untuk mem-vetonya.

Lihat BypassIO di driver filter untuk detail arsitektur sistem BypassIO di seluruh filter sistem file dan tumpukan penyimpanan.

Cakupan dukungan BypassIO

Mulai dari Windows 11, BypassIO didukung sebagai berikut:

  • Hanya pada sistem klien Windows. Dukungan sistem server akan ditambahkan dalam rilis mendatang.

  • Hanya pada perangkat penyimpanan NVMe. Dukungan untuk teknologi penyimpanan lainnya akan ditambahkan dalam rilis mendatang.

  • Pada sistem file NTFS saja. Dukungan untuk sistem file lain akan ditambahkan dalam rilis mendatang.

  • Hanya bacaan yang tidak di-cache yang didukung. Dukungan untuk tulisan non-cache akan ditambahkan dalam rilis mendatang.

  • Hanya didukung pada file (tidak didukung pada handel direktori atau volume).

Perubahan DDI dan penambahan untuk BypassIO

DDI berikut yang relevan dengan driver penyimpanan ditambahkan untuk memberikan dukungan BypassIO:

Driver tumpukan penyimpanan apa yang perlu dilakukan untuk mendukung BypassIO

Mulai dari Windows 11, pengembang driver penyimpanan perlu memperbarui file INF atau MANIFEST driver mereka untuk menambahkan infrastruktur StorageSupportedFeatures dengan STORAGE_SUPPORTED_FEATURES_BYPASS_IO untuk BypassIO sebagai berikut:

  • Tentukan kunci "Parameter" di bawah definisi Layanan Anda
  • Tambahkan nilai DWORD bernama "StorageSupportedFeatures", dan atur nilai ini ke 0x1 untuk menunjukkan dukungan BypassIO.

Kunci registri ini menunjukkan kepada sistem bahwa driver memahami melewati I/O. Driver juga harus memanggil StorPortSetUnitAttributes dengan BypassIOSupported diatur ke 1 untuk menunjukkan unit logis (disk) mana yang mendukung bypass I/O.

Driver kemudian memproses IOCTL_STORAGE_MANAGE_BYPASS_IO sesuai kebutuhan. Operasi FS_BPIO_OP_QUERY gagal jika ada driver tumpukan penyimpanan yang belum ikut serta.

Catatan

Driver yang tidak pernah dapat mendukung BypassIO masih harus menambahkan status StorageSupportedFeatures ke INF dan kemudian mem-veto dengan tepat di dalam driver, menentukan alasannya.

Jika driver penyimpanan tidak memperbarui file INF atau MANIFEST untuk menunjukkan dukungan BypassIO, semua operasi BypassIO pada volume atau driver penyimpanan tersebut segera diblokir. Sistem ini kembali ke jalur I/O tradisional, yang menghasilkan performa permainan yang terdegradasi.

IOCTL_STORAGE_MANAGE_BYPASS_IO detail implementasi

Sistem file (saat ini NTFS) menghasilkan kode kontrol IOCTL_STORAGE_MANAGE_BYPASS_IO sebagai respons terhadap FSCTL_MANAGE_BYPASS_IO yang dihasilkan sesuai kebutuhan.

Input ke IOCTL_STORAGE_MANAGE_BYPASS_IO mirip dengan rekan FSCTL_MANAGE_BYPASS_IO , tetapi hanya mendukung BypassIO yang mengaktifkan, menonaktifkan, dan mengkueri.

Output dari IOCTL_STORAGE_MANAGE_BYPASS_IO mirip dengan rekan FSCTL_MANAGE_BYPASS_IO-nya , mengidentifikasi nama dan alasan driver yang gagal, dan status operasi mengapa driver mem-veto bypassIO. Sistem file menyebarkan output IOCTL_STORAGE_MANAGE_BYPASS_IO dari volume dan tumpukan penyimpanan hingga FSCTL_MANAGE_BYPASS_IO.