~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/zh_CN/scheduler/sched-bwc.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/translations/zh_CN/scheduler/sched-bwc.rst (Version linux-6.12-rc7) and /Documentation/translations/zh_CN/scheduler/sched-bwc.rst (Version linux-4.13.16)


  1 .. include:: ../disclaimer-zh_CN.rst              
  2                                                   
  3 :Original: Documentation/scheduler/sched-bwc.r    
  4                                                   
  5 :翻译:                                          
  6                                                   
  7  司延腾 Yanteng Si <siyanteng@loongson.cn>      
  8                                                   
  9 :校译:                                          
 10                                                   
 11                                                   
 12                                                   
 13 ============                                      
 14 CFS 带宽控制                                  
 15 ============                                      
 16                                                   
 17 .. note::                                         
 18    本文只讨论了SCHED_NORMAL的CPU带宽    
 19    SCHED_RT的情况在Documentation/scheduler    
 20                                                   
 21 CFS带宽控制是一个CONFIG_FAIR_GROUP_SCHE    
 22                                                   
 23 一个组允许的带宽是用配额和周期    
 24 达“配额”微秒的CPU时间。当cgroup    
 25 运行队列中。一旦所有的配额被分    
 26 能再次运行,直到下一个时期的配    
 27                                                   
 28 一个组的未分配配额是全局跟踪的    
 29 它以需求为基础被转移到cpu-local“    
 30 间片)。                                      
 31                                                   
 32 突发特性                                      
 33 --------                                          
 34 现在这个功能借来的时间是用于防    
 35 有很好的限制。                             
 36                                                   
 37 传统的(UP-EDF)带宽控制是这样的:    
 38                                                   
 39   (U = \Sum u_i) <= 1                             
 40                                                   
 41 这既保证了每个最后期限的实现,    
 42 们就必须运行超过一秒钟的程序时    
 43 时间赶上,无边无界的失败。           
 44                                                   
 45 突发特性观察到工作负载并不总是    
 46                                                   
 47 例如,让u_i = {x,e}_i,其中x是p(95)和    
 48 高了效率(我们可以在系统中打包    
 49 而,它确实保持了稳定性,因为只    
 50                                                   
 51 也就是说,假设我们有两个任务,    
 52 会,两个任务都在他们的配额内,    
 53 时超过他们的配额(保证最后期限    
 54 无法补偿;这取决于具体的CDFs。       
 55                                                   
 56 同时,我们可以说,最坏的情况下    
 57 设x+e确实是WCET的情况下)。             
 58                                                   
 59 使用突发时的干扰是由错过最后期    
 60 CPU未被充分利用时,干扰是有限的    
 61 https://lore.kernel.org/lkml/5371BD36-55AE-4F7    
 62                                                   
 63 管理                                            
 64 ----                                              
 65 配额、周期和突发是在cpu子系统内    
 66                                                   
 67 .. note::                                         
 68    本节描述的cgroupfs文件只适用于cg    
 69    :ref:`Documentation/admin-guide/cgroup-v2.r    
 70                                                   
 71 - cpu.cfs_quota_us:在一个时期内补充    
 72 - cpu.cfs_period_us:一个周期的长度(    
 73 - cpu.stat: 输出节流统计数据[下面进    
 74 - cpu.cfs_burst_us:最大累积运行时间    
 75                                                   
 76 默认值是::                                    
 77                                                   
 78         cpu.cfs_period_us=100ms                   
 79         cpu.cfs_quota_us=-1                       
 80         cpu.cfs_burst_us=0                        
 81                                                   
 82 cpu.cfs_quota_us的值为-1表示该组没有    
 83 了CFS的传统工作保护行为。              
 84                                                   
 85 写入不小于cpu.cfs_burst_us的任何(有    
 86 小配额是1ms。周期长度也有一个1s    
 87 面有更详细的解释。                       
 88                                                   
 89 向cpu.cfs_quota_us写入任何负值都会移    
 90                                                   
 91 cpu.cfs_burst_us的值为0表示该组不能    
 92 改变。将不大于 cpu.cfs_quota_us 的任    
 93 带宽累积的上限。                          
 94                                                   
 95 如果一个组处于受限状态,对该组    
 96                                                   
 97 系统范围设置                                
 98 ------------                                      
 99 为了提高效率,运行时间在全局池    
100 局核算压力。每次需要进行这种更    
101                                                   
102 这是可以通过procfs调整的::               
103                                                   
104         /proc/sys/kernel/sched_cfs_bandwidth_s    
105                                                   
106 较大的时间片段值将减少传输开销    
107                                                   
108 统计                                            
109 ----                                              
110 一个组的带宽统计数据通过cpu.stat    
111                                                   
112 cpu.stat:                                         
113                                                   
114 - nr_periods:已经过去的执行间隔的    
115 - nr_throttled: 该组已被节流/限制的    
116 - throttled_time: 该组的实体被限流的    
117 - nr_bursts:突发发生的周期数。         
118 - burst_time: 任何CPU在各个时期使用    
119                                                   
120 这个接口是只读的。                       
121                                                   
122 分层考虑                                      
123 --------                                          
124 该接口强制要求单个实体的带宽总    
125 允许过度订阅的,以便在一个层次    
126                                                   
127   例如,Sum (c_i)可能超过C                 
128                                                   
129 [ 其中C是父方的带宽,c_i是其子方    
130                                                   
131 .. note::                                         
132    译文中的父亲/孩子指的是cgroup pa    
133                                                   
134 有两种方式可以使一个组变得限流:    
135                                                   
136         a. 它在一段时期内完全消耗    
137         b. 父方的配额在其期间内全    
138                                                   
139 在上述b)情况下,即使孩子可能有    
140                                                   
141 CFS带宽配额的注意事项                    
142 ---------------------                             
143 一旦一个片断被分配给一个cpu,它    
144 1ms以外的所有时间片都可以返回到    
145 是一个性能调整,有助于防止对全    
146                                                   
147 cpu-local分片不会过期的事实导致了    
148                                                   
149 对于cgroup cpu限制的应用程序来说,    
150 额,以及每个cpu-本地片在每个时期    
151 cpuacct.用量的增加大致等于cfs_quota_u    
152                                                   
153 对于高线程、非cpu绑定的应用程序    
154 即任务组正在运行的每个cpu上未使    
155 义)。这种轻微的突发只适用于配    
156 量不会在核心之间转移。因此,这    
157 长的时间窗口。这也限制了突发能    
158 应用提供了更好的更可预测的用户    
159 另一种说法是,通过允许一个片断    
160 时间的cpu-local 筒仓上浪费配额的可    
161                                                   
162 绑定cpu和非绑定cpu的交互式应用之    
163 给了这些应用程序一半的cpu-core,    
164 可能在某些时期使用多达1ms的额外    
165 量。在这些情况下,将由CFS算法(    
166 的,并且有剩余的配额。这个运行    
167                                                   
168 例子                                            
169 ----                                              
170 1. 限制一个组的运行时间为1个CPU的    
171                                                   
172         如果周期是250ms,配额也是250    
173                                                   
174         # echo 250000 > cpu.cfs_quota_us /* qu    
175         # echo 250000 > cpu.cfs_period_us /* p    
176                                                   
177 2. 在多CPU机器上,将一个组的运行    
178                                                   
179    在500ms周期和1000ms配额的情况下    
180                                                   
181         # echo 1000000 > cpu.cfs_quota_us /* q    
182         # echo 500000 > cpu.cfs_period_us /* p    
183                                                   
184         这里较大的周期允许增加突    
185                                                   
186 3. 将一个组限制在1个CPU的20%。          
187                                                   
188    在50ms周期内,10ms配额将相当于1    
189                                                   
190         # echo 10000 > cpu.cfs_quota_us /* quo    
191         # echo 50000 > cpu.cfs_period_us /* pe    
192                                                   
193    通过在这里使用一个小的周期,    
194                                                   
195 4. 将一个组限制在1个CPU的40%,并允    
196                                                   
197    在50ms周期内,20ms配额将相当于1    
198    CPU的20%::                                    
199                                                   
200         # echo 20000 > cpu.cfs_quota_us /* quo    
201         # echo 50000 > cpu.cfs_period_us /* pe    
202         # echo 10000 > cpu.cfs_burst_us /* bur    
203                                                   
204    较大的缓冲区设置(不大于配额    
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php