Google telah mulai membuka penerapan model aliran M:N

Google disarankan untuk dimasukkan ke dalam kernel Linux, kumpulan tambalan pertama dengan penerapan komponen yang diperlukan untuk memastikan pengoperasian model threading M: N. Inisiatif Google terkait dengan pembukaan API yang dikembangkan secara tertutup Beralih ke untuk kernel Linux, yang menyediakan subsistem multi-threaded yang diimplementasikan di ruang pengguna yang menggunakan model threading M:N. Subsistem digunakan oleh Google untuk menyediakan layanan yang membutuhkan penundaan minimal. Penjadwalan dan pengelolaan distribusi utas dilakukan sepenuhnya di ruang pengguna, yang dapat secara signifikan mengurangi jumlah sakelar konteks dengan meminimalkan eksekusi panggilan sistem.

Untuk memastikan pengoperasian subsistem ini, SwitchTo API diimplementasikan pada level kernel Linux, menawarkan tiga operasi dasar - tunggu, lanjutkan, dan tukar (switching). Untuk dimasukkan ke dalam kernel, sebuah kode untuk operasi FUTEX_SWAP baru diusulkan, sebagai pelengkap FUTEX_WAIT dan FUTEX_WAKE, dan menyediakan kerangka kerja untuk membangun perpustakaan ruang pengguna multi-utas. FUTEX_SWAP juga dapat digunakan untuk mengirimkan pesan antar tugas, mirip dengan RPC. Misalnya, saat ini, untuk mentransfer pesan antar tugas, setidaknya diperlukan empat panggilan ke FUTEX_WAIT dan FUTEX_WAKE, sementara menggunakan FUTEX_SWAP akan memungkinkan satu operasi diselesaikan 5-10 kali lebih cepat.

Google telah mulai membuka penerapan model aliran M:N

Saat ini, model aliran 1:1 dan N:1 terutama digunakan dalam praktik. Model 1:1 digunakan di NPTL (utas POSIX) dan Utas Linux, dan menyiratkan pemetaan langsung dari utas ruang pengguna ke utas (unit penjadwalan eksekusi) di tingkat kernel. Model N:1 diimplementasikan di GNU Pth, membawa penjadwalan utas ke ruang pengguna dan memungkinkan N utas ruang pengguna untuk mengikat ke satu utas di kernel, tanpa kernel mengetahui tentang utas pengguna.

Kerugian utama dari model 1:1 adalah overhead yang besar dari peralihan konteks antara kernel dan ruang pengguna. Model N:1 menyelesaikan masalah ini, tetapi membuat yang baru - karena utas di kernel adalah unit penjadwalan eksekusi yang tidak dapat dipisahkan, utas pengguna yang terikat pada satu utas di kernel sistem operasi tidak dapat menskalakan seluruh inti CPU dan menjadi terikat ke satu inti CPU.

Model M:N adalah hibrid dan mengatasi semua kelemahan di atas dengan memetakan N utas ruang pengguna ke utas kernel M, keduanya mengurangi overhead sakelar konteks dan menskalakan seluruh inti CPU. Harga dari opsi ini merupakan komplikasi besar dari penerapan penjadwal utas di ruang pengguna dan kebutuhan akan mekanisme untuk mengoordinasikan tindakan dengan penjadwal kernel.

Sumber: opennet.ru

Tambah komentar