package Ġorg . opend c . simulator . compute . power Ċ Ċ import Ġkotlin . math . E Ċ import Ġkotlin . math . pow Ċ Ċ /** Ċ Ġ* ĠThe Ġas y mpt otic Ġpower Ġmodel Ġpartially Ġadapted Ġfrom ĠGreen Cloud . Ċ Ġ* Ċ Ġ* Ġ@ param Ġmax Power ĠThe Ġmaximum Ġpower Ġdraw Ġof Ġthe Ġserver Ġin ĠW . Ċ Ġ* Ġ@ param Ġidle Power ĠThe Ġpower Ġdraw Ġof Ġthe Ġserver Ġat Ġits Ġlowest Ġutil ization Ġlevel Ġin ĠW . Ċ Ġ* Ġ@ param Ġas ym Util ĠA Ġutil ization Ġlevel Ġat Ġwhich Ġthe Ġserver Ġatt ains Ġas y mpt otic , Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . e ., Ġclose Ġto Ġlinear Ġpower Ġconsumption Ġvers us Ġthe Ġoffered Ġload . Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFor Ġmost Ġof Ġthe ĠCP Us , a Ġis Ġin Ġ[ 0 . 2 , Ġ 0 . 5 ]. Ċ Ġ* Ġ@ param Ġis D vfs Enabled ĠA Ġflag Ġindicates Ġwhether ĠDV FS Ġis Ġenabled . Ċ Ġ*/ Ċ public Ġclass ĠAs y mpt otic Power Model ( ĊĠĠĠ Ġprivate Ġval Ġmax Power : ĠDouble , ĊĠĠĠ Ġprivate Ġval Ġidle Power : ĠDouble , ĊĠĠĠ Ġprivate Ġval Ġas ym Util : ĠDouble , ĊĠĠĠ Ġprivate Ġval Ġis D vfs Enabled : ĠBoolean , Ċ ) Ġ: ĠPower Model Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfactor : ĠDouble Ġ= Ġ( max Power Ġ- Ġidle Power ) Ġ/ Ġ 1 0 0 ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġcompute Power ( util ization : ĠDouble ): ĠDouble Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( is D vfs Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidle Power Ġ+ Ġ( factor Ġ* Ġ 1 0 0 ) Ġ/ Ġ 2 Ġ* Ġ( 1 Ġ+ Ġutil ization . pow ( 3 ) Ġ- ĠE . pow (- util ization . pow ( 3 ) Ġ/ Ġas ym Util )) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidle Power Ġ+ Ġ( factor Ġ* Ġ 1 0 0 ) Ġ/ Ġ 2 Ġ* Ġ( 1 Ġ+ Ġutil ization Ġ- ĠE . pow (- util ization Ġ/ Ġas ym Util )) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" As y mpt otic Power Model [ max =$ max Power , idle =$ idle Power , asy mpt otic =$ as ym Util ]" Ċ } Ċ