summaryrefslogtreecommitdiff
path: root/Documentation/cpu-freq
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2017-01-06 11:08:04 +0530
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-02-03 23:59:40 +0100
commit4e660759becfe91a8fb8a867a01dcb5e6f67dd26 (patch)
tree3d0c7869566310e832a1bf6b1acae254d03d9acf /Documentation/cpu-freq
parent801e0f378fe7d53f87246037bf40567277275418 (diff)
downloadlinux-4e660759becfe91a8fb8a867a01dcb5e6f67dd26.tar.gz
linux-4e660759becfe91a8fb8a867a01dcb5e6f67dd26.tar.bz2
linux-4e660759becfe91a8fb8a867a01dcb5e6f67dd26.zip
cpufreq: Documentation: Minor reformatting
This patch doesn't change the content of the documentation, but rather reformat it to make it more readable. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'Documentation/cpu-freq')
-rw-r--r--Documentation/cpu-freq/governors.txt205
1 files changed, 112 insertions, 93 deletions
diff --git a/Documentation/cpu-freq/governors.txt b/Documentation/cpu-freq/governors.txt
index c15aa75f5227..63eef4cca1b7 100644
--- a/Documentation/cpu-freq/governors.txt
+++ b/Documentation/cpu-freq/governors.txt
@@ -111,82 +111,96 @@ directory.
The CPUfreq governor "ondemand" sets the CPU depending on the
current usage. To do this the CPU must have the capability to
-switch the frequency very quickly. There are a number of sysfs file
-accessible parameters:
-
-sampling_rate: measured in uS (10^-6 seconds), this is how often you
-want the kernel to look at the CPU usage and to make decisions on
-what to do about the frequency. Typically this is set to values of
-around '10000' or more. It's default value is (cmp. with users-guide.txt):
-transition_latency * 1000
-Be aware that transition latency is in ns and sampling_rate is in us, so you
-get the same sysfs value by default.
-Sampling rate should always get adjusted considering the transition latency
-To set the sampling rate 750 times as high as the transition latency
-in the bash (as said, 1000 is default), do:
-echo `$(($(cat cpuinfo_transition_latency) * 750 / 1000)) \
- >ondemand/sampling_rate
-
-sampling_rate_min:
-The sampling rate is limited by the HW transition latency:
-transition_latency * 100
-Or by kernel restrictions:
-If CONFIG_NO_HZ_COMMON is set, the limit is 10ms fixed.
-If CONFIG_NO_HZ_COMMON is not set or nohz=off boot parameter is used, the
-limits depend on the CONFIG_HZ option:
-HZ=1000: min=20000us (20ms)
-HZ=250: min=80000us (80ms)
-HZ=100: min=200000us (200ms)
-The highest value of kernel and HW latency restrictions is shown and
-used as the minimum sampling rate.
-
-up_threshold: defines what the average CPU usage between the samplings
-of 'sampling_rate' needs to be for the kernel to make a decision on
-whether it should increase the frequency. For example when it is set
-to its default value of '95' it means that between the checking
-intervals the CPU needs to be on average more than 95% in use to then
-decide that the CPU frequency needs to be increased.
-
-ignore_nice_load: this parameter takes a value of '0' or '1'. When
-set to '0' (its default), all processes are counted towards the
-'cpu utilisation' value. When set to '1', the processes that are
-run with a 'nice' value will not count (and thus be ignored) in the
-overall usage calculation. This is useful if you are running a CPU
-intensive calculation on your laptop that you do not care how long it
-takes to complete as you can 'nice' it and prevent it from taking part
-in the deciding process of whether to increase your CPU frequency.
-
-sampling_down_factor: this parameter controls the rate at which the
-kernel makes a decision on when to decrease the frequency while running
-at top speed. When set to 1 (the default) decisions to reevaluate load
-are made at the same interval regardless of current clock speed. But
-when set to greater than 1 (e.g. 100) it acts as a multiplier for the
-scheduling interval for reevaluating load when the CPU is at its top
-speed due to high load. This improves performance by reducing the overhead
-of load evaluation and helping the CPU stay at its top speed when truly
-busy, rather than shifting back and forth in speed. This tunable has no
-effect on behavior at lower speeds/lower CPU loads.
-
-powersave_bias: this parameter takes a value between 0 to 1000. It
-defines the percentage (times 10) value of the target frequency that
-will be shaved off of the target. For example, when set to 100 -- 10%,
-when ondemand governor would have targeted 1000 MHz, it will target
-1000 MHz - (10% of 1000 MHz) = 900 MHz instead. This is set to 0
-(disabled) by default.
-When AMD frequency sensitivity powersave bias driver --
-drivers/cpufreq/amd_freq_sensitivity.c is loaded, this parameter
-defines the workload frequency sensitivity threshold in which a lower
-frequency is chosen instead of ondemand governor's original target.
-The frequency sensitivity is a hardware reported (on AMD Family 16h
-Processors and above) value between 0 to 100% that tells software how
-the performance of the workload running on a CPU will change when
-frequency changes. A workload with sensitivity of 0% (memory/IO-bound)
-will not perform any better on higher core frequency, whereas a
-workload with sensitivity of 100% (CPU-bound) will perform better
-higher the frequency. When the driver is loaded, this is set to 400
-by default -- for CPUs running workloads with sensitivity value below
-40%, a lower frequency is chosen. Unloading the driver or writing 0
-will disable this feature.
+switch the frequency very quickly.
+
+Sysfs files:
+
+* sampling_rate:
+
+ Measured in uS (10^-6 seconds), this is how often you want the kernel
+ to look at the CPU usage and to make decisions on what to do about the
+ frequency. Typically this is set to values of around '10000' or more.
+ It's default value is (cmp. with users-guide.txt): transition_latency
+ * 1000. Be aware that transition latency is in ns and sampling_rate
+ is in us, so you get the same sysfs value by default. Sampling rate
+ should always get adjusted considering the transition latency to set
+ the sampling rate 750 times as high as the transition latency in the
+ bash (as said, 1000 is default), do:
+
+ $ echo `$(($(cat cpuinfo_transition_latency) * 750 / 1000)) > ondemand/sampling_rate
+
+* sampling_rate_min:
+
+ The sampling rate is limited by the HW transition latency:
+ transition_latency * 100
+
+ Or by kernel restrictions:
+ - If CONFIG_NO_HZ_COMMON is set, the limit is 10ms fixed.
+ - If CONFIG_NO_HZ_COMMON is not set or nohz=off boot parameter is
+ used, the limits depend on the CONFIG_HZ option:
+ HZ=1000: min=20000us (20ms)
+ HZ=250: min=80000us (80ms)
+ HZ=100: min=200000us (200ms)
+
+ The highest value of kernel and HW latency restrictions is shown and
+ used as the minimum sampling rate.
+
+* up_threshold:
+
+ This defines what the average CPU usage between the samplings of
+ 'sampling_rate' needs to be for the kernel to make a decision on
+ whether it should increase the frequency. For example when it is set
+ to its default value of '95' it means that between the checking
+ intervals the CPU needs to be on average more than 95% in use to then
+ decide that the CPU frequency needs to be increased.
+
+* ignore_nice_load:
+
+ This parameter takes a value of '0' or '1'. When set to '0' (its
+ default), all processes are counted towards the 'cpu utilisation'
+ value. When set to '1', the processes that are run with a 'nice'
+ value will not count (and thus be ignored) in the overall usage
+ calculation. This is useful if you are running a CPU intensive
+ calculation on your laptop that you do not care how long it takes to
+ complete as you can 'nice' it and prevent it from taking part in the
+ deciding process of whether to increase your CPU frequency.
+
+* sampling_down_factor:
+
+ This parameter controls the rate at which the kernel makes a decision
+ on when to decrease the frequency while running at top speed. When set
+ to 1 (the default) decisions to reevaluate load are made at the same
+ interval regardless of current clock speed. But when set to greater
+ than 1 (e.g. 100) it acts as a multiplier for the scheduling interval
+ for reevaluating load when the CPU is at its top speed due to high
+ load. This improves performance by reducing the overhead of load
+ evaluation and helping the CPU stay at its top speed when truly busy,
+ rather than shifting back and forth in speed. This tunable has no
+ effect on behavior at lower speeds/lower CPU loads.
+
+* powersave_bias:
+
+ This parameter takes a value between 0 to 1000. It defines the
+ percentage (times 10) value of the target frequency that will be
+ shaved off of the target. For example, when set to 100 -- 10%, when
+ ondemand governor would have targeted 1000 MHz, it will target
+ 1000 MHz - (10% of 1000 MHz) = 900 MHz instead. This is set to 0
+ (disabled) by default.
+
+ When AMD frequency sensitivity powersave bias driver --
+ drivers/cpufreq/amd_freq_sensitivity.c is loaded, this parameter
+ defines the workload frequency sensitivity threshold in which a lower
+ frequency is chosen instead of ondemand governor's original target.
+ The frequency sensitivity is a hardware reported (on AMD Family 16h
+ Processors and above) value between 0 to 100% that tells software how
+ the performance of the workload running on a CPU will change when
+ frequency changes. A workload with sensitivity of 0% (memory/IO-bound)
+ will not perform any better on higher core frequency, whereas a
+ workload with sensitivity of 100% (CPU-bound) will perform better
+ higher the frequency. When the driver is loaded, this is set to 400 by
+ default -- for CPUs running workloads with sensitivity value below
+ 40%, a lower frequency is chosen. Unloading the driver or writing 0
+ will disable this feature.
2.5 Conservative
@@ -200,23 +214,28 @@ CPU. This behaviour more suitable in a battery powered environment.
The governor is tweaked in the same manner as the "ondemand" governor
through sysfs with the addition of:
-freq_step: this describes what percentage steps the cpu freq should be
-increased and decreased smoothly by. By default the cpu frequency will
-increase in 5% chunks of your maximum cpu frequency. You can change this
-value to anywhere between 0 and 100 where '0' will effectively lock your
-CPU at a speed regardless of its load whilst '100' will, in theory, make
-it behave identically to the "ondemand" governor.
-
-down_threshold: same as the 'up_threshold' found for the "ondemand"
-governor but for the opposite direction. For example when set to its
-default value of '20' it means that if the CPU usage needs to be below
-20% between samples to have the frequency decreased.
-
-sampling_down_factor: similar functionality as in "ondemand" governor.
-But in "conservative", it controls the rate at which the kernel makes
-a decision on when to decrease the frequency while running in any
-speed. Load for frequency increase is still evaluated every
-sampling rate.
+* freq_step:
+
+ This describes what percentage steps the cpu freq should be increased
+ and decreased smoothly by. By default the cpu frequency will increase
+ in 5% chunks of your maximum cpu frequency. You can change this value
+ to anywhere between 0 and 100 where '0' will effectively lock your CPU
+ at a speed regardless of its load whilst '100' will, in theory, make
+ it behave identically to the "ondemand" governor.
+
+* down_threshold:
+
+ Same as the 'up_threshold' found for the "ondemand" governor but for
+ the opposite direction. For example when set to its default value of
+ '20' it means that if the CPU usage needs to be below 20% between
+ samples to have the frequency decreased.
+
+* sampling_down_factor:
+
+ Similar functionality as in "ondemand" governor. But in
+ "conservative", it controls the rate at which the kernel makes a
+ decision on when to decrease the frequency while running in any speed.
+ Load for frequency increase is still evaluated every sampling rate.
3. The Governor Interface in the CPUfreq Core
=============================================
hsv.[_72 Jv~5. ߾:doihgW:۪֩Fˡ.G8xoCAi&K7~i L~^-7Ԭ6 'fc.5S'<ຏ4ws3_E j%fr9 3#khum-xw8t{LMCu':v6_w'8>hf:4}; _ڤޛYZ_6-LoiVÜauf{zQqOq$b+6ሐY}nԛVPmK䁞 {"Q/>MUidO'jj[."P3)CS =sAUcl`!3W+Ȭ#~ciA[ʓt9r|Ԡ֫x"55aj5mS]!\^G`NuQyorC6& 'ϊ3ٌeL:*V+]TmwiԴ4rM_U a+H<(Hp@PmZoOD> ?|'Yj"\%jjeԵ>ڳx?`%ÙmvdDE3O \&,N_j.⃁>gjD/~< B65ŚUcAK8]wh"`8z~E= 9ΖG{G',zraelm{-펾×~+nǶN; nb_`-_8ni tR?8£_ؕaȼd[,5[(b<"PHOmNuĪa7:0l2UgU2Ծ]0vd[/}V:.]ح*i`Qt7qqLc{(w֦z}0y4Ktl#` 7DKE#MES֖GBuL"I#uإ*0Z=kVZa5#?5sp ;\\t/c j{aK2DxvL0V.$GD9(/Ee7onDRo|<X֨)"LFAUis;xp̋~ە(v<;Y_^8=kHA$  ij A雅_-59]HF~#ev{tʄeL8ŕABR*pǥ2zG1WzonK@"&T~ofvvuzRT=hYIMvûnXnU)3>q~twO~5/,6ַԹլn (nyA1jY+mF̉DJޖPBXدurt,suc•bJ/i@H+A0kU n(E-4T=ľGFm.D9R#G .ciiۨ1#tBR3/(sRӲ=˴ GyҀcokv)smf۸oΑzv2INϝL|E隕l^wIpVy46.;M-/,ʖ)K,X{1M)8k5\cWn<%pATĊqlQ\pajp#`@Klc㘘KrT E)vGX񪄋8N/+(]7Y/D)>Af\ӤlEX(|\˹uѱf+ghPʘMUAUBcjDdסL,j@as1Qs>C|P*>.~cuU-i DakXG'Nesq`s/>DJl}G=!%`X-n;k>BcDB ؈v? 3ik$W,Ʈ TҠp!3M5KOѼQB+ub N/{ՠ\ <-dp #ذQ9]ՌB>vAAo3p@0[&5 #(~j@I@EJ~<織 -N^4(MAw #Y7v*6r=gqKJ@N6|.q8pG^2={|@~ 6&]=B=sY(v,!U+k=kR{Ðu]ÂwvC-0qލ} ,0 rDw6ვ ZFpz#'@673z>dB`|]% ua(%1@rkԕ5hE+xorp[ PZ–ۿ>63jE )L5y'%>'J PT4|l5!e( @N`q f= ("f}~xƶI3 *~0\@"U fLJgF( A1a=!XI~Hic}<2fjaj$!p)OSw|iթܟߚU?ȡ44+Ո$SB q#{QS-ţX;1ϤG8>L4űa_)Ch J4JC. Y]EꎳNKõ~! ƮRDUϧqH_kd(FZTHp8S+kGᒁǝ@j0L,HUhKߡ1r ,(/nz.6A=v_}MZ]^;M;epb\G{5鵪uzkdu56i횴Kk.-M #A|phGx'*߾GNwGVn[PJL7¬`K-i0:ϳgtE:N\ن*[Ttps A(me;w˖[tzwBwTh֢dʏ֋`(F]Ytlny~^=\eVgo{"@*K@o#~ѪH^KXw*QQW]͎Sy/Īr A]Qu^wӘt:W #n|ΥN_uei\=ޫTU)O Os2k"nsQi gn0 r @uG1Q vW7/4[[Y?|sヾ]12Nl -7ps Ox˺ԭ|87Ka2HD%~XT^>H'=u6>C[jgQΑ}:]φG;V{F<|j%J׻=h:N!ĖwwKu (;xvx07̝{+󍔨f2rC"Wu%Oӹ뀮1+Dz==o:H!<#KØjEDeHJ◐ CgtzF5ON# _9WOM'Dv>|g=h>d tH3 bgVkϻ$:s5r/ɞQT}(FLEF.zԊ51(x[e=;۵-g[7/Ρ/qqsֿl0r+L &rצf.4tHO՟̛r=ӆ1I1ס h.~kx+6B"?.< ٓҞqS# gMcne,}2p"uE[t‚ʖ;ufz!}!?+(;Oxp2(XavB<*ь}s_SՈ>!nג5>ʣy;:baپbut {5lv)UvfrbC! mVB*ͮGUC q$Lc{J ߹jbø̚;[-zJADX(" u/ hg,JMRԌuDY6Wx|&lC_ LV}xb|ʛmLz(+Th`Eeg(49=6ЗoFY؊5ƝGw>(F ݴnfMxQF `ǀaA!4@Oצ(*>YU*@ꤒ1AKj]3=M49S댓&싣R[c],geZցG$} qFa,|w~Ç$X {[kfoI=Q@p9=]f\⡋%2DwtRH}jۜk7',`G|sPmĈ$^_!}uB ihu̖d[6⠈ [ymaT$e |Ծ"K%{z#`~Q2ؑuy/ ɇp{N861%Q I'}Q$o:>?ɠ{;y揼țƏ{)?өҌ ]Ā`.6QwLYТD@vw.%L~WT` !M 9Xu09fC@Ѭv6 "߳~G!ӯSپP B ݐ̆PLMܝ7ݺZY~v?<|OyO"umNa[$M'Q?gUńP?ĴK?\@G/QKÕ~K;jl|Q~ &oɱK94n(0Jfs!HQ4NPqh.ٿf?39łQŗuz_ x9nt!#0Cm}NǶ $k}DivARʈQ㹆ui\z+3{ e5Y0pJ4o;~Syoe7tSm~e0aL#UУKuu.0]!~3~b]t[OO!fD(QRLa ýӮBQ{ bZ G0b:Q**<o/[a@c<"'1yۂ}zFnm -ˋ I=ng"Map9>ZF"C n١W`5ptTy` `-艘ʲ2FOO_m~mG-yAXjp:,23L;ošKǺb|R{.ež̓6Bk#,z㙢_ Xh?zjCb*uowXII.ת,WhQ|2%x@H~Һ OqK\EUDbؗr/e\!rO QsǾc!~QIΜqhXQN~_HEbE–d([ K>* RQ8ki?wx>Z "^bpWmcxz-IUy,}.Ucg},p75 +Q]HHUk*| E}B&/, ltI*++Txz&TCt <2rh \"tcȃ\G $?03n#N-qX[\Im2`| nG$n6Мş);"s~OGdYGj\5͍Խ+#̤e#kr#q ]ExϟƟ xɇ(ãF'9qK&p Nnsb2g^{E)nLWQK 0k7E׫F!ES)T(櫚28&B5טTu~}c5*Ob4$4#3۞w5`aT.ʡ~;~^Lؗ iT۽Թ)݇w7P pS?**Y?19 1H!yE࣑KvtK!ܟiϣnvL}-m Tzg~1Xtv atĎ\j~VJ%Ex$ бM#l&% RxqIN{ono/uYKܘ8&V3!Qw х NhZ)|Þg;CP&h&p1UL iPY:9XW78l8 4rx8n1oZD)ʙ ,?"&La.«@\9ޖ37_ cP6K,umgxI uvmSWaXq ̹E%5NA琁v /&t  <Q1Y G:(_ 2*%=Ky? ޞS[=ڐoFu?8_J/\WƷEʕb Yr2KCG/m]U頩q%nL&*[}Qx3ᤩO~fˋI Qb|m2׿<0ܛ.]+O:/MA&K:f%oS9R}lRy]YXՐmt +Xkfټs;GK Ru[v5v{P6eslȵ6>@sb"GYKxsY0Zq*S`-1ǝnWC/YWg N.,ݐqf] mq>=5 ?CDDHKft(^ ?Q_a@ e ̗)840Bx`b 7Ƕ"Ɗ?‘9{-iG9O¢_8IDS/Q_UEz?-<i{4`Rf%j٭Vz)L/0td yez7['iMqܼbTfm6V9h(`G5DRd@NI,1|K1B39`"m˯yņηXruJ_kc]qj}¯ed}oL%+^9.;.sTb&fhkd8r# JؠsbAB+ϳlέbSd_h[@~k>g rwv gѓlɣ&pHG#rː8DpXz@G3 {03e4!FP~vdJ!fs:/krq-#7v:/v/PswҼB an<1"[Y56h٫lz`KyvZ]!iBE&ACXpOwm1fu'Mj1\ 0sFXMSLSp8!4G*24_T@ *(MaT O7]\v'#"R%@GɬPg C?\U_ME)~$A$0B? c=b_lUPlQ5Kv==(S)l_I$JPGۺtJhnXN㉡<NR||qDGvo:jZ_>Kws˵i716P?eJOK+*9Nz)-Αb2f&5H"D 3Dr ׇ~Fnf} 1t>žo+X0A"zYeÖN`&ӳKvFLGki=pGxJj`v$gx+7uQ+WCłFA R_q2V#QĒ RO8gYBŎpOJq #$įE01hʬsjo)ٯђ{UӡZ;K%mpȠURX Ipp8ņ1V~rrp$1c0+VR+GWl;B/rZ9N5Omz1 }ɋs|sDZdטޮpnƌFclVA6@(#~\6"D[A?҉idEױ{_tH1 ^#Tr vi i 4%D̈!BARyfzISl 3t:k(YMRZFbaKW:ؙHr-߿8]udNJ3|q9=״@0h,͕"C-"V f ,:G]JQm=17?mg GaSVK7rdmWd  W[F\h .fہnפ!ڒLWucX=+׳\KK Xd[b%HJ8H9C}3O^.؛}Nd^|,bɦ=dkK70!oỐûDT @yѥ9#dl߮bozfvO((Er2+0ۀt8E<[;{vO/ >iw(t{H+$s z9OlӆðO϶X̏,uzB\hޚ^D: Q"s%ïɠ[K- CEa͹ i{澚'>cQ8%T{u³U;HЍYIRtjW1z)j8:1+ޮ'W+TO# ռI2Wˆ*b"zxJ-"jqTQiM(?,ONƭÔxxf~|y#YyV!KZp uejƠJBB)J9 Cwr)&0υ#cu33dC!N:IȋEwiz3!Il: i8D:?=̝fߨ]ޮ{*rM]Be7.`tjm Ҝ_ev_b"!栒Ha:a>]銎_XBH7:2fe5x%;;&mr;׋ư˖y#}C癗m!>D4Ӆh2@m=6`nE]rourc9V&Pix@ UR.*qY^L̏n3feqrgG0#hO;š賟wKsn @&):eʤLW%cӚAXxQ4͘8sa,vWYD<Ƴ68;`\xҏ԰KlLJ+߲hq1!< &ҶQ9ϣ«&Y dE^$bjr# ;s˝3 0 w ?dm_C^=;ݬ=f9xUFY_u>DST@1Tw4̾II|; xYMaqKiJ\}sAS|rvTys6\]̱6EH -q sKo֝ >n@ 6ME r8fffT(X`:;2ņ溃QW0p .v=l6'Ux Jtkaq:5>|to%͠9)/^nɅylx x-1;7bR]ک&DdޮF-#."F uqN vĶkܷ) 9muZ{BUyJz]O-\546*~~1~̲ݷ<*"҄bQNK]JQ2W|:] Lu+3"]<0m>?yNc]fH 5oʓ I>)X1g)QH]CٵKxU<~q33wͲc!:?_; [H:0/l2x-FUC_BkLA޽<ݶJҴ ΅,MגlmGSwLZn~j0|>p0tVs0=S.O@]jv[sr6:W[:A IUaHofMK6k"m3;h2XoLQM ((ӓbL*?q*;X5 '/; 0W=0ci,.>o&`&JRx-^**Fix;No\] ^xH;0LJ{ .I SRv+@OLM0?9Aq O1e8'E?R# 6a[P{F9ވGĖ F10`91^̀[à ,Dp“Qe붡bnӧ B5֊ _?QO!ZY\z`!x~+y5CaETEhȦ,sKV "ܻ3 /L* aÌy ΂naPh!DKAdcez.~]h2Ssu7K [ܣ r61;>^+;8p5^T4W-ybCBvM#IvpN:n1(A/}s$)$TΩDe!p7ss󔓁\*4aT"jW +9K@D:fؿ W+;}U+Ok:=>W>ӥrpp3;ҡ#!5Jp  ƒjCfDIه.?%/k9;rw:Us8WHԿ777K;9YvBFY ?g!BBBȩ6H0G[J"^yN( BbLnNʩ\c٘b>k➽T4J X+ˍӷ!7^ēzЩVBTLH{.^}%IZ'pbUR#ho>siG@|6St=vW16fSlT"S7`MC#߱ ޟ{k'ѐD;Py {O2R@m@+e9F&=fՂ.ߝɮED͐$9niBHku/)|@YMƷڹƺ<k!EXVׯ5c\gզ"d&_zTyo@jǟ-Kps~,.<"r/Fk4' е.thoа9ޫ=T-{>\DU9gxj2g#gE_l A#JSSʪ8UXo6DIK01 '~SlaW S-7kh!wI-V'sRBY,Ge~9o"[lYŤVqv<2,e[{DDɛ\""E=F߃jl!&W+f#<3-G2~1ȘڃӜiu2XݘFmYNvk݈ҐcqxCٍ*ؤF(pۯj (hέFӉ Qbw#Eaaʵz99{.Grx@:]+9BgFZ@2cw.1k;p}[W>T" `ݷ/,]F~XPR]G}8arQXu@Pa6Avtec^;7yD}5B8:] My b{ ';h~ 芞܆<. 8[vqq `ɶ; EGAH1d/nindF "׉Y'NM91хј))ZK[JIV:[A%%DloTsueS0|ku!8x2k7W9<,T+ XbCURy79>RQEigj3jpGAхZZL0qd9O;+)zd/8< aRMarSYD@2OBԱ9DXG.7+ؐ$ogc9ˆ ֣no4iȜ7!oWڛ& (HwqӉ= _UaZ1N?cʜ>_t<:nI[i MzqMNN4Z.;GPĎd ?s{O>^g1JjӬEAVKX靟qxGg: 5 .OfQԟ෋ A_yYq9;w44iV{Vk{ņꪏJip=JG5ʼ#d%7CƁ}ТJ0Y[-`'zo\rT4 [ʄʼnLI=V"ɣJ:_-sD0zsr23TAÎYS9 s:mJX)6o7]o9JR,x냪fڗ=!PImr;u;UY=Ҽkae~3ŕVx$;v痣uv͙y7k9bx*:x"ô3F9l xm.q /g]{Lq|ΩƕΕ$w.R$LhISZX]{ƷįFyRWSOO|n.0<11u)5lڈ5Nm?Nǎ]\cNj{LJ8\dyGsf/C;DׇpI&DwYRqVڑfuqLtê"h49of+ Nrr nuS%mȃpa%Ļ =(˔[Tq)MT,½D>]{q|rpLs5dT(b5Q)<a.82نжP[8IP?3̯]/ y'{3]rziFOCrN3 ~!{gCfs {Lj"5C'8V(F7PtduJG|qmU3e(h-4'Nm`ujX+H+~eij4ÿLwa ~CUph9𱜐Q<ԸFFybw#Ntv[J:tElVyUܻBX43T!˝E&:`\,zsۜkWٺj/{ԴKXqmߜucg'MF7[޺-!̱OYJV\׏}Gw J]y;@)Lً|r\`|\3OƢ^|g3?\v4r1c>Mg=[1?'Δn'2κv(lTѨ}>\p6CNk8!vq(\h˵Ø,xw]̈^XIB|3gB{rkZكSL 3AP]z;[[Daw0 eϮ# ~'ZP!eph ~F,y +z%XDEu~R@crn.0{@`هS0wPҁl6,nx1Qp!:֖Q O8f œ?G)#<,4Uol+= .oAnꋁ V\YMSA粳0gfZ1i䖪wMnwӠW먅YĎFP~[s=z*P*x8)hEYC3nLc@&c31D:#8\rŏaLO?O£\F=prB,nrPQbJL[nȾ J XE]xiɼIL^Մ+hM8?I2;KȇJk~f}}-6:^Y_j{gܥznK$2@54B8MI |zYW@Xh q䙝*ZqݎD@<$˓j~??·S3Vb1BFHSh'fG>g됤Gwr;:_OOMt˜jo7H}NvIlRV 2f48I]9[L gX2LX:C=V2"x "…(w#OK {z#IZKi1ZdK\Uv+a)'o-iW@/c$1_e4N 1hL1_]>La]YJ֞rߤR)M$4@q𣆺_&i%!5䅓2?!߷ij7Գ ;)̠ݖpPTX>BB_Lj(Uk &VˎA(ii8f)D4po:fV}4'S7d[1Z߃UkMmX`@XAX5ku ^iH'yNa׼(R\FX"AwhBj:C/7B-CBGQ*]M%~V弬x ;xa yLӰhD܌'3CxrjEԆhAxr;=I.kYr 彾V z%IJ>Roke~sǏ F5uPwa'$7,@cׇN~!(hQ3@ G#M_+wūU# (ggŐH WN(a?Ԍrƾqs߮2%&8wu_uü#c1BvJΉܘje*bE ^XUT#iV%=SU>"2,ΛGygS0B #s)1 Ȫg axʀ!ܓ} j 3!h&2L;J$j!7ZoW>1t̠ $D0|ɰtUv_{lY>p _1F%k^lۨGrV+Vi#8T&ֆSI(o.~F[qF.SߣU<-;Q14M&&Yrp)IbŚɥއpߤ 18e7JTF WF֣]}+VgM`>;w 2KghToKICSi{m>]͘"/|ֽ݉UUFХi\dgܪ :/C͌L/S ##G߭!eN0P[Rw{‡̜6PS̔C@T"**1`Q:!@sê!188o[qi+"*0y"A5xQ| e cY3}3zHK4/P?Pmͻw9)<:S5?&I^@|2S=_U ~FK،L[D'GmIťLd_hPE3Qy X@j|`[G*_eӢiNj/\z +g)KX{ h]~g"} v(!#I%y7ONV]UoLSƮ^8Vr!|[aBa n:bhٗ1FJJB*qTxQYOl29]M@-d`&ka(FY;]YFo\m,b]ס՜enWZE\@줝 &]t:{;7s8/gZ셿zO7E3%8DGW&c](6@mOg"Ρd* PV/V"U2V3k𰗅 kCQ]5x}BP{l ēFǑ%=6L CkF3J]:Lqz kW^3*jJlXd:^z&p8Uᢰ9xO[F3snLȇB0e^f;(2ǖ&/ܱ,qv6)?A q:bv?bU $#=^zG^jOoYm qiUM:Hl`?dnSbZe~vs&<Ek~)Cuԯ)t|_+G۲T^-`Ti?7@f~ʺZ|;ߚeeQ&Ww|>($v~ ҽGe먓Ex.lb;|!QAE?~)e+bдxݯ F%Y =b[-;OFM~  RJ?K͙y<÷ДCA@I2GI!h @8R .!y''TLM!@qEbh~/ޏl D UFmAO Cyphb_?lĻ&/Q8Dl(;D9y8ESէtO' x,С{~ŪWŻy8jlP"y˟Z3,ުcVRЄ-IƲiZ:8|zW(!$u\kh8lA#[[JGo隿3OߓXwO32Z -~}ŧ)yH˦q8qg"\eyqM,[I'Xř ?^Β{jl?T c)D?u-.O/t5E'Ty{";yg.(Oh BQNZG_rc\OGԟ`@RthO2i`!@ $R< _ܘ2,!>)1@8 yՑ_SEW" >Hʅh16i{?$.^P|w`S>Ǽ {[Gݺ F=aRzwBKd9h[I?` &#?b];+*uy׶?]?tAJPDY?ON?Ñ=#ӷ&kuah5 fo6ʛ JV *@&@ bG띒!D"h)JIOW!p%}TI-{A I%tB +믕O~J.uͷc 4>ot?o~3k'Ebopelͼ2FzE˗ͷ( `K_vo+s?8Llucl=zae7?au>jW&X(}Sө4M§iC?"E3;bF?e?_R 1Č1B}x&&|2?B΂@f-9zo>+3^_z'I:גYFˋ~O_%owz4VX*`.Fu?nPv>~}ױRn= #lv?1QչuzSkko ەE z%>^ j8g:$ 5wtpєu_uVF|V~_I#.ǃújW;C"UbޝN*Ej[d@m|s%CnD1e?Kt`arjh e4f`N셳93o7> X+1V$+eYs2/M?9^v%U'^ɛ|+g-Ӷh>N\>ߣ *:c]7?.A~4Ƽ4Z$O-8ADKp׫_%>vJN {/>8k}k~(bϔ}O Nq|{?D]qESX\v߫g39:}ߚ/ܾ'<PfbM$> V͎F4U"8~jOczӥ»Q2iTr\n0 ߙsˆ"jQKC>ЊFD9E!E]??F Cb[ 忷[<[~$RsE`A?Ŷ=`ahtK'f, lslT$c0xJTp P oпF67m::%#R!Hz32hL\$ˍ?]gۿE۽ޚ>}VOU m.ݾl_!;wDe'U}߱ɸ:nP3gN ,1ھgv_k>:tܽr=vՏp}z R:uT>wL<__(}jtb ֽo^jۺ!w{wU8[ne!R]hk`tN;Wb/پ?M#镾rN1ba8G>Es0Z_:dϿ y/|%"c]':RJv\eXP ^!w|>Y<_ {y(E,o0|SVɩ_>`)\y)ȢL)?z+kQLR&?lLRGؓ6LƉl6r^^Vz@V0ࣝ<(5o_׀Sa"CYh ߤQހi`b*=ߞ]xUT f:ΡxSQAl%sDQulr$h2UiP}.@ϯ*T(O-9=z| vmx>X"zkxb{@S!|Wfi܉wΐ* 掘dDxklZ'P^}z$ٓ^D%@e۫;kt:[5; l(DdM9zpU!ӱ Y~/idD//"\#\M,(- 1"4k|hbs񫄱L=m[t""% y @eDc5 D[~H>FBDݙӉ`A!.<03L_Pz;*#*3B'"vXQib%Y % ^lԢR+UsҲy#=},|Sj*@_p@&s.fd$I~=!9"Q,SKe5~5HC']P]P 5י)҂VfYl(܂]\E4G?MNs 5rmfFF6ۉwp$" X49گ m͒ Ϊ% 3; P<eK|:ʀj>jg^GFϟr<75%5T0-gαByjsysS @hˏ )3cg&cOmк0$ɬ.'a<ڌ˂_V7wS kzPh@g=t_`r }_lɝ|?ӳ!g~锁@mKK=l)7%dپy),'hH3c[g;L@K1dKmBַLz <.#-D;7&; o0uf~^42!F@ Ȏ%ʐh ¶}C:rWX-/eAM9Mc+FG`;ϡ3jh?4=W\pnaY̱GY;ͱk>ay\Q͗r3B?N-`C*ٮt آk= r]mjI fBEVZعѫ{z{o]gPM_7f^ܧm 1vMsΒDQlr4\⸬9FB{xbedh m[_KqΡ>wJ#8̴Ò-y~ư6IâgiKUZ81Ut%_9%&Et" MV2P;q;ERBC`y`WSZVO1aX 9 couU]biW1Z=:6ՎmuZÙ~XKe&z{AG&EI^([!5i[EZU_'284}{>>ZsFp\5e!I]9V)kA`RljQ*͞eG{OƝikG'H _UY5Ϊ H򗲃ݾ$d@>2 Fo6]9rtb@!1}h?,PK+o'M|Ÿ%p).<{-*i ¯xNN F<]s_U3Z/Ab-nqN\\| qQFq. VA8ws>^ᝯ;PW.ǝc'!~=p 4|9uuVp̾i_[`dsZJ%&B?N,/!:C["mɴ JB''|9!G(a@7i!T '~,أ@(7 0Ƀfجc։Y݅lxU&c15ilr>C: ɓ8V}Rgvm]iZz]measʒAN=8KR,`aK鬉bw;ܰȅUT'uz!"]ZՊ>^ML0PЏ?nt'ۢsZ;{Щ{1mѰ_#q-vSς[X=n.su8:zI og}K5JѯwELATkk-\9_1;Tzdi;,K_J=SytHL<%?]\jO}gx=NJ @(~?:TfPYliBcZ}P!!#`V #1vD{G GfVbPK%h:s;!?dP)G\)@H dd̥S*C.P9,vu l^y>F}@"-nPpT\9|;ƾSW{Äl}y>ؿ/ >;/ڣ~Z|=aB^{@>A 8szq*b J ZXQI17阌d0R ׊7z iXS(@ɠdQevgJH(_E0`\3VR n\BM)S=Pw,;ڤq7aۿ<,zDY -%;Ś[i=W5w[E*0ao*8s, ,2L>KC3ld~CW*>Rs ӳr hZPrz +E5H 7nܡ-44@5on)rz_W/Qn_潥ͭWZ۳;YjǙWG亼 ~oU1Ni%]2%ߜ".Q6J ` F5P~#34ϋ^o1Fx~2F*ΰNBۍ)sWXAٛI*FWMgmfV#$X='r(_ H` EsmړN: 7Ĝ(={y _0ttIpjPZ%ZAs94 %~D-#s 88Tkw[=_ql 3$ٞ"a'LJ[u$)eUl~^ .%0HLHVk=NSyRL%-6kv:96兵jw +ޔABmpp=N[ 8m8Q5 T=JGRQ"BٝVz뜝f0 |+.;]Iʔllhot \#x[qb &-16[sM29Is}.[_jhXG8ĶpgOu#V\ Z GтMV`Kk5x+]c{FNsnՕ Nqݨ4#it Sc[c;Wf_bNv>.ףZHe52R&N]|óC=J5iHpL;&yb1Ʊ!vxwv&)kSv;{*`(Ix5f/lrYiLE79F @Q]fkF.qA!hAaY}4AvdγMyWf*yiIAbOhsWn'e,z͚yAmzUK-p2ts"A zAܤ"X^BI^oʍSghZCP=B }#rvl?Џc>I=rTonp6C@Ƚs^u|Bk5c>ˈE}TرbŶՍC(_46Ԕ Pqa @RGhbŐ([l,޾2@gǞ>GRu}Y FLD8H:BȨBOeViHD#.^Xc\30 _gәm!QZ6h@ـI io` Hi6U#/`w؁ֽaw}`uT@ DiuH(`C Cg! 4Ma^ @zsTrqh)mG{ ׯݧ{7cr d iUi`կH|;|49~sqq03=^!Wߕxla65i5ZV!C;<; 8tO?@ 0'u J( h(h(*)j uy)im= V4h#Ul8 JQ;>OԠaA+(:a俸Gk,32Qlv-o܏Ie;?-=GXN|+koGv73_N6g ?) )̉ L  vk~j2ᣑlKB@b B@% ")JQTL3#5APTEUU4R+CHUU#L@R@Д (>/F??Q~ڃ0Pf3A DrեgjҳbV.V*eAEګmYhUXbU _VMd/Y5lZ.@R괅.@RVwIYi9̻m;Vv'jRclmXŭ+2Ӻ 9T+C 3˩{sպ ٗ`1n=uȁRaڜ(MB2hE\#En,xiAx9Pq*6=J,Bsuh%vCTRnA ?n3j\ĭz*k$za sɨ03;h%d%GRUb~UklώtP kW%IYv0x8GD$ĝ\ՙ%Ff9bL{˃".%O:6=6|0ꈤ&&37 5>_`b,{L\ r=J$QtKQխ7Ɋ+OUp=Y}YS>@ HCEhnÕXt9o0) s]7EI$JˮrwIJ.0>002iN\;7h$72韎&g_ NIKR ], z%g' ժHa$z7ަׯ,wq?Cޒ%DH•t*:EКDh%J J0 PC(`&d *TȔ(?"SD h !@y* T*~xU^XP`ţ-g{@(!Ad,T IA7ͽ<3ydd/$ L$ٳ}`ɬ1r4 t3zD/ѣ%: %*;+K_|j@DT$Q&küټ|2Nh ߕB@p(6N=30\յ Rw;b]oxegyL`!N،6T;A1% }='іGR%uPt$ $/CAmTL&^-R#{؃':0VبL* ب綱d:A_ o#?5[ݺ4'5nzӺxsmk|_T|`aܲx  C|DLQD~x'={Â'$)$B,HIB'0a<0@7מxg| 1!FmtŒuybqi$Jfj:j5µ$0&-^HccR ȁbݎ ">_Y񲏵Z].t-T/evP8FL0tdp!91BWVq\DKvU}U,{V1 ߳:|hV=3w"o"PT" (2t4`[B)"c[aT-),U1<&`n#I */K޹F`&GX"Nl `F;[2rwHd>2?d8ۍ|Bݐsә1O6eARi+YMlfJQ/rN1YDI DL4x@ d7V ̡z';~ڀţeMycfe,vFӯZyѺШc}z3Y0ucM$!Gζiu%9`园AQ lUGcwu?7QQ/r;~ ߎPӷ^?ˑ27/m5'H K{ӌcwf q<לWvcUh}kKzۆ/s2|Yv>ͯt_2kb`7ط#y/}UTjl:_+N 陵٘cȅ SpI j*_o9LI!WᱪgX{ PxH !Jagm}G(fwBo2w ݟahPDC. zÌYI @]׫mKgl濻$佮 cP `;x ÎܱGnb^ Bd; ]>O[_vF9*x`?Rў7U?jo\יZOR8C͚e} sFg%jJT D;G$7w=GWT4 ҭt}f PwE#O(̕yqc?X`l`_ z{_;  s1}tt4uzn |PjuK9 {a|K5W ,eA*,{O-%x6oQRuF-5r\]?v_UpCV(Gz^Upc?:lu]z9[O@?цx{ EuRXWIAc6w6V20?A#m3\珇fu%ɌV# EcJ˷{w*;ո{uPaQ |foS< 4GHPcp/,xݥm, Ԅ5@dHudv3POGӷ|Șœ!6|%lm)nFJT))H?ֶ2>Sv#fS|]c3J / Fz-UTM\(yD:# [[ᡒ>Ŕ\SAf'#@?):.XK<)Z& *ExΠ<ɣ9QuIH'/9wصȸ N~seѶmUV\2Z 3V6Ro]p  0(L5'_r/ϑv{>Aڡ.*`e\UQ*X[/*]y꣑޲ {DH$dh:?Nw?ՙr)Qܜ^֐sUV++/mu3-QqG?ek׫>ƿ#AX=0bs|usх#H D0J,Xz:ȧ >̼`f?Nm0DT٪b+{ 8ᨒ5N9l52c 8O*s/Eȸu}ARNG[?бVu!c C#/e.# (" @#Ez㎭{ @c>~5n"ܮR9m?p.J8r%v]_;$&HB߿ wXU:x]辽Ct,$d`Hl(tHNa~.2s(Z<5:toYΤ=C4&neRae礤4!ezsp>}} @YڜE"}EŬx#CcX>1cg3),˛ǮkotB`#"hŻ?պ7CbJj儘(.K:6ѥ&@N3ry{:dH`|!*>+,'M?&0 Ǒ8e ~.FQH%>gti r۝{]EuaatnssQBlk; )m FL%䐲ݒmXB ζhQfiSgr0 +(_xذb<䢀2;YADV n}k[>f9p=p4H`b4z& @PGS=S48%IXMhX1 LA) i % Lvy4QcXq]e޽+;Q&i,_T̈́0AA(Ct3C6SEtL1%;Gm8n ۿW]h0sZLpF9Do`szb&x^z?1oP1{CFN;i$>Cv*7PR&o,xo닝pLR#aHJ/ẁ ]w]uxU:݉3^!f5 RԚky8da((Ӵ|uϛUgg1Gd3>nm7khnQRAie&W 4Y.Gc"Y2T ť*MKvAxfJJS_֡D _*pE(8/c([:6WP 7xcWzhG=RLס X$ 8/{E߈nw'V~ߺL2.V :1o~??Җd>0Y )C_ۥ+KJbusD0fq0=8['v?Տ$ A 1$ǫ_ yI0 ~.BZbp΃;iRj)ɼQxz\F8d\[:]wm]feWd/[EiWᲷY^&DM irO{FOݾedp.~p8f+͢b4AF$ D J^3|36b3fe*^Lhx^*i=ZD3hC T5_0bcyǞUѦw GIg qdCkaGnDsɊCh🸿y|'Λ<\*@!6Qn[l6l.@5: O1dR rLvC0\K˥q3k&Y?J'Ċ;S bE vuvf27t:'3 "Q `(T~غ,4EE?pq7RT~=Tx{M )6J]`7v&tl|BƑlJĬE2Jvqe[ #䨑 Us"K9ab%aoÚ`