
Saya ingin berbicara tentang artikel "I / O Is Faster Than the CPU - Let's Partition Resources
dan Hilangkan (Sebagian) Abstraksi OS " , diterbitkan di halaman pribadi salah satu pengembang ScyllaDB, Pekka Enberg. Saya mengetahuinya dari video .
Para penulis artikel ini seharusnya membuat presentasi di lokakarya HOTOS17 (Topik Panas dalam Sistem Operasi) pada 12-15 Mei 2019. Sejauh yang saya mengerti, mereka mendiskusikan perkembangan di sana pada tahap awal kehidupan mereka.
Artikel saya adalah berita untuk membangkitkan pikiran ingin tahu tentang topik ini dan berpikir dalam komentar.
Poin umum
I / O pada server dengan kartu jaringan yang dapat diprogram cepat dan memori non-volatile mendekati kecepatan RAM yang mudah menguap, dan kecepatan satu inti prosesor tetap ada. Aplikasi tidak dapat memanfaatkan perangkat keras modern karena terpaksa menggunakan antarmuka yang dibangun di atas abstraksi yang melibatkan sistem I / O lambat.
Para penulis mengusulkan struktur OS mereka sendiri yang disebut parakernel , itu menghilangkan sebagian besar abstraksi dari OS dan menyediakan antarmuka untuk aplikasi sehingga mereka dapat menggunakan potensi penuh dari peralatan. Parakernel memfasilitasi konkurensi tingkat aplikasi dengan berbagi sumber daya secara aman dan multipleks sumber daya bersama.
Arsitektur sistem operasi modern diciptakan ketika kecepatan I / O jauh lebih rendah, dan aplikasi menunggu I / O. Saat ini, perangkat I / O dapat dengan mudah menjenuhkan prosesor.
Menurut penulis, tumpukan jaringan modern melakukan terlalu banyak pekerjaan per paket. Selain itu, sistem operasi biasanya menerapkan API soket POSIX, yang memiliki biaya tinggi untuk pengalihan konteks dan polusi cache CPU.
Prasyarat Perangkat Keras
Kartu jaringan 40Gbps modern dapat menerima paket yang sepadan dengan jalur cache setiap 5 ns, dan penundaan dalam mengakses prosesor LLC (cache level terakhir) adalah sekitar 15 ns.
Sebagai contoh, Linux mengembangkan antarmuka POSIX AIO, yang seharusnya menyediakan antarmuka I / O asinkron yang sederhana dan efisien. Implementasi, dukungan, dan penerapan antarmuka seperti itu dengan pelestarian semantik POSIX ternyata sangat sulit dan ditinggalkan demi io_uring baru.
Apa solusi yang diusulkan
Struktur OS baru, yang penulis sebut parakernel , dirancang untuk menyederhanakan paralelisasi tugas. Sumber daya dialokasikan untuk aplikasi dan mereka memiliki kontrol penuh terhadapnya, sumber daya yang tidak dapat dibagi multipleks oleh kernel.
Berbagi sumber daya dalam sistem multi-inti membutuhkan sinkronisasi antara inti prosesor, yang mencegah konkurensi pada tingkat aplikasi. Rintangan ini dapat dikurangi dengan membagi sumber daya di antara inti prosesor.
Ringkasan
Beberapa abstraksi sistem operasi membatasi kinerja I / O. Penulis menyajikan struktur OS yang berbagi sumber daya bersama dan sumber daya bersama multipleks. Parakernel menyederhanakan konkurensi tingkat aplikasi, dan melengkapi desain thread-to-core .
Prototipe parakernel ditulis dalam Rust dan saat ini sedang dalam pengembangan. Dalam artikel itu saya tidak melihat nama sistem operasinya, tetapi saya menemukan materi lain dari salah satu penulis Sistem Operasi Manticore dan saya menyimpulkan bahwa ini adalah gudang pengembangan ini.
Apa yang ada di seluruh dunia
Ternyata, produsen prosesor tidak tidur dan juga mencoba menyelesaikan masalah lapisan lambat antara produk dan konsumen mereka. Begitu banyak orang tidak menyukai bottleneck kinerja dalam bentuk kernel dari sistem operasi.
Inovasi menarik dari Intel, lebih banyak tentang yang dapat ditemukan di artikel ini . Berikut adalah kutipan darinya:
- Intel Volume Management Device (Intel VMD) - memungkinkan Anda untuk bekerja dengan drive NVM Express secara langsung, "memberikan" perangkat secara langsung ke sistem penyimpanan. Akibatnya, SSD hot-swappable penuh, indikasi status dan penggunaan teknologi Intel VROC menjadi mungkin.
- Intel Virtual RAID pada CPU (Intel VROC). Memungkinkan Anda membuat RAID dari drive NVMe menggunakan prosesor, dengan itu Anda dapat menolak solusi perangkat lunak atau adaptor tambahan untuk membuat array PCIe SSD berkecepatan tinggi.
- Internet Wide-Area RDMA Protocol (iWARP). Ekstensi RDMA sekarang didukung oleh adapter jaringan terintegrasi Intel X722, karena prosesor mendukung empat port Ethernet 10-gigabit (atau gigabit). Biarkan saya mengingatkan Anda bahwa RDMA mendapatkan akses ke data melalui jaringan langsung dari memori, melewati kernel dan sistem operasi.
Itu selalu sangat menarik untuk belajar tentang konsep-konsep baru dalam sistem yang sudah di-root.
Silakan tulis tentang bug dan tambahan yang diperlukan.
UPD : Artikel ini sedang diubah oleh komunitas.
Terima kasih atas bantuannya:
Baris iklan untuk podcast Zinc Prod di mana kami akan membahas artikel ini berdasarkan topik-per-topik.