.. include:: ../disclaimer-zh_CN.rst :Original: Documentation/virt/guest-halt-polling.rst :翻译: å¸å»¶è…¾ Yanteng Si <siyanteng@loongson.cn> :æ ¡è¯‘: 时奎亮 Alex Shi <alexs@kernel.org> .. _cn_virt_guest-halt-polling: ======================================== 客户机åœæœºè½®è¯¢æœºåˆ¶ï¼ˆGuest halt polling) ======================================== cpuidle_haltpoll驱动,与haltpoll管ç†å™¨ä¸€èµ·ï¼Œå…许客户机vcpus在åœæœºå‰è½®è¯¢ 一定的时间。 这为物ç†æœºä¾§çš„轮询æ供了以下好处: 1) 在执行轮询时,POLLæ ‡å¿—è¢«è®¾ç½®ï¼Œè¿™å…许远程vCPU在执行唤醒时é¿å…å‘é€ IPI(以åŠå¤„ç†IPI的相关æˆæœ¬ï¼‰ã€‚ 2) å¯ä»¥é¿å…虚拟机退出的æˆæœ¬ã€‚ 客户机侧轮询的缺点是,å³ä½¿åœ¨ç‰©ç†æœºä¸çš„其他å¯è¿è¡Œä»»åŠ¡ä¸ä¹Ÿä¼šè¿›è¡Œè½®è¯¢ã€‚ 其基本逻辑如下。一个全局值,å³guest_halt_poll_ns,是由用户é…ç½®çš„ï¼Œè¡¨ç¤ºå… è®¸è½®è¯¢çš„æœ€å¤§æ—¶é—´é‡ã€‚这个值是固定的。 æ¯ä¸ªvcpu都有一个å¯è°ƒæ•´çš„guest_halt_poll_ns("per-cpu guest_halt_poll_ns"), 它由算法å“应事件进行调整(解释如下)。 模å—å‚æ•° ======== haltpoll管ç†å™¨æœ‰5个å¯è°ƒæ•´çš„模å—å‚æ•°: 1) guest_halt_poll_ns: 轮询åœæœºå‰æ‰§è¡Œçš„最大时间,以纳秒为å•ä½ã€‚ 默认值: 200000 2) guest_halt_poll_shrink: 当唤醒事件å‘生在全局的guest_halt_poll_ns之åŽï¼Œç”¨äºŽç¼©å‡æ¯ä¸ªCPUçš„guest_halt_poll_ns 的划分系数。 默认值: 2 3) guest_halt_poll_grow: 当事件å‘生在per-cpu guest_halt_poll_ns之åŽä½†åœ¨global guest_halt_poll_ns之å‰ï¼Œ 用于增长per-cpu guest_halt_poll_ns的乘法系数。 默认值: 2 4) guest_halt_poll_grow_start: 在系统空闲的情况下,æ¯ä¸ªcpu guest_halt_poll_ns最终达到零。这个值设置了增长时的 åˆå§‹æ¯cpu guest_halt_poll_ns。这个值å¯ä»¥ä»Ž10000å¼€å§‹å¢žåŠ ï¼Œä»¥é¿å…在最åˆçš„增长阶 段出现失误。: 10k, 20k, 40k, ... (例如,å‡è®¾guest_halt_poll_grow=2). 默认值: 50000 5) guest_halt_poll_allow_shrink: å…许缩å‡çš„Boolå‚数。设置为N以é¿å…它(一旦达到全局的guest_halt_poll_ns值,æ¯CPUçš„ guest_halt_poll_nså°†ä¿æŒé«˜ä½ï¼‰ã€‚ 默认值: Y 模å—å‚æ•°å¯ä»¥ä»ŽDebugfs文件ä¸è®¾ç½®ï¼Œåœ¨:: /sys/module/haltpoll/parameters/ 进一æ¥è¯´æ˜Ž ========== - 在设置guest_halt_poll_nså‚数时应该å°å¿ƒï¼Œå› 为一个大的值有å¯èƒ½ä½¿å‡ 乎是完全空闲机 器上的cpu使用率达到100%。