Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan desain manajemen termal PC ini menyediakan informasi tentang cara menentukan nilai suhu PC yang "terlalu panas" dan "terlalu dingin."
Membuat penentuan ini adalah persyaratan utama untuk desain yang memberikan pengalaman pengguna PC yang baik. Selain itu, ambang batas ini membantu memilih tindakan mitigasi pertama yang harus diambil untuk komponen PC yang berada di beberapa zona termal.
Merancang ambang suhu
Variabel dan asumsi
Faktor-faktor berikut memengaruhi perilaku termal PC:
Desain perangkat keras
Pentingnya desain perangkat keras yang baik tidak dapat terlalu ditekankan. Untuk informasi selengkapnya, lihat Pemodelan dan evaluasi termal perangkat keras.
Lingkungan
Ini adalah faktor eksternal yang berkontribusi pada perilaku termal sistem. Perangkat lunak hanya dapat memengaruhi lingkungan dengan memberi tahu pengguna bahwa batasan termal adalah masalah—misalnya, dengan menampilkan logo thermal-failure-to-boot. Pengguna harus pindah ke lingkungan yang berbeda agar faktor-faktor ini berubah:
Radiasi sinar matahari
Intensitas dan sudut sinar matahari yang berdampak pada layar atau bagian mana pun dari sistem.
Suhu sekitar
Suhu lingkungan.
Aliran udara
Dengan atau tanpa sirkulasi udara. Berangin atau dalam kasus komputer.
Kelembapan
Kering atau lembab.
Beban kerja dan konsumsi daya
Asumsi di sini adalah bahwa beban kerja dan konsumsi daya sebanding satu sama lain. Dengan kata lain, semakin banyak pekerjaan yang dilakukan PC atau komponen, semakin banyak daya yang dikonsumsinya dan semakin panas yang dihasilkannya. Meskipun ini mungkin tidak benar dalam semua kasus, model yang disederhanakan ini kurang lebih cukup di sini. Di sinilah mitigasi perangkat lunak masuk. Dengan mengurangi beban kerja, lebih sedikit panas yang dihasilkan dan PC terus beroperasi.
Saat merancang dan memodelkan perangkat keras, mempertimbangkan parameter yang disebutkan dalam daftar sebelumnya. Harap gunakan nilai kasus terburuk untuk lingkungan. Satu-satunya parameter yang dapat dikontrol langsung oleh perangkat lunak adalah beban kerja.
Dasar-dasar termal
Pertimbangkan perilaku termal PC saat menjalankan beban kerja yang konstan. Saat beban kerja dimulai, komponen perangkat keras PC seperti CPU dan GPU menghasilkan panas dan meningkatkan suhu. Ketika suhu meningkat relatif terhadap suhu sekitar, PC mulai menghilangkan panas lebih cepat sampai akhirnya generasi panas sama dengan pembuangan panas, dan suhu mencapai keadaan stabil. Selama seluruh durasi beban kerja konstan ini, karena tidak ada pembatasan yang terlibat, performa dan throughput konstan.
Diagram berikut menunjukkan hubungan antara pembuatan panas, suhu, dan performa ketika tidak ada pembatasan yang terlibat. Perhatikan bahwa suhu PC tetap berada dalam amplop termal, seperti yang dibatasi oleh suhu sekitar dan suhu pembatasan.
Sekarang pertimbangkan perilaku termal PC ketika menjalankan beban kerja yang berbeda yang juga konstan tetapi lebih intensif sumber daya. Ketika beban kerja ini dijalankan, panas yang dihasilkan jauh lebih tinggi daripada apa yang mampu disipasi sistem ke lingkungan sekitar, dan akibatnya suhu naik terus. Tanpa pendinginan pasif, suhu akan terus naik sampai akhirnya sistem akan menjadi terlalu panas dan berdampak buruk pada kenyamanan dan keamanan pengguna akhir. Perangkat keras juga dapat rusak pada suhu tinggi. Pembatasan termal membantu memastikan bahwa PC tidak mencapai suhu tinggi ini. Ketika suhu naik di atas titik perjalanan suhu pembatasan yang telah ditentukan sebelumnya, sistem mulai membatasi performa. Akibatnya, pembuatan panas berkurang dan bertahap—setelah pembuatan panas dan disipasi menyamakan—suhu sistem mencapai keadaan stabil.
Diagram berikut menunjukkan hubungan antara pembuatan panas, suhu, dan performa saat performa dibatasi untuk mengurangi pembuatan panas.
Dalam kedua kasus yang ditunjukkan dalam diagram sebelumnya, beban kerja harus beroperasi dalam amplop termal untuk memastikan bahwa suhu sistem tidak melebihi batas aman. Amplop dimulai dengan suhu sekitar dan berakhir dengan suhu pembatasan. Juga dalam kedua kasus, pembangkit panas dan disipasi akhirnya mencapai keadaan seimbang, dan suhu sistem stabil.
Mendefinisikan amplop termal
PC yang dirancang dengan baik harus memiliki amplop termal sebesar mungkin, memberi pengguna pengalaman jangka panjang dan bebas mitigasi. Seperti yang ditunjukkan pada diagram sebelumnya, amplop termal memiliki batas bawah yang ditentukan oleh suhu sekitar. Ini dibatasi di atas oleh suhu pembatasan. Meskipun suhu sekitar bukanlah variabel yang dapat dikontrol oleh perancang sistem, batas atas dapat didorong lebih tinggi oleh desain perangkat keras yang baik. Untuk informasi selengkapnya, lihat Pemodelan dan evaluasi termal perangkat keras. Tetapi bahkan dengan asumsi bahwa perangkat keras bukanlah batasan utama, faktor penting lainnya harus dipertimbangkan ketika mendefinisikan amplop termal.
Rentang operasi yang diinginkan harus sebesar mungkin tanpa merangkum faktor-faktor pembatas ini:
Keselamatan
Suhu sistem harus terlebih dahulu memastikan bahwa pengguna tidak mengalami cedera dari penggunaan sistem. Persyaratan ini sebagian besar berlaku untuk sensor suhu kulit.
Perlindungan perangkat keras
Suhu harus mencegah komponen sistem "mencair" atau menyebabkan kerusakan karena panas. Persyaratan ini sebagian besar berlaku untuk sensor suhu komponen—misalnya, sensor yang berada di atas prosesor.
Peraturan pemerintah
Semua sistem harus memenuhi standar industri yang berlaku (seperti IEC 62368) untuk keamanan elektronik konsumen.
Pemodelan dan evaluasi termal perangkat keras
Perangkat lunak sebagai pelengkap desain perangkat keras
Saat merancang perangkat keras, penting untuk mengingat manajemen termal. Memilih bagian berdaya rendah, menempatkan komponen panas jauh dari satu sama lain, dan menggabungkan isolasi termal hanyalah beberapa contoh bagaimana perangkat keras dapat sangat meningkatkan pengalaman termal. Metode ini tidak dapat diganti dalam perangkat lunak. Dengan demikian, solusi perangkat lunak hanya berfungsi sebagai pelengkap desain perangkat keras dalam pengalaman termal secara keseluruhan.
Tujuan perangkat keras
Beban kerja umum tidak boleh memerlukan bentuk mitigasi termal perangkat lunak untuk dijalankan. Desain termal perangkat keras harus dapat membubarkan panas untuk beban kerja ini dengan sendirinya.
Pemodelan
Pemodelan adalah proses berulang untuk mencapai tujuan perangkat keras yang dijelaskan sebelumnya. Dalam proses ini, jangan memperhitungkan mitigasi perangkat lunak apa pun. Hanya mengandalkan kemampuan perangkat keras dan menyesuaikan seperlunya.
Tentukan beban kerja umum. Tergantung pada platform sistem, dari telepon ke server, setiap sistem harus memiliki set standar beban kerja umum. Ini seharusnya tidak menjadi beban kerja yang intens seperti konferensi video HD, melainkan beban kerja yang lebih rata-rata seperti menelusuri web atau mendengarkan musik.
Sistem model dan konsumsi daya komponen individu pada beban kerja umum karena panas tidak akan tersebar di sasis secara seragam. Perhatikan secara khusus komponen yang mengonsumsi sebagian besar daya, seperti prosesor.
Berdasarkan estimasi konsumsi daya beban kerja, model kenaikan komponen dan suhu kulit dari waktu ke waktu.
Sesuaikan desain mekanis sistem untuk memastikan bahwa suhu komponen berada dalam batas keamanan perangkat keras dan batas kenyamanan pengguna atas semua suhu sekitar. Beberapa metode untuk mengatasi masalah desain mekanis adalah:
- Tingkatkan kemampuan disipasi panas dengan menambahkan bahan penghantar panas yang lebih baik.
- Tingkatkan suhu delta antara kulit dan suhu internal dengan menambahkan lapisan isolasi.
Ulangi langkah 1 sampai 4 hingga terpenuhi.
Bangun perangkat keras dan evaluasi.
Evaluasi
Untuk setiap revisi perangkat keras, pengukuran suhu dan daya terhadap beban kerja yang representatif harus dilakukan untuk mengevaluasi perilaku termal, dan desain mekanis harus dimodifikasi sesuai kebutuhan.
Langkah-langkah berikut disarankan untuk melakukan evaluasi termal tersebut:
Tentukan matriks pengujian pengukuran termal:
- Matriks harus mencakup suhu sekitar normal dan maksimum.
- Matriks harus mencakup semua beban kerja khas yang diidentifikasi sebagai bagian dari pemodelan termal, dan untuk setiap beban kerja, data harus diambil setidaknya selama satu jam.
- Matriks harus dijalankan dalam beberapa PC beberapa kali untuk menghasilkan hasil yang konsisten.
Untuk setiap beban kerja yang ditentukan dalam matriks pengujian, ambil data berikut:
- Data konsumsi daya sistem dan komponen.
- Sekitar, komponen internal, dan data suhu kulit.
- Jejak perangkat lunak untuk mendeteksi pembatasan termal, metrik performa, dan pemanfaatan prosesor.
Data suhu kulit dan komponen secara langsung menunjukkan suhu kulit maksimum yang mungkin dijangkau sistem dan apakah suhu ini dapat diterima. Pertimbangkan berapa banyak ruang kepala termal yang mungkin dimiliki sistem sebelum pematian kritis. Data metrik performa akan membantu menentukan apakah sistem memberikan performa yang diperlukan. Data pelacakan yang direkam oleh perangkat lunak pembatasan termal menunjukkan persentase pembatasan termal. Data konsumsi daya dan data pemanfaatan CPU dapat membantu menentukan faktor apa yang memengaruhi perubahan suhu.
Tabel berikut ini menyediakan contoh pengumpulan data tersebut untuk PC dengan konfigurasi berikut:
Konfigurasi
- Nama mesin: Thermal-Test-1
- Suhu sekitar rata-rata: 23oC
- Titik perjalanan zona termal (_PSV): 80oC
Kategori | Subkategori | Streaming video | Game kasual | Fishbowl | Game 3D | TDP |
---|---|---|---|---|---|---|
Penyiapan beban kerja | Streaming video 720p H.264 layar penuh melalui Wi-Fi | Nama permainan Penggunaan CPU |
IE klasik dengan 100 ikan | Nama permainan Penggunaan CPU |
CPU dan GPU 100% | |
Konsumsi daya | Daya sistem | |||||
Daya SoC | ||||||
Tampilkan daya | ||||||
Daya lampu latar | ||||||
Suhu | Suhu SoC Maks | |||||
Suhu kulit maks | ||||||
Metrik performa | Kecepatan bingkai rata-rata | Kecepatan bingkai rata-rata | Kecepatan bingkai rata-rata | Kecepatan bingkai rata-rata |
Kerangka kerja manajemen termal Windows
Kerangka kerja manajemen termal Windows menyediakan solusi komprehensif untuk manajemen termal perangkat lunak. Contoh berikut menunjukkan cara menerapkan manajemen termal. Dengan pemodelan termal, validasi, dan desain mekanis termal yang tepat, semua sistem harus dapat memberikan pengalaman pengguna yang lancar pada sebagian besar beban kerja pada suhu sekitar yang paling ditargetkan. Di mana mitigasi termal diperlukan, Windows menyediakan arsitektur manajemen termal yang efektif dan dapat diperluas.
Manajemen termal Windows mendukung pendinginan aktif dan pasif. Dengan pendinginan aktif, kipas menyalakan untuk mengedarkan udara dan membantu mendinginkan sistem. Dengan pendinginan pasif, perangkat mengurangi performa perangkat sebagai respons terhadap kondisi termal yang berlebihan. Mengurangi performa menurunkan konsumsi daya, dan dengan demikian menghasilkan lebih sedikit panas.
Kerangka kerja manajemen termal Windows bergantung pada kebijakan yang ditentukan oleh perancang sistem untuk menegakkan manajemen termal pada sistem. Pada tingkat tinggi, desainer harus menentukan bagaimana pembacaan yang diperoleh dari setiap sensor termal dipengaruhi oleh setiap komponen. Tanpa spesifikasi ini, Windows tidak dapat mengelola sistem secara termal. Dengan demikian adalah tanggung jawab setiap perancang sistem untuk mencirikan sistem mereka secara termal untuk mencapai desain termal yang baik.
Meskipun sistem tidak diperlukan untuk menggunakan kerangka kerja manajemen termal Windows, itu adalah solusi yang direkomendasikan karena integrasinya yang ketat dengan sistem operasi. Namun, terlepas dari solusi manajemen termal yang digunakan, semua PC Siaga Modern harus mematuhi persyaratan HCK untuk tujuan diagnostik.
Arsitektur manajemen termal
Arsitektur manajemen termal Windows didasarkan pada konsep ACPI zona termal. Model zona termal ACPI membutuhkan kerja sama antara firmware, sistem operasi, dan driver. Model ini mengabstraksi sensor dan perangkat pendingin dari komponen manajemen termal pusat melalui antarmuka yang terdefinisi dengan baik. Peningkatan manajemen termal didasarkan pada Bab 11 spesifikasi ACPI 5.0. Kerangka kerja manajemen termal Windows mengimplementasikan subset kemampuan yang dijelaskan dalam bab ini.
Komponen penting dari model adalah:
- Definisi zona termal platform yang dijelaskan untuk Windows melalui firmware. Zona termal adalah entitas abstrak yang memiliki nilai suhu terkait. Sistem operasi memantau suhu ini sehingga dapat menerapkan mitigasi termal ke perangkat di dalam zona. Zona ini berisi sekumpulan perangkat fungsional yang menghasilkan panas, dan subset perangkat yang pembuatan panasnya dapat dikontrol dengan menyesuaikan performa.
- Sensor suhu yang mewakili suhu wilayah. Sensor harus menerapkan antarmuka Read Temperature untuk mengambil suhu zona dari firmware atau driver suhu Windows.
- Antarmuka pendinginan termal untuk memungkinkan driver untuk perangkat dalam zona termal untuk menerapkan tindakan pendinginan pasif. Setiap driver terkelola harus memiliki antarmuka pendinginan untuk berpartisipasi dalam infrastruktur termal Windows.
- Manajer termal terpusat yang mengatur pendinginan dengan menginterpretasikan definisi zona termal dan memanggil antarmuka pada waktu yang diperlukan. Manajer termal diimplementasikan di kernel Windows dan tidak memerlukan pekerjaan dari perancang sistem.
Diagram blok berikut adalah gambaran umum arsitektur manajemen termal Windows. Komponen utama adalah manajer termal, zona termal, driver terkelola, dan sensor suhu. Zona termal menentukan perilaku pembatasan perangkat terkelolanya berdasarkan batasan yang disediakan oleh manajer termal. Algoritma yang digunakan oleh manajer termal menggunakan pembacaan suhu sensor untuk zona termal sebagai parameter inputnya.
Zona termal dalam sistem harus dijelaskan dalam firmware ACPI dan diekspos ke manajer termal melalui ACPI. Dengan informasi konfigurasi, manajer termal tahu berapa banyak zona termal yang perlu dikelola, kapan harus mulai membatasi setiap zona termal, dan perangkat mana yang merupakan bagian dari zona tersebut. Untuk memantau suhu, perancang sistem menyediakan dukungan di firmware ACPI untuk pemberitahuan termal.
Ketika manajer termal diberi tahu tentang peristiwa termal di zona enumerasi, itu akan mulai secara berkala mengevaluasi suhu zona dan menentukan persentase performa pembatasan termal untuk diterapkan ke perangkat di zona termal. Evaluasi ini dilakukan oleh algoritma pembatasan termal yang diuraikan dalam spesifikasi ACPI. Kemudian manajer termal memberi tahu semua perangkat di zona untuk membatasi performa dengan persentase tertentu dan driver perangkat menerjemahkan persentase pembatasan ke tindakan khusus kelas perangkat untuk mengurangi performa. Evaluasi dan pembatasan berkala akan berhenti ketika suhu zona termal turun di bawah suhu ambang pembatasan dan tidak diperlukan lagi pembatasan.
Perulangan umpan balik
Cara lain untuk memikirkan arsitektur manajemen termal adalah dalam hal input, direktur kebijakan, dan perangkat terkelola. Dalam diagram blok berikut, input ke perulangan umpan balik adalah suhu dan arus listrik. Input ini digunakan untuk menentukan kebijakan termal yang akan diterapkan. Manajer termal bergantung pada input suhu secara eksklusif, dan driver kebijakan dapat menggunakan input apa pun yang diinginkannya. Zona termal kemudian menerapkan kebijakan itu ke driver terkelolanya. Setelah kebijakan diterapkan, sensor akan memperbarui nilainya dan menutup perulangan.
Diagram blok berikut menunjukkan tiga tahap model respons termal. Input dari sensor suhu dan arus listrik memberikan informasi untuk membantu menentukan kebijakan termal apa yang akan diterapkan. Kebijakan ini diterapkan pada driver terkelola, yang kemudian memengaruhi pembacaan pada sensor. Proses ini diulang dalam perulangan umpan balik.
Tanggung jawab pelaksana sistem
Seperti disebutkan di atas, sejumlah komponen diperlukan untuk memiliki solusi termal Windows yang lengkap. Arsitektur kerangka kerja termal dirancang khusus sehingga tanggung jawab vendor perangkat keras dan integrator sistem dapat dipisahkan.
Komponen yang diperlukan untuk diimplementasikan mitra adalah:
Sensor
Driver sensor suhu harus disediakan oleh vendor perangkat keras. Mengingat bahwa sensor suhu tidak memerlukan pengetahuan tentang zona termal yang mengandalkannya, fungsionalitasnya harus standar di berbagai desain platform. Sensor kustom untuk driver kebijakan, seperti sensor saat ini, juga merupakan tanggung jawab vendor perangkat keras.
Zona termal
Zona termal dapat didefinisikan oleh vendor perangkat keras dan/atau integrator sistem. Semua sistem harus memiliki setidaknya satu zona termal yang menerapkan suhu matikan kritis (dan suhu hibernasi, jika didukung), yang dapat dilakukan oleh vendor perangkat keras atau integrator sistem. Namun, untuk zona termal lainnya yang memantau perangkat tertentu atau suhu kulit untuk mitigasi, adalah umum bagi integrator sistem untuk memiliki pengetahuan yang lebih spesifik tentang perilaku termal sistem. Dengan demikian, zona termal ini biasanya diimplementasikan oleh integrator sistem.
Antarmuka pendinginan termal untuk driver perangkat
Pengembang yang menulis driver untuk perangkat yang akan dikelola secara termal juga harus menjadi yang mengimplementasikan antarmuka pendinginan. Driver perangkat menggunakan antarmuka ini untuk memilih kerangka kerja manajemen termal. Driver perangkat memiliki pengetahuan khusus tentang kemampuan perangkat mereka. Driver yang sama ini harus mengimplementasikan antarmuka pendingin termal sehingga dapat menafsirkan tindakan yang diminta oleh zona termal dengan benar.
Sensor
Sensor memberikan input untuk menentukan kebijakan termal apa yang seharusnya. Windows hanya mendukung sensor suhu sebagai input ke manajer termal. Namun, driver kebijakan juga dapat mengambil input dari driver kustom, seperti driver sensor saat ini.
Sensor suhu
Sensor suhu menyediakan mode fungsionalitas berikut:
- Terus memantau perubahan suhu tanpa keterlibatan manajer termal atau zona termal.
- Memberi tahu manajer termal ketika suhu melewati ambang batas yang ditentukan oleh _PSV, _HOT, atau _CRT.
- Merespons kueri suhu dan mengembalikan nilai suhu saat ini.
Diagram berikut menunjukkan bagaimana fungsi pemantauan suhu selama pembatasan. Firmware ACPI atau driver sensor suhu harus memberi tahu manajer termal ketika suhu mencapai ambang batas yang telah ditentukan seperti _PSV, _HOT atau _CRT, dan kemudian menanggapi kueri berkala dari manajer termal untuk suhu saat ini. Periode kueri suhu ditentukan oleh _TSP.
Untuk memastikan bahwa manajer termal akan selalu diberi tahu ketika suhu melebihi ambang batas, gangguan sensor suhu harus selalu dapat dibangunkan (bahkan ketika sistem berada dalam Siaga Modern dan SoC dalam keadaan berdaya rendah). Jika gangguan sensor suhu tidak selalu dapat dibangunkan, setidaknya gangguan harus dikonfigurasi sebagai dipicu tingkat untuk menghindari potensi kehilangan gangguan.
Sensor termal dapat digunakan oleh beberapa zona termal, meskipun tidak boleh ada lebih dari satu sensor termal di zona termal.
Kami menyarankan agar perangkat keras sensor akurat hingga +/- 2oC.
Suhu yang dilaporkan oleh _TMP atau driver sensor suhu mungkin merupakan nilai aktual sensor, atau nilai yang diekstrapolasi berdasarkan beberapa sensor.
Ini biasanya disediakan oleh vendor perangkat keras. Windows mendukung dua implementasi untuk memantau suhu:
- Driver sensor suhu
- Berbasis ACPI
Implementasi 1: Driver sensor suhu
Driver sensor suhu hanya melaporkan suhu sensor. Driver ACPI akan mengeluarkan satu IOCTL yang beredar dengan driver sensor untuk mendeteksi persimpangan salah satu titik perjalanan. Selain itu, ACPI dapat mengeluarkan satu IOCTL tanpa waktu habis untuk membaca suhu saat ini. Driver sensor harus menangani pembatalan IOCTL baca, jika dibatalkan saat menunggu waktu habis kedaluwarsa. Sensor suhu harus mengimplementasikan antarmuka berikut:
typedef struct _THERMAL_WAIT_READ {
ULONG Timeout;
ULONG LowTemperature;
ULONG HighTemperature;
} THERMAL_WAIT_READ, *PTHERMAL_WAIT_READ;
#define IOCTL_THERMAL_READ_TEMPERATURE\
CTL_CODE(FILE_DEVICE_BATTERY, 0x24, METHOD_BUFFERED, FILE_READ_ACCESS)
Tabel berikut menjelaskan parameter input dan output untuk antarmuka pembacaan suhu.
Parameter | Deskripsi |
---|---|
Timeout | Waktu untuk menunggu sebelum mengembalikan data suhu, dalam milidetik. 0 menunjukkan suhu harus segera dibaca, tanpa menunggu. -1 menunjukkan bacaan seharusnya tidak kehabisan waktu. |
LowTemperature | Ambang batas bawah untuk mengembalikan suhu baru. Segera setelah suhu turun di bawah ambang suhu rendah, driver harus menyelesaikan IOCTL. Jika suhu sudah di bawah suhu rendah, IOCTL harus segera diselesaikan. |
HighTemperature | Ambang atas untuk mengembalikan suhu baru. Segera setelah suhu naik di atas ambang suhu tinggi, driver harus menyelesaikan IOCTL. Jika suhu sudah di atas suhu tinggi, IOCTL harus segera diselesaikan. |
Nilai pengembalian IOCTL | Buffer output berukuran ULONG yang akan mengembalikan suhu saat ini, dalam sepuluh derajat Kelvin. |
Satu sensor suhu dapat digunakan oleh satu zona termal atau beberapa zona termal. Untuk menentukan sensor suhu mana yang harus digunakan untuk zona termal, _DSM termal harus ditentukan pada zona termal, dan harus menerapkan fungsi 2. (Untuk kompatibilitas mundur, driver sensor suhu dapat dimuat di atas tumpukan zona termal. Namun, implementasi yang disukai adalah memiliki driver sensor yang terpisah dari tumpukan zona termal.) _DSM ini didefinisikan sebagai berikut:
ArgumenArg0: UUID = 14d399cd-7a27-4b18-8fb4-7cb7b9f4e500 Arg1: Revisi = 0 Arg2: Fungsi = 2 Arg3: Paket kosong Mengembalikan Referensi tunggal ke perangkat yang akan mengembalikan suhu zona termal.
Zona termal juga harus menentukan dependensi pada perangkat sensor suhu dengan _DEP. Berikut adalah contoh sederhana untuk implementasi _DSM perangkat sensor.
Device(\_SB.TSEN) {
Name(_HID, "FBKM0001") // temperature sensor device
}
ThermalZone(\_TZ.TZ01) {
Method(_DSM, 0x4, NotSerialized){
Switch (ToBuffer(Arg0)) {
Case (ToUUID("14d399cd-7a27-4b18-8fb4-7cb7b9f4e500")) {
Switch (ToInteger(Arg2)) {
Case(0) {
// _DSM functions 0 and 2 (bits 0 and 2) are supported
Return (Buffer() {0x5})
}
Case (2) {
Return ("\_SB.TSEN")
}
}
}
}
}
Method(_DEP) {
Return (Package() {\_SB.TSEN})
}
// Other thermal methods: _PSV, etc.
}
Untuk informasi selengkapnya, lihat Metode Khusus Perangkat untuk ekstensi termal Microsoft.
Implementasi 2: Berbasis ACPI
Firmware ACPI harus mendukung _TMP dan Memberi tahu 0x80, seperti yang didefinisikan dalam spesifikasi ACPI. Keuntungan dari pendekatan ini adalah tidak memerlukan driver tambahan yang diinstal pada sistem. Namun, pendekatan ini terbatas pada interaksi dengan sumber daya yang dapat diakses melalui wilayah operasi ACPI.
Kontrol kebijakan termal
Zona termal
Zona termal adalah entitas pembatasan termal individu. Ini memiliki karakteristik pembatasan termal sendiri, seperti titik perjalanan, laju sampel pembatasan, dan konstanta persamaan pembatasan. Satu zona termal mungkin mencakup beberapa perangkat pembatasan termal, yang masing-masing dapat berkontribusi pada peningkatan suhu di zona termal. Semua perangkat di zona termal yang sama harus mengikuti batasan yang sama yang diterapkan ke zona termal.
Untuk memastikan zona termal dan parameternya didefinisikan secara akurat, perancang sistem harus:
- Identifikasi titik panas dalam sasis sistem, dan tentukan bagaimana titik panas ini membuang panas ke sensor suhu. (Idealnya, sensor termal duduk di hot spot pada sistem, kecuali untuk sensor suhu kulit.)
- Mencirikan hubungan suhu sistem. Petakan pembacaan sensor suhu ke suhu komponen dan suhu kulit.
Ambang batas overthrottle
Dimulai dengan Windows 10, fitur baru yang disebut status zona termal, telah diperkenalkan ke dalam manajemen termal Windows, bersama dengan satu status: ditimpa. Ketika zona termal melebihi tingkat pembatasan yang dirancang perangkat, manajer termal akan memberi tahu komponen sistem operasi bahwa sistem ditimpa. Pemberitahuan ini memungkinkan sistem mengurangi beban kerja untuk meningkatkan status termal.
Manajer termal mempertahankan jumlah global dari jumlah zona termal yang berada dalam status overthrottled. Ketika jumlah meningkat di atas nol (0), manajer termal mengirimkan pemberitahuan Windows Notification Facility (WNF) ke sistem, yang menunjukkan bahwa itu overthrottled. Ketika jumlah zona yang dilewati kembali ke nol (0), manajer termal mengirimkan pemberitahuan WNF lain ke sistem, yang menunjukkan tidak ada zona yang dilewati.
Untuk menentukan ambang overthrottle untuk zona termal, _DSM termal harus ditentukan pada zona termal, dengan fungsi 3 diimplementasikan. _DSM ini didefinisikan sebagai berikut:
ArgumenArg0: UUID = 14d399cd-7a27-4b18-8fb4-7cb7b9f4e500 Arg1: Revisi = 0 Arg2: Fungsi = 3 Arg3: Paket kosong Mengembalikan nilai Bilangan Bulat dengan ambang batas overthrottle saat ini, dinyatakan sebagai persentase.
Berikut adalah contoh _DSM yang menunjukkan bahwa zona ditimpa, pada tingkat pembatasan 0% hingga 49%.
ThermalZone (TZ4) {
Name (_HID, "QCOM24AE")
Name (_UID, 0)
Name(_TZD, Package (){\_SB.CPU4, \_SB.CPU5, \_SB.CPU6, \_SB.CPU7})
Method(_PSV) { Return (3530) }
Name(_TC1, 1)
Name(_TC2, 1)
Name(_TSP, 1)
Name(_TZP, 0)
// _DSM - Device Specific Method
// Arg0: UUID Unique function identifier
// Arg1: Integer Revision Level
// Arg2: Integer Function Index (0 = Return Supported Functions)
// Arg3: Package Parameters
Method(_DSM, 0x4, NotSerialized) {
Switch (ToBuffer(Arg0)) {
Case (ToUUID("14d399cd-7a27-4b18-8fb4-7cb7b9f4e500")) {
Switch (ToInteger(Arg2)) {
Case(0) {
// _DSM functions 0 and 3 (bits 0 and 3) are supported
Return (Buffer() {0x9})
}
Case (3) {
Return (50) // overthrottled below 50%
}
}
}
}
}
} // end of TZ4
Ambang overthrottle akan dibaca kembali ketika Notify(0x81) diterima sebagai referensi ke zona termal.
Menerapkan objek ACPI
Tabel berikut mencantumkan semua objek ACPI yang perlu diimplementasikan di firmware ACPI untuk menentukan zona termal.
Kategori | Metode pengendalian |
---|---|
Mengidentifikasi perangkat yang terkandung dalam zona |
|
Tentukan ambang batas termal di mana tindakan harus diambil |
|
Menjelaskan perilaku pendinginan pasif |
|
Menjelaskan perilaku pendinginan aktif |
|
Mengatur kebijakan pendinginan aktif/pasif |
|
Batas Pembatasan Minimum |
|
Melaporkan suhu |
|
Memberi tahu manajer termal |
|
Tentukan perangkat sensor suhu |
|
Batas pembatasan minimum
Batas pembatasan minimum adalah metode _DSM ekstensi termal Microsoft yang membuat batas bawah untuk _PSV diminta dari perangkat yang dibatasi. Dengan kata lain, ini menentukan berapa banyak zona termal yang membatasi performa perangkat yang dikontrolnya. Jika ada, pembatasan minimum _DSM akan dibaca saat boot dan kapan saja zona termal menerima ACPI Notify (0x81). Pada setiap perulangan algoritma pendinginan pasif, berikut ini digunakan untuk menghitung perubahan batas performa (DP) yang diterapkan manajer termal untuk perangkat di zona tersebut:
DP [%] = _TC1 × (Tn – Tn₋₁) + _TC2 × (Tn – Tt) Kami kemudian menggunakan yang berikut ini untuk menghitung batas performa aktual:
Pn = Pn₋₁ – DP Dengan batas pembatasan minimum (MTL) yang diterapkan, persamaan kedua ini berubah menjadi:
Pn = max(Pn₋₁ – DP, MTL) Untuk menentukan batas pembatasan minimum untuk zona termal, _DSM termal harus ditentukan pada zona termal, dengan fungsi 1 diimplementasikan. _DSM ini didefinisikan sebagai berikut:
ArgumenArg0: UUID = 14d399cd-7a27-4b18-8fb4-7cb7b9f4e500 Arg1: Revisi = 0 Arg2: Fungsi = 1 Arg3: Paket kosong Mengembalikan nilai Bilangan Bulat dengan batas pembatasan minimum saat ini, dinyatakan sebagai persentase.
Berikut adalah contoh sederhana untuk pembatasan pembatasan _DSM tidak kurang dari 50 persen.
ThermalZone(\_TZ.TZ01) {
Method(_DSM, 0x4, NotSerialized) {
Switch (ToBuffer(Arg0)) {
Case (ToUUID("14d399cd-7a27-4b18-8fb4-7cb7b9f4e500")) {
Switch (ToInteger(Arg2)) {
Case(0) {
// _DSM functions 0 and 1 (bits 0 and 1) are supported
Return (Buffer() {0x3})
}
Case (1) {
Return (50)
}
}
}
}
}
Manajer termal dalam kernel
Manajer termal Windows diimplementasikan sebagai bagian dari kernel Windows. Ini memantau suhu semua zona termal dan menerapkan pembatasan termal yang sesuai.
Setiap kali manajer termal meminta driver ACPI untuk suhu saat ini, itu akan melakukan perhitungan tentang berapa banyak persentase performa pembatasan termal yang harus berlaku untuk semua perangkat pembatasan termal di zona termal. Batas termal dievaluasi dan diterapkan ketika ambang pendinginan pasif (_PSV) terlampaui, dan pada setiap interval pengambilan sampel suhu (_TSP) sampai suhu didinginkan di bawahnya dan batas termal kembali ke 100 persen. Perangkat keras harus mendeteksi kapan _PSV telah terlampaui dan harus memberi sinyal bahwa melalui pemberitahuan peristiwa ACPI perangkat keras.
Algoritma pembatasan termal
Algoritma pembatasan termal menggunakan persamaan berikut, yang didefinisikan dalam spesifikasi ACPI:
DP [%] = _TC1 × ( Tn – Tn₋₁ ) + _TC2 × (Tn – Tt) di mana
Tn = pembacaan suhu sensor suhu saat ini di zona termal dalam persepuluh derajat Kelvin. Tn₋₁ = suhu dari pembacaan sebelumnya. Tt = suhu target dalam persepuluh derajat Kelvin (_PSV). DP = perubahan performa diperlukan. Ini adalah nilai linier antara 0 (sepenuhnya dibatasi) dan 100 persen (tidak terhambat), yang akan diterapkan ke setiap perangkat pendingin di zona tersebut. Persamaan ini menjelaskan perulangan umpan balik antara perubahan suhu dan performa pembatasan. Dalam setiap iterasi perulangan, delta suhu antara pembacaan suhu saat ini dan sebelumnya membutuhkan performa P untuk mengurangi persentase DP. Nilai DP adalah jumlah pembatasan termal yang akan diterapkan. Banyak perangkat pendingin tidak memiliki respons termal linier terhadap mitigasi pendinginan. Dalam perangkat ini, batas termal adalah petunjuk untuk perangkat untuk menunjukkan berapa banyak pendinginan yang diperlukan. Setiap perangkat pendingin akan memiliki pemetaan sendiri dari nilai linier ini ke mitigasi termal khusus perangkat. Performa perangkat pembatasan mengurangi konsumsi daya dan pembangkit panas, yang menyebabkan suhu menurun.
Dua konstanta, _TC1 dan _TC2, mengontrol seberapa agresif pembatasan termal diterapkan dalam perulangan umpan balik ini. Semakin besar _TC1, semakin agresif pembatasan termal digunakan untuk mempertahankan suhu yang stabil. Semakin besar _TC2, semakin agresif pembatasan termal digunakan untuk mendorong suhu di dekat titik perjalanan.
Tabel berikut ini menyediakan contoh cara manajer termal menghitung dan menerapkan DP. Contoh ini menggunakan nilai parameter berikut:
Konfigurasi
- _PSV = 325oK
- _TC1 = 2
- _TC2 = 3
- _TSP = 5000 milidetik
- Asumsikan suhu terus naik 1 derajat setiap 5 detik.
Kolom paling kanan dalam tabel berikut (berlabel P) menunjukkan tingkat performa yang dibatasi yang dihasilkan dari memberlakukan batasan yang ditentukan oleh parameter ini.
Iterasi | Waktu | Tn | DP | P |
---|---|---|---|---|
1 | 0 detik | 326oK | = 2 × 1 + 3 × 1 = 5% | 95% |
2 | 5 detik | 327oK | = 2 × 1 + 3 × 2 = 8% | 87% |
3 | 10 detik | 328oK | = 2 × 1 + 3 × 3 = 11% | 76% |
4 | 15 detik | 320oK | = 2 × 1 + 3 × 4 = 14% | 62% |
5 | 20 detik | 330oK | = 2 × 1 + 3 × 5 = 17% | 45% |
... |
Driver kebijakan
Secara default, algoritma yang digunakan untuk menentukan persentase pembatasan seperti yang ditentukan oleh spesifikasi ACPI digunakan untuk semua zona termal. Seperti yang dijelaskan sebelumnya, algoritma ini hanya didasarkan pada sensor suhu yang melekat pada zona termal, yang dapat membatasi.
Jika algoritma yang berbeda lebih disukai, perancang sistem dapat menerapkan pendorong kebijakan untuk mewujudkan algoritma yang disukai. Driver kebijakan berada di atas tumpukan zona termal untuk zona yang dikontrolnya. Untuk zona ini, algoritma driver kebijakan dapat digunakan sebagai pengganti algoritma ACPI di manajer termal. Algoritma driver kebijakan memiliki kemampuan untuk mempertimbangkan informasi apa pun yang dapat diaksesnya sebagai input. Keputusan kebijakan yang dibuat oleh pengemudi diteruskan ke manajer termal, yang mencatat informasi dan meneruskannya ke zona termal untuk dilakukan.
Menggunakan pendorong kebijakan untuk zona termal berarti bahwa driver kebijakan—bukan ACPI dan bukan sistem operasi—bertanggung jawab sepenuhnya untuk memutuskan kapan harus membatasi zona dan berapa banyak.
Jika pengemudi kebijakan ada, semua titik perjalanan, semua konstanta termal, batas pembatasan minimum, dan sebagainya, sepenuhnya diabaikan. Sistem operasi tidak memiliki wawasan tentang mengapa zona termal diatur pada tingkat pembatasan saat ini. Beberapa manfaat datang dengan menggunakan driver kebijakan alih-alih solusi kepatutan. Driver kebijakan memanfaatkan proses bawaan perangkat pembatasan. Apa pun yang dapat dilakukan zona termal untuk memberikan mitigasi termal dapat dilakukan oleh pendorong kebijakan. Selain itu, diagnostik untuk manajemen termal Windows secara otomatis diwarisi.
Antarmuka kebijakan termal telah diperbarui untuk menyertakan parameter baru untuk menunjukkan apakah zona ditimpa atau tidak. Parameter ini diinisialisasi ke FALSE. Driver kebijakan lama tidak akan menyadari parameter baru, dan driver baru akan tahu bahwa parameter baru didukung, ketika mereka mendeteksi versi kebijakan '2'.
#define TZ_ACTIVATION_REASON_THERMAL 0x00000001
#define TZ_ACTIVATION_REASON_CURRENT 0x00000002
#define THERMAL_POLICY_VERSION_1 1
#define THERMAL_POLICY_VERSION_2 2
typedef struct _THERMAL_POLICY {
ULONG Version;
BOOLEAN WaitForUpdate;
BOOLEAN Hibernate;
BOOLEAN Critical;
ULONG ActivationReasons;
ULONG PassiveLimit;
ULONG ActiveLevel;
BOOLEAN OverThrottled;
} THERMAL_POLICY, *PTHERMAL_POLICY;
Driver kebijakan dapat menunjukkan bahwa zona termal ditimpa, dengan menyelesaikan kebijakan IOCTL dengan parameter OverThrottled yang diatur ke TRUE. Ketika kondisi termal membaik, driver kebijakan termal kemudian dapat menyelesaikan IOCTL dengan overThrottled reset ke FALSE, untuk menunjukkan bahwa zona termal telah pulih. Windows tidak akan mengharuskan driver kebijakan untuk dibatasi ketika bendera overthrottle diatur.
Perangkat yang dikelola secara termal
Zona termal mengontrol perilaku termal perangkat terkelola melalui driver mode kernel mereka. Satu perangkat pembatasan termal mungkin berada di beberapa zona termal. Ketika beberapa zona termal meminta persentase performa pembatasan termal yang berbeda, manajer termal memilih persentase performa pembatasan termal minimal untuk diterapkan ke perangkat pembatasan termal.
Banyak perangkat pendingin tidak memiliki respons termal linier terhadap mitigasi pendinginan. Dalam kasus ini, batas termal adalah petunjuk untuk perangkat tingkat pendinginan yang diperlukan. Setiap perangkat pendingin akan memiliki pemetaan sendiri dari nilai linier ini ke mitigasi termal spesifiknya.
Saat setiap driver perangkat dimuat, ACPI akan meminta Antarmuka Pendinginan Termal dan mendaftarkan setiap perangkat yang merespons sebagai perangkat pendingin. Nantinya, ketika pendinginan pasif sedang dalam proses dan batas termal untuk zona telah berubah, ACPI akan memanggil antarmuka ini pada setiap perangkat pendingin di zona tersebut. Perangkat pendingin kemudian akan memetakan batas termal yang disediakan ke karakteristik pendinginan spesifiknya, dan menerapkan mitigasi pendinginan yang sesuai. Perhatikan bahwa jika perangkat pendingin muncul di beberapa zona termal, batas termal yang paling membatasi perangkat (yaitu, persentase terendah) diteruskan ke perangkat.
Catatan Windows menyediakan implementasi bawaan pembatasan termal untuk prosesor, backlight, dan baterai metode kontrol ACPI.
Antarmuka pendinginan termal
Windows menyediakan titik ekstensi bagi driver perangkat untuk mendaftar sebagai perangkat pembatasan termal dan menerima permintaan persentase pembatasan termal. Perangkat kemudian bertanggung jawab untuk menerjemahkan persentase tersebut ke tindakan yang masuk akal untuk dirinya sendiri.
Perangkat yang ingin ditambahkan sebagai perangkat pembatasan termal harus terlebih dahulu menambahkan _HIDs ke dalam daftar perangkat termal zona termal lalu mengimplementasikan set antarmuka berikut. Saat setiap driver perangkat dimuat, ACPI akan meminta antarmuka ini dan mendaftarkan setiap perangkat yang merespons sebagai perangkat pendingin. Nantinya, ketika pendinginan pasif sedang dalam proses dan batas termal untuk zona telah berubah, ACPI akan memanggil antarmuka ini pada setiap perangkat pendingin di zona tersebut. Perangkat pendingin kemudian akan memetakan batas termal yang disediakan ke karakteristik pendinginan spesifiknya, dan menerapkan mitigasi pendinginan yang sesuai. Perhatikan bahwa jika perangkat pendingin muncul di beberapa zona termal, batas termal yang paling membatasi perangkat (yaitu, persentase terendah) diteruskan ke perangkat.
//
// Thermal client interface (devices implementing
// GUID_THERMAL_COOLING_INTERFACE)
//
typedef
_Function_class_(DEVICE_ACTIVE_COOLING)
VOID
DEVICE_ACTIVE_COOLING (
_Inout_opt_ PVOID Context,
_In_ BOOLEAN Engaged
);
typedef DEVICE_ACTIVE_COOLING *PDEVICE_ACTIVE_COOLING;
typedef
_Function_class_(DEVICE_PASSIVE_COOLING)
VOID
DEVICE_PASSIVE_COOLING (
_Inout_opt_ PVOID Context,
_In_ ULONG Percentage
);
typedef DEVICE_PASSIVE_COOLING *PDEVICE_PASSIVE_COOLING;
typedef struct _THERMAL_COOLING_INTERFACE {
//
// generic interface header
//
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
//
// Thermal cooling interface
//
ULONG Flags;
PDEVICE_ACTIVE_COOLING ActiveCooling;
PDEVICE_PASSIVE_COOLING PassiveCooling;
} THERMAL_COOLING_INTERFACE, *PTHERMAL_COOLING_INTERFACE;
#define THERMAL_COOLING_INTERFACE_VERSION 1
Prosesor
Untuk prosesor, manajer termal mengkomunikasikan persentase pembatasan termal ke manajer daya prosesor (PPM). Pembatasan termal prosesor adalah fitur bawaan Windows.
Agregator prosesor
Perangkat agregator prosesor memungkinkan parkir inti sebagai mitigasi termal. Zona dapat menentukan parkir inti sebagai mitigasi termal jika perangkat agregator prosesor adalah anggota zona termal. Prosesor tidak perlu dibatasi agar parkir inti terjadi. Implementasi ini bekerja secara paralel dengan prosesor logis idling (LPI). Perhatikan bahwa ini masih tunduk pada peringatan parkir inti. Secara khusus, setiap pekerjaan yang diafinisisikan ke inti yang diparkir akan menyebabkan inti berjalan.
Device(\_SB.PAGR) {
Name(_HID, "ACPI000C")
}
ThermalZone(\_TZ.TZ01) {
Name(_TZD, Package() {"\_SB.PAGR"})
// Other thermal methods: _PSV, etc.
}
Grafik
Agar driver miniport grafis pihak ketiga dikelola secara termal, driver harus berinteraksi dengan driver port grafis Windows, Dxgkrnl.sys. Dxgkrnl.sys memiliki antarmuka pendingin termal dan meneruskan permintaan pembatasan ke bawah tumpukan ke driver miniport. Driver miniport bertanggung jawab untuk menerjemahkan permintaan ke tindakan khusus untuk perangkatnya.
Diagram blok berikut menunjukkan arsitektur zona termal yang mengontrol GPU.
Lampu latar
Mengurangi lampu latar dapat secara dramatis meningkatkan kondisi termal pada platform seluler. Windows merekomendasikan agar saat beroperasi, kecerahan tampilan sistem tidak pernah dibatasi secara termal hingga kurang dari 100 nits.
Untuk kontrol lampu latar, manajer termal mengkomunikasikan persentase pembatasan termal ke driver monitor, Monitor.sys. Monitor.sys akan memutuskan pengaturan tingkat backlight aktual berdasarkan input termal ini dan input lain di Windows. Kemudian Monitor.sys akan menerapkan pengaturan tingkat backlight melalui ACPI atau driver tampilan.
Perhatikan bahwa jika suhu zona termal yang mencakup lampu latar terus meningkat, persentase pembatasan termal yang diminta pada akhirnya mungkin turun ke nol persen. Implementasi tingkat backlight di ACPI atau driver tampilan harus memastikan bahwa tingkat kecerahan minimal yang tersedia untuk kontrol performa masih terlihat untuk pengguna akhir.
Catatan Saat beroperasi, kecerahan tampilan sistem tidak pernah dibatasi secara termal hingga kurang dari 100 nits.
Baterai
Sumber panas utama lain dalam sistem adalah pengisian daya baterai. Dari perspektif pengguna, pengisian daya harus dikurangi dan bahkan sepenuhnya dihentikan dalam kondisi termal yang dibatasi. Namun, pengisian daya baterai tidak boleh dihalangi di bawah kasus penggunaan normal.
Catatan Sebaiknya pengisian daya baterai tidak dibatasi saat sistem (1) tidak aktif dan dalam rentang suhu sekitar di bawah 35oC, atau (2) dalam kondisi apa pun sementara suhu sekitar di bawah 25oC.
Driver miniclass Baterai Metode Kontrol Windows, Cmbatt.sys, menggunakan Antarmuka Pendinginan Termal secara langsung, seperti yang dijelaskan di atas. Firmware bertanggung jawab untuk mempertimbangkan batas termal saat ini saat melibatkan pengisian daya. Metode kontrol ACPI baru diperlukan untuk mengatur batas termal untuk pengisian daya. Metode ini diimplementasikan sebagai Metode Khusus Perangkat (_DSM), seperti yang didefinisikan dalam spesifikasi ACPI 5.0, Bagian 9.14.1.
Untuk menerapkan persentase pembatasan termal, Cmbatt.sys akan mengevaluasi metode kontrol Metode Khusus Perangkat (_DSM) untuk meminta firmware ACPI menetapkan batas termal untuk pengisian daya. Dalam metode kontrol _DSM, GUID didefinisikan untuk menunjukkan batas termal.
Arg # | Nilai | Deskripsi |
---|---|---|
Arg0 | 4c2067e3-887d-475c-9720-4af1d3ed602e | UUID |
Arg1 | 0 | Revisi |
Arg2 | 1 | Fungsi |
Arg3 | Nilai bilangan bulat dari 0 hingga 100 | Batas termal untuk pengisian daya baterai. Setara dengan persentase penghitungan pembatasan pasif. |
Nilai pengembalian | T/A | Tidak ada nilai yang dikembalikan |
Pendinginan aktif
Dari sudut pandang sistem operasi, platform memiliki dua strategi yang dapat digunakan untuk menerapkan kontrol kipas angin:
Terapkan satu atau beberapa zona termal ACPI dengan titik perjalanan aktif untuk melibatkan/melepaskan kipas angin.
Kerangka kerja termal Windows mendukung perangkat pendingin aktif pada tingkat yang sangat dasar. Satu-satunya kotak masuk yang didukung perangkat adalah kipas ACPI, dan hanya dapat dikontrol dengan sinyal aktif/mati.
Terapkan solusi kepemilikan untuk mengontrol kipas angin (melalui driver, pengontrol tertanam, dll.).
Meskipun Windows tidak mengontrol perilaku solusi kepemilikan untuk penggemar, Windows mendukung pemberitahuan kipas ke manajer termal untuk semua implementasi termasuk pengontrol yang disematkan sehingga informasi diagnostik dan telemetri dapat dikumpulkan. Dengan demikian paparan kipas ke sistem operasi diperlukan untuk semua PC Siaga Modern dan sangat direkomendasikan untuk semua yang lain.
Perhatikan bahwa implementasi untuk pendinginan aktif benar-benar terpisah dari mitigasi pendinginan pasif yang sebelumnya dibahas.
Kontrol kipas menurut zona termal ACPI
Windows mendukung definisi kipas berbasis status ACPI 1.0 D. (Untuk informasi selengkapnya, lihat spesifikasi ACPI.) Dengan demikian, kontrol terbatas pada kipas hidup dan mati. Driver untuk kipas disediakan di driver Windows ACPI, Acpi.sys.
- Sensor suhu membaca suhu telah melewati titik perjalanan dan mengeluarkan Notify (0x80) pada zona termal terkait.
- Zona termal membaca suhu dengan metode kontrol _TMP dan membandingkan suhu dengan titik perjalanan aktif (_ACx) untuk memutuskan apakah kipas perlu menyala atau mati.
- Sistem operasi menempatkan perangkat kipas di D0 atau D3 yang menyebabkan kipas menyala atau mati.
Diagram blok berikut menunjukkan alur kontrol untuk kipas yang dikontrol oleh zona termal ACPI.
Scope(\_SB) {
Device(FAN) {
Name(_HID, EISAID("PNP0C0B"))
// additional methods to turn the fan on/off (_PR0, etc.)
}
ThermalZone(TZ0) {
Method(_TMP) {...}
Name(_AC0, 3200)
Name(_AL0, Package() {\_SB.FAN})
}
}
Kipas multi-kecepatan di ACPI
Untuk mencapai beberapa kecepatan untuk kipas angin menggunakan ACPI 1.0, ada dua opsi:
- Zona termal dapat berisi beberapa "kipas", ketika hanya ada satu kipas fisik. Memiliki lebih banyak "penggemar" pada satu waktu diterjemahkan ke kecepatan kipas yang lebih cepat. Untuk informasi selengkapnya, lihat contoh opsi ini di Bagian 11.7.2 dalam spesifikasi ACPI 5.0.
- Ketika kipas angin menyala, itu dapat memutuskan sendiri seberapa cepat berputar. Sistem dengan pengontrol yang disematkan, misalnya, dapat memilih opsi ini.
Solusi kepemilikan untuk penggemar
Windows harus dapat mendeteksi aktivitas kipas dengan salah satu implementasi. Ketika platform menggunakan model termal ACPI, Windows bertanggung jawab untuk mengaktifkan dan menonaktifkan kipas dan karena itu sudah tahu kapan aktif. Ketika solusi kepemilikan digunakan untuk mengontrol kipas, Windows memerlukan pemberitahuan bahwa kipas sedang berjalan. Untuk mengaktifkan ini, Windows akan mendukung sebagian subset ekstensi kipas ACPI 4.0, yang tercantum dalam tabel berikut.
Fitur | Deskripsi | Didukung |
---|---|---|
_FST | Mengembalikan status kipas. | ya |
Beri tahu(0x80) | Menunjukkan status kipas telah berubah. | ya |
_FIF | Mengembalikan informasi perangkat kipas. | tidak |
_FPS | Mengembalikan daftar status performa kipas. | tidak |
_FSL | Mengatur status performa kipas (kecepatan). | tidak |
Windows akan menggunakan objek _FST untuk menentukan apakah kipas berjalan (bidang Kontrol bukan nol) atau nonzero (Bidang kontrol nol). Windows juga akan mendukung Notify(0x80) pada perangkat kipas sebagai indikasi bahwa _FST telah berubah dan perlu dievaluasi ulang.
Kipas yang mengimplementasikan objek _FST tidak diharuskan berada dalam daftar perangkat _ALx zona termal, tetapi dapat, sebagai opsi, berada dalam daftar ini. Opsi ini memungkinkan solusi hibrid di mana kipas biasanya dikendalikan oleh driver pihak ketiga, tetapi dapat dikontrol oleh zona termal OS jika driver pihak ketiga tidak diinstal. Jika kipas berada dalam daftar perangkat _ALx dan dilibatkan oleh zona termal (ditempatkan di D0), objek _FST diperlukan untuk menunjukkan nilai Kontrol bukan nol.
Untuk semua kipas, Windows akan menggunakan algoritma berikut menentukan status kipas angin:
- Jika kipas berada di D0 (sebagai akibat dari titik perjalanan _ACx zona termal yang dilintasi), maka akan diaktifkan.
- Jika kipas berada di D3 dan tidak mendukung ekstensi ACPI 4.0, maka akan dilepaskan.
- Jika kipas berada di D3 dan mendukung ekstensi ACPI 4.0, sistem operasi akan memeriksa bidang Kontrol _FST untuk nilai bukan nol untuk melihat apakah kipas terlibat.
Contoh 1: Kontrol kipas perangkat keras
Dalam contoh ini, kipas dikendalikan oleh pengontrol tertanam.
- Pengontrol yang disematkan memutuskan untuk memulai atau menghentikan kipas berdasarkan algoritma internalnya sendiri.
- Setelah memulai atau menghentikan kipas, pengontrol yang disematkan mengeluarkan Notify(0x80) pada perangkat kipas.
- Sistem operasi mengevaluasi _FST dan membaca status baru kipas angin.
Diagram blok berikut menunjukkan alur kontrol untuk kipas yang dikontrol oleh pengontrol tertanam.
Contoh ASL berikut mendefinisikan perangkat "FAN" yang dapat memberi tahu sistem operasi perubahan dalam status kipas:
Scope(\_SB) {
Device(FAN) {
Name(_HID, EISAID("PNP0C0B"))
Name(_FST, Package() {0, 0, 0xffffffff})
// \_SB.FAN.SFST called by EC event handler upon fan status change
Method(SFST, 1) {
// Arg0 contains the new fan status
Store(Arg0, Index(_FST, 1))
Notify(\_SB.FAN, 0x80)
}
}
// Omitted: EC event handler
}
Contoh 2: Kontrol kipas driver
Dalam contoh ini, driver pihak ketiga mengontrol kipas angin.
- Driver memutuskan untuk memulai atau menghentikan kipas berdasarkan algoritma internalnya sendiri.
- Driver memodifikasi status kipas dan mengevaluasi metode kontrol kustom (SFST) pada perangkat termalnya.
- Metode kontrol perangkat termal memperbarui konten _FST perangkat kipas dan masalah Beri tahu (0x80) pada perangkat kipas.
- Sistem operasi mengevaluasi _FST dan membaca status baru kipas angin.
Diagram blok berikut menunjukkan alur kontrol untuk kipas yang dikendalikan oleh driver pihak ketiga.
Scope(\_SB) {
Device(FAN) {
Name(_HID, EISAID("PNP0C0B"))
Name(_FST, Package() {0, 0, 0xffffffff})
}
Device(THML) {
Name(_HID, "FBKM0001")
Method(SFST, 1) {
// Arg0 contains the new fan status
Store(Arg0, Index(\_SB.FAN._FST, 1))
Notify(\_SB.FAN, 0x80)
}
}
}
Kehadiran kipas
Platform menunjukkan bahwa ada kipas pada sistem dengan menyertakan perangkat kipas (PnP ID PNP0C0B) di namespace ACPI. Windows akan mengambil kehadiran perangkat ini sebagai indikasi bahwa sistem memiliki kipas angin, dan tidak adanya perangkat ini sebagai indikasi bahwa sistem tidak memiliki kipas angin.
Panduan khusus untuk Siaga Modern
Kerangka kerja manajemen termal Windows adalah bagian dari kernel dan pengiriman dengan semua sistem Windows. Dengan demikian, bahan di atas berlaku untuk semua mesin. Namun, berbagai jenis mesin memerlukan panduan tambahan yang lebih spesifik untuk Siaga Modern.
Modern Standby menghadirkan model daya ponsel pintar ke PC. Ini memberikan pengalaman pengguna instan dan instan yang diharapkan pengguna di ponsel mereka. Dan sama seperti di ponsel, Modern Standby memungkinkan sistem untuk tetap segar, terbaru, dan dapat dijangkau setiap kali jaringan yang sesuai tersedia. Windows 10 mendukung Modern Standby pada platform berdaya rendah yang memenuhi persyaratan sertifikasi Windows tertentu.
PC Siaga Modern adalah perangkat yang sangat seluler dalam bentuk tipis dan ringan. Selanjutnya, PC Siaga Modern selalu aktif dan dalam status ACPI S0. Untuk memberikan pengalaman pelanggan yang kuat dan andal, seluruh sistem — dari desain mekanis hingga implementasi firmware dan perangkat lunak — harus dirancang dengan perhatian penting terhadap karakteristik termal. Dengan demikian, semua PC Siaga Modern harus mematuhi persyaratan termal.
Persyaratan Siaga Modern
Semua PC Siaga Modern harus lulus tes HCK berikut:
- Semua PC Siaga Modern harus memiliki setidaknya satu zona termal tempat suhu matikan kritis (_CRT) ditentukan. Untuk sistem x86, sebaiknya tentukan suhu hibernasi kritis (_HOT) untuk memicu penghematan data pengguna. _HOT harus lebih rendah dari _CRT, dan _CRT harus lebih rendah dari titik perjalanan termal firmware yang gagal aman.
- Setiap zona termal harus melaporkan suhu aktual pada sensor (_TMP). Pengujian menjalankan berbagai beban kerja pada PC, dan suhu diperkirakan akan berubah.
Selain itu, kami sarankan setiap PC menyertakan setidaknya satu sensor suhu untuk SoC.
Persyaratan pendinginan aktif
PC Siaga Modern yang menggunakan kipas harus mematuhi persyaratan tambahan berikut, yang diuji dalam HCK:
- Kipas harus diekspos ke sistem operasi. Untuk informasi selengkapnya, lihat Kehadiran penggemar.
- Sistem operasi harus tahu setiap saat apakah kipas menyala atau nonaktif. Bahkan saat dalam ketahanan diam di Siaga Modern, setiap perubahan aktivitas kipas harus membangunkan SoC untuk memperbarui status. Untuk informasi selengkapnya tentang menerapkan pemberitahuan kipas, lihat Kontrol kipas oleh zona termal ACPI.
- Kipas angin tidak boleh menyala saat PC dalam Mode Siaga Modern. Dengan beban kerja yang realistis selama Siaga Modern, yang setiap kali layar dimatikan, kipas tidak boleh menyala.
Dari perspektif pengguna, PC tampaknya dimatikan saat berada di Siaga Modern. Pengguna mengharapkan PC dalam Siaga Modern bersifat seolah-olah berada dalam status "tidur" sistem. Dengan demikian, pengguna mengharapkan kipas untuk tidak pernah datang, sama seperti pada PC tradisional selama tidur. Jika kipas angin datang, pengguna mungkin mendengarnya dan/atau merasakan udara panas beredar dan berpikir bahwa komputer tidak berfungsi dengan benar. Oleh karena itu, kipas tidak boleh menyala saat berada di Siaga Modern. Untuk informasi selengkapnya tentang perilaku yang diperlukan, lihat Persyaratan pengujian HCK untuk PC siaga modern.
Persyaratan ini menyiratkan bahwa kebijakan pendinginan saat layar diaktifkan mungkin harus berbeda dari saat layar dimatikan. PC mungkin menggunakan pendinginan aktif saat layar menyala, tetapi hanya harus mengandalkan pendinginan pasif saat layar mati. Titik perjalanan aktif untuk kipas mungkin jauh lebih rendah ketika layar menyala daripada saat mati. Untuk implementasi ACPI, _ACx harus diperbarui pada entri ke Modern Standby. Untuk solusi kepemilikan, pastikan untuk memperbarui kebijakan di pengontrol yang disematkan.
Pembatasan prosesor
PPM mengomunikasikan tingkat performa maksimum, diinginkan, dan minimal ke PEP. Dalam kondisi pembatasan termal, tingkat performa maksimum harus sama dengan performa pembatasan yang diminta oleh manajer termal. PEP kemudian menetapkan tegangan fisik dan frekuensi CPU berdasarkan persyaratan tingkat performa PPM.
Sinyal Kebisingan Kipas
Mulai dari Windows 11, perangkat dapat mengirim sinyal kebisingan kipas ke OS untuk digunakan dalam keputusan manajemen sumber daya, dengan tujuan memberi pengguna pengalaman yang dingin dan tenang. Antarmuka keikutsertaan ini memungkinkan firmware untuk mengirim informasi RPM kipas ke OS sebagai nilai dari 0 (kipas nonaktif) ke MAX RPM, yang dapat digunakan OS dalam keputusan manajemen sumber daya untuk mendinginkan perangkat sesuai kebutuhan. Ini berkontribusi pada dua manfaat utama:
- Pengalaman Pengguna Yang Tenang: Kebisingan kipas dan hembusan udara panas adalah sumber ketidakpuasan pelanggan yang signifikan. Ini terutama berlaku ketika pengguna tidak mengharapkan aktivitas kipas berat, seperti ketika perangkat menjalankan jumlah pekerjaan yang rendah atau tidak ada pekerjaan latar depan.
- Peningkatan Masa Pakai Baterai: Kecepatan kipas yang lebih tinggi menghasilkan lebih banyak penggunaan daya, yang menyebabkan pengosongan baterai yang lebih cepat saat berada di DC dan pengisian daya yang lebih lambat saat menggunakan AC.
Saat ini, sinyal ini dapat digunakan untuk mengelola tugas Pengindeks Pencarian, dan ada rencana untuk mengaktifkan tugas latar belakang tambahan untuk menggunakan sinyal ini juga.
Diagram berikut merangkum bagaimana sinyal kebisingan kipas dikirim di lapisan dari firmware ke perangkat lunak.

Cara Kerja Sinyal Kebisingan Kipas
Detail Antarmuka ACPI
Di bawah ini adalah empat fungsi Metode Spesifik Perangkat (_DSM, UUID: A7611840-99FE-41ae-A488-35C75926C8EB) yang digunakan untuk mendukung fitur ini. Informasi tentang _FST (Status Kipas) dapat ditemukan pada bagian 11.3.1.4 spesifikasi ACPI dan di Contoh 1: Kontrol kipas perangkat keras dari Perangkat Terkelola Termal
Diagram berikut ini meringkas alur bagaimana fungsi-fungsi ini digunakan.

Diagram blok berikut menunjukkan alur kontrol untuk kipas yang dikontrol oleh pengontrol tertanam, termasuk metode kontrol Beri tahu(0x80).
Catatan
Fan Noise Signal tidak akan mengontrol FAN RPM tetapi sebaliknya memberi tahu OS ada kebisingan kipas yang mengharuskan pemindahan sumber daya CPU dari tugas latar belakang untuk menyelesaikan pekerjaan prioritas.
Menghitung Fungsi (Fungsi 0)
Agar sistem operasi berinteraksi dengan platform, perangkat ACPI harus diekspos melalui Namespace. Perangkat ini harus menyertakan objek _CID yang berisi EISAID("PNP0C0B"). Cakupan perangkat ini harus berisi definisi _DSM berikut yang menunjukkan _DSMs yang didukung perangkat.
UUID | Revisi | Fungsi | Deskripsi |
---|---|---|---|
A7611840-99FE-41ae-A488-35C75926C8EB |
0 |
0 |
Menghitung fungsi |
Kembali: Untuk menunjukkan dukungan untuk fungsi 0 hingga 3 yang tercantum di atas, fungsi Enumerate Functions (fungsi 0) harus mengembalikan 0xF. Silakan merujuk ke bagian 9.1.1 dari spesifikasi ACPI untuk informasi lebih lanjut.
Dapatkan Fungsi Dukungan Titik Perjalanan Kipas (Fungsi 1)
Perangkat keras memberi tahu OS apa yang didukung dalam hal RPM.
UUID | Revisi | Fungsi | Deskripsi |
---|---|---|---|
A7611840-99FE-41ae-A488-35C75926C8EB |
0 |
1 |
Dapatkan dukungan titik perjalanan kipas |
Argumen
Arg0: UUID: A7611840-99FE-41ae-A488- 35C75926C8EB
Arg1: Revisi: 0
Arg2: Fungsi: 1
Arg3: Paket kosong
Kembali: Nilai bilangan bulat yang berisi granularitas yang didukung untuk titik perjalanan kipas, dalam RPM. Jika bukan nol, OS dapat memilih titik perjalanan yang merupakan kelipatan granularitas pemberitahuan. Misalnya, dengan granularitas 200, OSPM akan diizinkan untuk memilih titik perjalanan di 0, 200, 400, 600, dll. Rpm. Nilai 0 menunjukkan titik perjalanan tidak didukung.
Mengatur Fungsi Titik Perjalanan Kipas (Fungsi 2)
OS berkomunikasi ke perangkat keras apa titik perjalanan pemberitahuan berikutnya; perangkat keras memberi tahu OS ketika itu terjadi.
UUID | Revisi | Fungsi | Deskripsi |
---|---|---|---|
A7611840-99FE-41ae-A488-35C75926C8EB |
0 |
2 |
Dapatkan poin perjalanan penggemar |
Argumen
Arg0: UUID: A7611840-99FE-41ae-A488-35C75926C8EB
Arg1: Revisi: 0
Arg2: Fungsi: 2
Arg3: Paket yang berisi titik perjalanan bawah dan atas. (2 elemen int. Lebih rendah pada indeks 0, Atas pada indeks 1)
OSPM hanya akan memilih titik perjalanan yang merupakan kelipatan granularitas titik perjalanan yang ditentukan dalam fungsi 1. Ketika kecepatan kipas yang sebenarnya berada di atas atau di bawah titik perjalanan atas/bawah, platform harus mengeluarkan Notify (0x80) pada perangkat kipas. OSPM kemudian akan mengevaluasi _FST (Status kipas) untuk menentukan kecepatan kipas saat ini. Jika kecepatan kipas sudah berada di luar titik perjalanan yang ditentukan saat titik perjalanan ditetapkan, platform harus segera mengeluarkan Pemberitahuan (0x80).
Titik perjalanan atas akan menjadi kelipatan granularitas. Titik perjalanan yang lebih rendah adalah (kelipatan granularitas) + 1 (titik perjalanan lebih rendah titik < perjalanan atas). Ketika RPM adalah 0, OS akan mengatur titik perjalanan yang lebih rendah ke 0, dan titik perjalanan atas ke 1.
Kembali: Tidak.
Mendapatkan Fungsi Rentang Operasi Kipas (Fungsi 3)
Pemetaan antara RPM –> Dampak. Harap dicatat bahwa hanya satu kipas (yang paling dekat dengan SoC) yang dapat mengimplementasikan antarmuka ini, itu harus mengimplementasikan semua 3 fungsi ditambah fungsi 0 dari bagian 9.1.1 dari spesifikasi ACPI.
UUID | Revisi | Fungsi | Deskripsi |
---|---|---|---|
A7611840-99FE-41ae-A488-35C75926C8EB |
0 |
3 |
Mendapatkan rentang operasi kipas |
Argumen
Arg0: UUID: A7611840-99FE-41ae-A488-35C75926C8EB
Arg1: Revisi: 0
Arg2: Fungsi: 3
Arg3: Paket kosong.
Kembali: Paket yang berisi format berikut:
Package () {
Impact1MaxRPM, // Integer (DWORD)
Impact2MaxRPM, // Integer (DWORD)
Impact3MaxRPM, // Integer (DWORD)
MaxRPM // Integer (DWORD)
}
Bidang | Format | Deskripsi |
---|---|---|
Impact1MaxRPM |
Bilangan bulat (DWORD) |
RPM maksimum untuk rentang dampak kipas 1. |
Impact2MaxRPM |
Bilangan bulat (DWORD) |
RPM maksimum untuk rentang dampak kipas 2. Harus >= Impact1MaxRPM. |
Impact3MaxRPM |
Bilangan bulat (DWORD) |
RPM maksimum untuk rentang dampak kipas 3. Harus >= Impact2MaxRPM. |
MaxRPM |
Bilangan bulat (DWORD) |
RPM maksimum yang dapat dioperasikan kipas angin. Harus >= Impact3MaxRPM. |
Tabel ini digunakan untuk memperoleh rentang RPM untuk setiap tingkat dampak kipas:
Skor Dampak | Nilai RPM Yang Lebih Rendah | Nilai RPM Atas |
---|---|---|
1 |
1 |
Impact1MaxRPM |
2 |
Impact1MaxRPM + 1 |
Impact2MaxRPM. |
3 |
Impact2MaxRPM + 1 |
Impact3MaxRPM |
4 |
Impact3MaxRPM + 1 |
MaxRPM |
Jika rentang dampak tidak digunakan oleh platform (misalnya, jika kipas beralih langsung dari rentang dampak 2 ke rentang dampak 4), itu dapat menunjukkan hal ini dengan mengatur RPM Maks untuk rentang dampak yang tidak digunakan sama dengan RPM maks untuk rentang dampak yang lebih rendah.
Contoh Pemetaan
Nilai Dikirim ke OS | KIPAS RPM | Pengalaman pengguna | Langit-langit RPM |
---|---|---|---|
0 – Rendah |
1-4000 RPM (<=25 dBA) |
Kipas tidak aktif atau aktif dengan gangguan rendah |
Impact1MaxRPM = 4000 |
1 – Sedang |
4001-5000 RPM (25-30 dBA) |
Kipas dengan gangguan sedang |
Impact2MaxRPM = 5000 |
2 – Medium-High |
5001-6000 RPM (30-36 dBA) |
Kipas dengan gangguan sedang-tinggi |
Impact3MaxRPM = 6000 |
3 – Tinggi |
6001+ RPM (36+ dBA) |
Kipas dengan gangguan tinggi |
MaxRPM = 9000 |
Contoh Kode ASL
...
// _DSM - Device Specific Method
// Arg0: UUID Unique function identifier
// Arg1: Integer Revision Level
// Arg2: Integer Function Index (0 = Return Supported Functions)
// Arg3: Package Parameters
Method(_DSM, 0x4, NotSerialized) {
If(LEqual(Arg0, ToUUID("A7611840-99FE-41ae-A488-35C75926C8EB"))) {
Switch (ToInteger(Arg2)) {
Case(0) {
// _DSM functions 0 through 3 are supported
Return (Buffer() {0xf})
}
Case(1) {
// Report 200 RPM granularity for trip points
Return (\_SB.FAN0.GRAN)
}
Case(2) {
// Save lower RPM trip point
Store(DeRefOf(Index(Arg3, 0)), \_SB.FAN0.LRPM)
// Save upper RPM trip point
Store(DeRefOf(Index(Arg3, 1)), \_SB.FAN0.URPM)
// Configure hardware for the trip points, Tell EC to set fan speed trip point.
\_SB.FAN0.CRNF()
Return (0)
}
Case(3) {
Return (Package(4) {
4000, // 1-4000 RPM is impact score 1
5000, // 4001-5000 RPM is impact score 2
6000, // 5001-6000 RPM is impact score 3
9000})// 6001-9000 RPM is impact score 4
}
Default {
Return(Buffer(One) { 0x00 }) // Guid mismatch
}
}
}
Else {
Return(Buffer(One) { 0x00 }) // Guid mismatch
}
}
} // end of FAN0
}
Pengujian dan Pelacakan
Silakan referensikan langkah-langkah berikut untuk mengumpulkan log dan melihat di Windows Penganalisis Kinerja (WPA):
- Pengaturan -> Mencari Windows -> Pengaturan Pengindeks Pencarian Tingkat Lanjut -> Tingkat Lanjut -> Menghapus dan membangun ulang indeks (Membangun Ulang)
- wpr -boottrace -addboot AcpiFanNoiseImpact.wprp –filemode
- Menghidupkan ulang sistem
- Periksa Status indeks Pengaturan -> Mencari Windows (pastikan perangkat tersambung dengan sumber daya AC.)
- Ketika indeks selesai, hentikan jejak: wpr -boottrace -stopboot AcpiFanNoiseImpact.etl (Batalkan pelacakan tanpa menyimpan: wpr -boottrace –cancel)
- Buka AcpiFanNoiseImpact.etl melalui Windows Penganalisis Kinerja (WPA).
Unduh file di AcpiFanNoiseImpact.zip Atau, salin yang berikut ini dan simpan sebagai AcpiFanNoiseImpact.wprp
<?xml version="1.0" encoding="utf-8"?>
<WindowsPerformanceRecorder Version="1.0" Comments="Test" Company="Microsoft Corporation" Copyright="Microsoft Corporation">
<Profiles>
<!-- BufferSizes are in KB in WPRP -->
<!-- System Collectors -->
<SystemCollector Id="MySystemCollector" Name="NT Kernel Logger">
<BufferSize Value="1024" />
<Buffers Value="100" />
<StackCaching BucketCount="2048" CacheSize="20480" />
<FlushThreshold Value="70" />
</SystemCollector>
<!-- Event Collectors -->
<EventCollector Id="MyEventCollector" Name="User Session Logger">
<BufferSize Value="1024" />
<Buffers Value="100" />
<StackCaching BucketCount="2048" CacheSize="20480" />
<FlushThreshold Value="70" />
</EventCollector>
<!-- System Providers for collecting kernel events. -->
<SystemProvider Id="SP_AcpiFanNoiseImpactTrace">
<Keywords Operation="Add">
<Keyword Value="Loader" />
<Keyword Value="Power" />
<Keyword Value="ProcessThread" />
</Keywords>
</SystemProvider>
<!-- System Providers for collecting kernel events. -->
<!---->
<EventProvider Id="EP_Microsoft-Windows-Kernel-Power" Name="Microsoft-Windows-Kernel-Power" Level="5" NonPagedMemory="true">
<Keywords>
<Keyword Value="0x2" />
</Keywords>
<CaptureStateOnStart>
<Keyword Value="0x0" />
</CaptureStateOnStart>
<CaptureStateOnSave>
<Keyword Value="0x0" />
</CaptureStateOnSave>
</EventProvider>
<EventProvider Id="EP_Microsoft-Windows-Kernel-Acpi" Name="Microsoft-Windows-Kernel-Acpi" Level="5">
<Keywords>
<Keyword Value="0xffffffff" />
</Keywords>
<CaptureStateOnSave>
<Keyword Value="0xffffffff" />
</CaptureStateOnSave>
</EventProvider>
<EventProvider Id="CustomEventProvider_Microsoft.Windows.SRUM.Telemetry_TraceLogging" Name="7073707A-0587-4E03-B31F-6443EB1ACBCD" Level="5" />
<EventProvider Id="CustomEventProvider_Microsoft.Windows.Kernel.Acpi_TraceLogging" Name="C42BBFDB-4140-4ada-81DF-2B9A18AC6A7B" Level="5" />
<EventProvider Id="CustomEventProvider_Microsoft.Windows.Kernel.Power_TraceLogging" Name="63bca7a1-77ec-4ea7-95d0-98d3f0c0ebf7" Level="5" />
<EventProvider Id="CustomEventProvider_AcpiTraceGuid_WPP" Name="03906A40-CCE8-447F-83F4-E2346215DB84" Level="7" />
<EventProvider Id="CustomEventProvider_Microsoft.Windows.CentralResourceManager_TraceLogging" Name="8215e965-d26e-548e-af0e-940c1f06f250" Level="5" NonPagedMemory="true">
<CaptureStateOnSave>
<Keyword Value="0xFFFFFFFFFFFFFFFF" />
</CaptureStateOnSave>
</EventProvider>
<Profile Id="PowerTrace.Verbose.File" LoggingMode="File" Name="PowerTrace" DetailLevel="Verbose" Description="Power trace logging">
<Collectors>
<SystemCollectorId Value="MySystemCollector">
<SystemProviderId Value="SP_AcpiFanNoiseImpactTrace" />
</SystemCollectorId>
<EventCollectorId Value="MyEventCollector">
<EventProviders>
<EventProviderId Value="EP_Microsoft-Windows-Kernel-Power" />
<EventProviderId Value="EP_Microsoft-Windows-Kernel-Acpi" />
<EventProviderId Value="CustomEventProvider_Microsoft.Windows.Kernel.Acpi_TraceLogging" />
<EventProviderId Value="CustomEventProvider_AcpiTraceGuid_WPP" />
<EventProviderId Value="CustomEventProvider_Microsoft.Windows.Kernel.Power_TraceLogging" />
<EventProviderId Value="CustomEventProvider_Microsoft.Windows.SRUM.Telemetry_TraceLogging" />
<EventProviderId Value="CustomEventProvider_Microsoft.Windows.CentralResourceManager_TraceLogging" />
</EventProviders>
</EventCollectorId>
</Collectors>
</Profile>
</Profiles>
<TraceMergeProperties>
<TraceMergeProperty Id="TraceMerge_Default" Name="TraceMerge_Default" Base="">
<DeletePreMergedTraceFiles Value="true" />
<FileCompression Value="true" />
<CustomEvents>
<CustomEvent Value="ImageId" />
<CustomEvent Value="BuildInfo" />
<CustomEvent Value="VolumeMapping" />
<CustomEvent Value="EventMetadata" />
<CustomEvent Value="PerfTrackMetadata" />
<CustomEvent Value="WinSAT" />
<CustomEvent Value="NetworkInterface" />
</CustomEvents>
</TraceMergeProperty>
</TraceMergeProperties>
</WindowsPerformanceRecorder>
Gambar di bawah ini adalah contoh grafik WPA yang menunjukkan pekerjaan Pengindeks Pencarian mundur saat kipas keras.
Ada satu tingkat kipas angin yang akan membuat indeks pencarian mundur secara penuh (tertinggi, yang seharusnya berdampak pada skor 4), tetapi semua tingkat kipas lain harus dikurangi aktivitas dan bukan penangguhan. Misalnya, jika ACPI menyatakan Impact3MaxRPM = 4000 RPM dalam fungsi 3 (Dapatkan fungsi rentang operasi kipas), ketika Fan RPM > 4000 (4100RPM, 4500RPM), kita akan melihat SearchIndexer.exe dan SearchProtocalHost.exe Penggunaan CPU akan ditangguhkan.
Catatan
Untuk melihat Penggunaan CPU, Anda dapat menggunakan wpr -start power -filemode untuk mengumpulkan penggunaan runtime. Gunakan wpr -stop fan_noise.etl untuk berhenti mengumpulkan log.
Gambar di bawah ini menunjukkan contoh grafik WPA yang menunjukkan penangguhan SearchIndexer.exe dan SearchProtocolHost