Ito ay halos araw-araw na pangyayari upang makahanap ng mga kawili-wiling Linux kernel patch (at sa iba pang open-source na mga proyekto din!) ng Intel’s large cabal of open-source engineers. Ang pinakahuling pagtawid sa aking radar ay ang pagpayag sa driver ng Linux na”intel_idle”na tumakbo sa loob ng mga bisita ng virtual machine (VM).

Ang kilalang inhinyero ng Intel Linux na si Arjan van de Ven ay nag-post ng isang hanay ng mga patch para sa pagpapahintulot sa suporta ng driver ng intel_idle para sa mga virtual machine. Ang mga patch na ito na ipinares sa paparating na mga patch ng suporta ng C0.2 ay dapat magbigay ng magandang performance boost sa mga VM, lalo na sa mga nagtitiis ng matinding paggamit ng I/O.

Ipinaliwanag ni Arjan gamit ang ang mga patch:

intel_idle ay nagbibigay ng CPU Idle states (para sa power saving sa idle) sa cpuidle framework, batay sa per-cpu table na sinamahan ng limitadong hardware enumeration. Ang kumbinasyong ito ng cpuidle at intel_idle ay nagbibigay ng dynamic na gawi kung saan ang power saving at performance impact ay dynamic na balanse at kung saan ang isang set ng generic knobs ay ibinibigay sa sysfs para sa mga user na ibagay ang heuristics (at makakuha ng statistics etc)

Gayunpaman, ang intel_idle sa kasalukuyan ay hindi suportang tumatakbo sa loob ng mga bisita ng VM, at ang kernel ng linux ay bumabalik sa alinman sa ACPI based idle (kung sinusuportahan ng hypervisor/virtual bios) o ang default na x86 fallback na”hlt”based na idle method… na ipinakilala sa 1.2 kernel series… at kulang sa lahat ng dynamic na gawi, kontrol ng user, at istatistika na hatid ng cpuidle.

Bagaman ito ay malinaw na gumagana, hindi ito mahusay at makakagawa tayo ng mas mahusay para sa user sa pamamagitan ng pag-hook up ng intel_idle sa cpuidle framework para din sa”in a guest”case. At hindi lang hindi maganda para sa user, hindi rin ito optimal at kulang sa dalawang pangunahing kakayahan na sinusuportahan ng bare metal case:

1) Ang kakayahang i-flush ang TLB sa napakahabang panahon ng idle, para maiwasan isang magastos (at mataas na latency) IPI wakeup mamaya, ng isang idle vCPU kapag ang isang proseso na dating tumatakbo sa idle vCPU ay gumawa ng munmap o katulad na operasyon. Ang pag-iwas sa mataas na latency na IPI ay nakakatulong na maiwasan ang performance jitter.
2) Ang kakayahang gamitin ang bagong Intel C0.2 idle state sa halip na pagboto sa napakaikling tagal ng idle period para makatipid ng power (at carbon footprint)

Itong patch series ay nagdaragdag ng pangunahing suporta para tumakbo sa isang bisita ng VM sa intel_idle driver, at pagkatapos ay tinutugunan ang una sa mga pagkukulang na ito. Ang C0.2 gap ay aayusin sa isang maliit na karagdagang patch pagkatapos na ang C0.2 support ay pinagsama nang hiwalay.

Mahusay na trabaho at magiging interesante na subukan kapag ang C0.2 support patch ay handa na rin para makinabang ang pinakabagong mga server ng Intel Xeon Scalable.

Categories: IT Info