1*9c987b10SYanteng Si.. include:: ../disclaimer-zh_CN.rst
2*9c987b10SYanteng Si
3*9c987b10SYanteng Si:Original: Documentation/virt/guest-halt-polling.rst
4*9c987b10SYanteng Si
5*9c987b10SYanteng Si:翻译:
6*9c987b10SYanteng Si
7*9c987b10SYanteng Si 司延腾 Yanteng Si <siyanteng@loongson.cn>
8*9c987b10SYanteng Si
9*9c987b10SYanteng Si:校译:
10*9c987b10SYanteng Si
11*9c987b10SYanteng Si 时奎亮 Alex Shi <alexs@kernel.org>
12*9c987b10SYanteng Si
13*9c987b10SYanteng Si.. _cn_virt_guest-halt-polling:
14*9c987b10SYanteng Si
15*9c987b10SYanteng Si========================================
16*9c987b10SYanteng Si客户机停机轮询机制(Guest halt polling)
17*9c987b10SYanteng Si========================================
18*9c987b10SYanteng Si
19*9c987b10SYanteng Sicpuidle_haltpoll驱动,与haltpoll管理器一起,允许客户机vcpus在停机前轮询
20*9c987b10SYanteng Si一定的时间。
21*9c987b10SYanteng Si
22*9c987b10SYanteng Si这为物理机侧的轮询提供了以下好处:
23*9c987b10SYanteng Si
24*9c987b10SYanteng Si	1) 在执行轮询时,POLL标志被设置,这允许远程vCPU在执行唤醒时避免发送
25*9c987b10SYanteng Si	   IPI(以及处理IPI的相关成本)。
26*9c987b10SYanteng Si
27*9c987b10SYanteng Si	2) 可以避免虚拟机退出的成本。
28*9c987b10SYanteng Si
29*9c987b10SYanteng Si客户机侧轮询的缺点是,即使在物理机中的其他可运行任务中也会进行轮询。
30*9c987b10SYanteng Si
31*9c987b10SYanteng Si其基本逻辑如下。一个全局值,即guest_halt_poll_ns,是由用户配置的,表示允
32*9c987b10SYanteng Si许轮询的最大时间量。这个值是固定的。
33*9c987b10SYanteng Si
34*9c987b10SYanteng Si每个vcpu都有一个可调整的guest_halt_poll_ns("per-cpu guest_halt_poll_ns"),
35*9c987b10SYanteng Si它由算法响应事件进行调整(解释如下)。
36*9c987b10SYanteng Si
37*9c987b10SYanteng Si模块参数
38*9c987b10SYanteng Si========
39*9c987b10SYanteng Si
40*9c987b10SYanteng Sihaltpoll管理器有5个可调整的模块参数:
41*9c987b10SYanteng Si
42*9c987b10SYanteng Si1) guest_halt_poll_ns:
43*9c987b10SYanteng Si
44*9c987b10SYanteng Si轮询停机前执行的最大时间,以纳秒为单位。
45*9c987b10SYanteng Si
46*9c987b10SYanteng Si默认值: 200000
47*9c987b10SYanteng Si
48*9c987b10SYanteng Si2) guest_halt_poll_shrink:
49*9c987b10SYanteng Si
50*9c987b10SYanteng Si当唤醒事件发生在全局的guest_halt_poll_ns之后,用于缩减每个CPU的guest_halt_poll_ns
51*9c987b10SYanteng Si的划分系数。
52*9c987b10SYanteng Si
53*9c987b10SYanteng Si默认值: 2
54*9c987b10SYanteng Si
55*9c987b10SYanteng Si3) guest_halt_poll_grow:
56*9c987b10SYanteng Si
57*9c987b10SYanteng Si当事件发生在per-cpu guest_halt_poll_ns之后但在global guest_halt_poll_ns之前,
58*9c987b10SYanteng Si用于增长per-cpu guest_halt_poll_ns的乘法系数。
59*9c987b10SYanteng Si
60*9c987b10SYanteng Si默认值: 2
61*9c987b10SYanteng Si
62*9c987b10SYanteng Si4) guest_halt_poll_grow_start:
63*9c987b10SYanteng Si
64*9c987b10SYanteng Si在系统空闲的情况下,每个cpu guest_halt_poll_ns最终达到零。这个值设置了增长时的
65*9c987b10SYanteng Si初始每cpu guest_halt_poll_ns。这个值可以从10000开始增加,以避免在最初的增长阶
66*9c987b10SYanteng Si段出现失误。:
67*9c987b10SYanteng Si
68*9c987b10SYanteng Si10k, 20k, 40k, ... (例如,假设guest_halt_poll_grow=2).
69*9c987b10SYanteng Si
70*9c987b10SYanteng Si默认值: 50000
71*9c987b10SYanteng Si
72*9c987b10SYanteng Si5) guest_halt_poll_allow_shrink:
73*9c987b10SYanteng Si
74*9c987b10SYanteng Si允许缩减的Bool参数。设置为N以避免它(一旦达到全局的guest_halt_poll_ns值,每CPU的
75*9c987b10SYanteng Siguest_halt_poll_ns将保持高位)。
76*9c987b10SYanteng Si
77*9c987b10SYanteng Si默认值: Y
78*9c987b10SYanteng Si
79*9c987b10SYanteng Si模块参数可以从Debugfs文件中设置,在::
80*9c987b10SYanteng Si
81*9c987b10SYanteng Si	/sys/module/haltpoll/parameters/
82*9c987b10SYanteng Si
83*9c987b10SYanteng Si进一步说明
84*9c987b10SYanteng Si==========
85*9c987b10SYanteng Si
86*9c987b10SYanteng Si- 在设置guest_halt_poll_ns参数时应该小心,因为一个大的值有可能使几乎是完全空闲机
87*9c987b10SYanteng Si  器上的cpu使用率达到100%。
88