Peningkatan kinerja Kontainer Windows Server

Introduction

Dimulai dengan Windows Server 2022, tersedia dua jenis kontainer: Kontainer Windows Server dan kontainer Hyper-V. Setiap jenis kontainer mendukung SKU Server Core atau Nano Server Windows Server 2022.

Konfigurasi ini memiliki implikasi performa yang berbeda, yang kami rinci di bawah ini untuk membantu Anda memahami mana yang tepat untuk skenario Anda. Selain itu, kami perincian konfigurasi yang memengaruhi performa, serta menjelaskan kompromi dari masing-masing opsi tersebut.

Kontainer Windows Server dan Kontainer Hyper-V

Kontainer Windows Server dan kontainer Hyper-V menawarkan banyak manfaat portabilitas dan konsistensi yang sama tetapi berbeda dalam hal jaminan isolasi dan karakteristik performanya.

Kontainer Windows Server menyediakan isolasi aplikasi melalui teknologi isolasi proses dan namespace. Kontainer Windows Server berbagi kernel dengan host kontainer dan semua kontainer yang berjalan di host.

Hyper-V Kontainer diperluas pada isolasi yang disediakan oleh Kontainer Windows Server dengan menjalankan setiap kontainer di komputer virtual yang sangat dioptimalkan. Dalam konfigurasi ini, kernel host kontainer tidak dibagikan dengan Kontainer Hyper-V.

Isolasi tambahan yang disediakan oleh kontainer Hyper-V dicapai sebagian besar oleh lapisan hypervisor isolasi antara kontainer dan host kontainer. Ini mempengaruhi kepadatan kontainer karena, berbeda dengan Kontainer Windows Server, terjadi lebih sedikit pembagian file sistem dan biner, sehingga mengakibatkan peningkatan keseluruhan penggunaan penyimpanan dan memori. Selain itu, diharapkan ada overhead lebih lanjut pada beberapa jalur jaringan, IO penyimpanan, dan CPU.

Nano Server dan Server Core

Kontainer Windows Server dan kontainer Hyper-V menawarkan dukungan untuk Server Core, pelajari selengkapnya tentang opsi gambar dasar kontainer.

Nano Server adalah sistem operasi server yang dikelola dari jarak jauh yang dioptimalkan untuk cloud dan pusat data privat. Ini mirip dengan Windows Server dalam mode Server Core, tetapi secara signifikan lebih kecil, tidak memiliki kemampuan masuk lokal, dan hanya mendukung aplikasi, alat, dan agen 64-bit. Ini membutuhkan ruang disk yang jauh lebih sedikit, mengatur secara signifikan lebih cepat, dan membutuhkan pembaruan dan restart yang jauh lebih sedikit daripada Windows Server. Ketika menghidupkan ulang, mulai ulang jauh lebih cepat.

Kontainer Start-Up Waktu

Waktu mulai kontainer adalah metrik utama dalam banyak skenario di mana kontainer menawarkan manfaat terbesar. Dengan demikian, memahami cara terbaik mengoptimalkan waktu mulai kontainer sangat penting. Di bawah ini adalah beberapa kompromi penyetelan yang perlu dipahami untuk mempercepat waktu mulai.

Masuk Pertama

Microsoft mengirimkan gambar dasar untuk Nano Server dan Server Core. Gambar dasar yang disediakan untuk Server Core telah dioptimalkan dengan menghilangkan waktu tunggu saat mulai yang terjadi pada logon pertama (OOBE). Ini tidak terjadi pada gambar dasar Nano Server. Namun, biaya ini dapat dihapus dari gambar berbasis Nano Server dengan menerapkan setidaknya satu lapisan ke gambar kontainer. Kontainer yang dimulai dari gambar berikutnya tidak akan dikenakan biaya masuk awal.

Lokasi Penyimpanan Sementara

Kontainer, secara default, menggunakan ruang goresan sementara pada media drive sistem host kontainer untuk penyimpanan selama masa pakai kontainer yang sedang berjalan. Ini berfungsi sebagai drive sistem dari kontainer, dan oleh karena itu banyak penulisan dan pembacaan yang dilakukan dalam operasi kontainer mengikuti jalur ini. Untuk sistem induk di mana drive sistem ada pada media disk magnetik berputar (HDD) tetapi media penyimpanan yang lebih cepat tersedia (HDD atau SSD yang lebih cepat), dimungkinkan untuk memindahkan area penyimpanan sementara kontainer ke drive yang berbeda. Ini dicapai dengan menggunakan perintah dockerd –g. Perintah ini bersifat global, dan akan memengaruhi semua kontainer yang berjalan pada sistem.

Kontainer Hyper-V Berlapis

Hyper-V untuk Windows Server 2022 menawarkan dukungan hypervisor berlapis. Artinya, kemampuan untuk menjalankan komputer virtual dari dalam komputer virtual. Hal ini membuka banyak skenario yang berguna tetapi juga membesar-besarkan beberapa dampak performa yang dikenakan hypervisor, karena ada dua tingkat hypervisor yang berjalan di atas host fisik.

Untuk kontainer, ini berdampak saat menjalankan kontainer Hyper-V di dalam komputer virtual. Karena Kontainer Hyper-V menawarkan isolasi melalui lapisan hypervisor antara dirinya dan host kontainer, ketika host kontainer adalah mesin virtual berbasis Hyper-V, ada overhead performa yang terkait dalam hal waktu mulai kontainer, IO penyimpanan, IO jaringan, throughput, dan CPU.

Storage

Volume Data yang Dipasang

Kontainer memungkinkan penggunaan drive sistem host untuk ruang sementara kontainer. Namun, ruang goresan kontainer memiliki rentang hidup yang sama dengan kontainer. Artinya, ketika kontainer dihentikan, ruang goresan dan semua data terkait hilang.

Namun, ada banyak skenario di mana diinginkan agar data tetap ada bahkan setelah masa pakai kontainer berakhir. Dalam kasus ini, kami mendukung pemasangan volume data dari host kontainer ke dalam kontainer. Untuk Kontainer Windows Server, ada overhead jalur masukan/keluaran yang dapat diabaikan yang terkait dengan volume data yang di-mount (hampir mendekati performa asli). Namun, saat memasang volume data ke dalam kontainer Hyper-V, ada beberapa penurunan performa IO di jalur tersebut. Selain itu, dampak ini dibesar-besarkan saat menjalankan kontainer Hyper-V di dalam komputer virtual.

Ruang Coretan

Kontainer Windows Server dan kontainer Hyper-V menyediakan VHD dinamis 20GB untuk ruang kerja sementara kontainer secara default. Untuk kedua jenis kontainer, OS kontainer mengambil sebagian dari ruang tersebut, dan ini berlaku untuk setiap kontainer yang dimulai. Dengan demikian, penting untuk diingat bahwa setiap kontainer yang dimulai memiliki beberapa dampak penyimpanan, dan tergantung pada beban kerja dapat menulis hingga 20GB media penyimpanan cadangan. Konfigurasi penyimpanan server harus dirancang dengan anggapan ini.

Jaringan

Kontainer Windows Server dan kontainer Hyper-V menawarkan berbagai mode jaringan agar paling sesuai dengan kebutuhan konfigurasi jaringan yang berbeda. Masing-masing opsi ini menyajikan karakteristik performa mereka sendiri.

Terjemahan Alamat Jaringan Windows (WinNAT)

Setiap kontainer akan menerima alamat IP dari awalan IP internal privat (misalnya 172.16.0.0/12). Penerusan / pemetaan port dari host kontainer ke titik akhir kontainer didukung. Docker membuat jaringan NAT secara default saat dockerd pertama kali berjalan.

Dari ketiga mode ini, konfigurasi NAT adalah jalur IO jaringan paling mahal, tetapi memiliki jumlah konfigurasi paling sedikit yang diperlukan.

Kontainer Windows Server menggunakan Host vNIC untuk melampirkan ke sakelar virtual. Kontainer Hyper-V menggunakan NIC VM Sintetis (tidak terekspos ke VM Utilitas) untuk melampirkan ke sakelar virtual. Ketika kontainer berkomunikasi dengan jaringan eksternal, paket dirutekan melalui WinNAT dengan penerapan terjemahan alamat, yang menyebabkan pemakaian sumber daya tambahan.

Transparent

Setiap titik akhir kontainer terhubung langsung ke jaringan fisik. Alamat IP dari jaringan fisik dapat ditetapkan secara statis atau dinamis menggunakan server DHCP eksternal.

Mode transparan adalah yang paling murah dalam hal jalur IO jaringan, dan paket eksternal langsung diteruskan ke NIC virtual kontainer yang memberikan akses langsung ke jaringan eksternal.

Jembatan L2

Setiap titik akhir kontainer akan berada di subnet IP yang sama dengan host kontainer. Alamat IP harus ditetapkan secara statis dari awalan yang sama dengan host kontainer. Semua titik akhir kontainer pada host akan memiliki alamat MAC yang sama karena terjemahan alamat Layer-2.

L2 Bridge Mode lebih berkinerja daripada mode WinNAT karena menyediakan akses langsung ke jaringan eksternal, tetapi kurang berkinerja daripada mode Transparan karena juga memperkenalkan terjemahan alamat MAC.