Bagikan melalui


BypassIO dalam driver penyimpanan

Tentang BypassIO

BypassIO adalah 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, dan tersedia mulai dari Windows 11.

Penting bagi driver penyimpanan untuk menerapkan dukungan untuk BypassIO, dan Anda tetap mengaktifkan BypassIO sebanyak mungkin. Tanpa dukungan tumpukan penyimpanan, performa game terdegradasi, menghasilkan pengalaman bermain 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 dalam 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.

  • Hanya pada sistem file NTFS. 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 dan penambahan DDI 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 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 tidak 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 mengaktifkan, menonaktifkan, dan mengkueri.

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