Penyetelan performa Kontainer Windows Server

Pendahuluan

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 merinci performa yang memengaruhi konfigurasi, dan menjelaskan tradeoff dengan 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 serta namespace layanan. Kontainer Windows Server berbagi kernel dengan host kontainer dan semua kontainer yang berjalan di host.

Kontainer Hyper-V memperluas 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, tidak seperti Kontainer Windows Server, lebih sedikit berbagi file sistem dan biner dapat terjadi, menghasilkan penyimpanan dan jejak memori yang lebih besar secara keseluruhan. Selain itu, ada overhead lebih lanjut yang diharapkan di 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.

Waktu Mulai Kontainer

Waktu mulai kontainer adalah metrik utama dalam banyak skenario yang ditawarkan kontainer manfaat terbesar. Dengan demikian, memahami cara terbaik mengoptimalkan waktu mulai kontainer sangat penting. Di bawah ini adalah beberapa trade-off penyetelan untuk dipahami untuk mencapai waktu mulai yang ditingkatkan.

Masuk Pertama

Microsoft mengirimkan gambar dasar untuk Nano Server dan Server Core. Gambar dasar yang dikirimkan untuk Server Core telah dioptimalkan dengan menghapus overhead waktu mulai yang terkait dengan masuk 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 berikutnya dimulai dari gambar tidak akan dikenakan biaya masuk pertama.

Lokasi Ruang Coretan

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 kontainer, dan karena banyak penulisan dan bacaan yang dilakukan dalam operasi kontainer mengikuti jalur ini. Untuk sistem host di mana drive sistem ada pada media magnetis disk berputar (HDD) tetapi media penyimpanan yang lebih cepat tersedia (HDD atau SSD yang lebih cepat), dimungkinkan untuk memindahkan ruang coretan 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 komputer virtual berbasis Hyper-V, ada overhead performa yang terkait dalam hal waktu start-up kontainer, io penyimpanan, io jaringan dan throughput, dan CPU.

Penyimpanan

Volume Data yang Dipasang

Kontainer menawarkan kemampuan untuk menggunakan drive sistem host kontainer untuk ruang goresan 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 data tetap independen dari masa pakai kontainer yang diinginkan. Dalam kasus ini, kami mendukung pemasangan volume data dari host kontainer ke dalam kontainer. Untuk Kontainer Windows Server, ada overhead jalur IO yang dapat diabaikan yang terkait dengan volume data yang dipasang (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 awal 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 terjemahan alamat yang diterapkan, yang menimbulkan beberapa overhead.

Transparan

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.