Ketika Anda berbicara tentang kinerja pada server, ada beberapa cara berbeda untuk melihatnya. Ada waktu respons yang jelas (mirip dengan latensi jaringan) dan throughput (mirip dengan bandwidth jaringan).
Beberapa versi Windows Server dikirim dengan pengaturan Balanced Power diaktifkan secara default. Seperti yang ditunjukkan Jeff. Windows 2008 R2 adalah salah satunya. Sangat sedikit CPU saat ini yang merupakan single core sehingga penjelasan ini berlaku untuk hampir setiap server Windows yang akan Anda temui kecuali VM single-core. (lebih lanjut tentang itu nanti).
Ketika rencana daya Seimbang aktif, CPU mencoba untuk membatasi berapa banyak daya yang digunakannya. Cara melakukannya adalah dengan menonaktifkan setengah dari inti CPU dalam proses yang dikenal sebagai "parkir". Hanya setengah dari CPU yang akan tersedia pada satu waktu sehingga menggunakan lebih sedikit daya selama lalu lintas rendah. Ini bukan masalah dalam dan dari dirinya sendiri.
Yang menjadi masalah adalah fakta bahwa ketika CPU tidak diparkir, Anda telah menggandakan siklus CPU yang tersedia untuk sistem dan tiba-tiba tidak seimbang beban pada sistem, mengambilnya dari (misalnya) pemanfaatan 70% hingga pemanfaatan 35%. Sistem melihat itu dan setelah ledakan lalu lintas diproses, ia berpikir "Hei, saya harus memutar balik ini sedikit untuk menghemat daya". Dan begitulah yang terjadi.
Inilah bagian yang buruk. Untuk mencegah distribusi panas & daya yang tidak merata dalam inti CPU, CPU cenderung memarkir CPU yang belum diparkir baru-baru ini. Dan agar itu berfungsi dengan baik, CPU perlu mem-flush semuanya dari register CPU (L1, L2 & L3 cache) ke beberapa lokasi lain (kemungkinan besar memori utama).
Sebagai contoh hipotetis, katakanlah Anda memiliki CPU 8 inti dengan C1-C8.
- Aktif: C1, C3, C5, C7
- Diparkir: C2, C4, C6, C8
Ketika ini terjadi, mereka semua menjadi aktif untuk beberapa periode waktu, dan kemudian sistem akan memarkirkannya sebagai berikut:
- Aktif: C2, C4, C6, C8
- Diparkir: C1, C3, C5, C7
Tetapi dengan melakukan hal itu, ada sejumlah besar overhead yang terkait dengan pembilasan semua data dari cache L1-L3 untuk membuat ini terjadi sehingga kesalahan aneh tidak terjadi pada program yang memerah dari saluran CPU.
Mungkin ada nama resmi untuk itu, tapi saya ingin menjelaskannya sebagai meronta-ronta CPU. Pada dasarnya prosesor menghabiskan lebih banyak waktu untuk melakukan pekerjaan yang sibuk dengan memindahkan data secara internal daripada melakukan permintaan pekerjaan.
Jika Anda memiliki aplikasi apa pun yang membutuhkan latensi rendah untuk permintaannya, Anda harus menonaktifkan pengaturan Daya Seimbang. Jika Anda tidak yakin apakah ini masalah, lakukan hal berikut:
- Buka "Task Manager"
- Klik tab "Kinerja".
- Klik "Open Resource Monitor"
- Pilih tab "CPU"
- Lihatlah sisi kanan jendela di berbagai CPU.
Jika Anda melihat salah satu dari mereka diparkir, Anda akan melihat bahwa separuh dari mereka diparkir pada waktu tertentu, mereka semua akan menyala, dan setengahnya lagi diparkir. Bergantian bolak-balik. Dengan demikian, sistem CPU meronta-ronta.
Mesin Virtual: Masalah ini bahkan lebih buruk ketika Anda menjalankan mesin virtual karena ada overhead tambahan dari hypervisor. Secara umum, agar VM dapat berjalan, perangkat keras harus memiliki slot waktu yang tersedia untuk masing-masing core pada setiap kutu waktu.
Jika Anda memiliki perangkat keras 16 inti, Anda dapat menjalankan VM menggunakan lebih dari 16 core total, tetapi untuk setiap kutu waktu, hanya hingga 16 CPU virtual yang memenuhi syarat untuk slice waktu itu dan hypervisor harus sesuai dengan semua core untuk VM ke dalam kutu waktu itu. Itu tidak bisa disebarkan dalam berbagai waktu. (Kutu waktu pada dasarnya adalah satu set siklus X CPU. Mungkin 1000 atau mungkin 100 k siklus)
Contoh: 16 perangkat keras inti dengan 8 VM. 6 memiliki 4 CPU virtual (4C) dan 2 memiliki 8 CPU virtual (8C).
Timeslice 1: 4x4C Timeslice 2: 2x8C Timeslice 3: 2x4C + 1x8C Timeslice 4: 1x8C + 2x4C
Apa yang hypervisor tidak dapat lakukan adalah membagi setengah dari penjatahan untuk kutu waktu ke 4 CPU pertama dari 8 vCPU VM dan kemudian pada kutu waktu berikutnya, berikan sisanya ke 4 vCPU lain dari VM itu. Semuanya atau tidak sama sekali dalam kutu waktu.
Jika Anda menggunakan Microsoft Hyper-V, pengaturan kontrol daya dapat diaktifkan di OS host, yang berarti itu akan menyebar ke sistem klien, sehingga berdampak pada mereka juga.
Setelah Anda melihat bagaimana ini bekerja, mudah untuk melihat bagaimana menggunakan pengaturan Kontrol Daya Seimbang menyebabkan masalah kinerja dan server lamban. Salah satu masalah mendasar adalah bahwa permintaan masuk perlu menunggu proses parkir / pembatalan CPU selesai sebelum server akan dapat menanggapi permintaan yang masuk, apakah itu permintaan basis data, permintaan server web, atau hal lain .
Kadang-kadang, sistem akan memarkir atau melepas CPU di tengah permintaan. Dalam kasus ini, permintaan akan mulai masuk ke dalam pipa CPU, dikeluarkan dari situ, dan kemudian inti CPU yang berbeda akan mengambil proses dari sana. Jika itu permintaan yang cukup besar, ini mungkin terjadi beberapa kali selama permintaan, mengubah apa yang seharusnya menjadi query database 5 detik menjadi query database 15 detik.
Hal terbesar yang akan Anda lihat dari menggunakan Balanced Power adalah bahwa sistem akan merasa lebih lambat untuk menanggapi hampir setiap permintaan yang Anda buat.