linux – 内核进程在高负载期间定期占用CPU
我运行一个具有24个内核的生产Web服务器,其中的工作是CPU和I / O密集型,但主要是CPU.当总CPU负载为~85%或更高时,我的脚本会延迟执行,以保持负载的可管理性.因此,CPU永远不会比我的脚本知道它能够处理更大的压力.
现在,我的服务器在一次最长3小时的时间块内完成最大容量生产.大部分时间工作进展顺利,但在这段时间的中间,CPU系统负载通常会急剧增加.这是由于内核进程“events / x”,“migration / x”和“ksoftirqd / x”,其中“x”是该进程的CPU编号.我已经读过,这表明内核正在努力排队,这会在压倒性的系统负载下发生.但是,正如我所提到的,我的CPU负载是主要的瓶颈,故意保持在~85%以避免这种问题. CPU的这种内核使用会大大减慢生产速度并且只会延长排队的任务.奇怪的是,在大约30分钟后,系统负载将消失,内核进程减少到零CPU使用率,之后才开始再次占用CPU.在整个这段时间内,输入CPU的工作量没有改变,通常处理得很好.但是,当这些内核进程启动时,它会完全杀死生产. 以下是其中一个事件中“top -u root”的输出.用户CPU使用率为49%,因为系统使用率为40%.通常这应该是用户~85%,系统~5%.但是,没有iowait,系统负载平均值为22(24个核心中),这是正常的. 热门次数 – 13:10:49最多44天,20:29,1位用户,平均负载:22.87,22.73,21.36 PID用户PR NI VIRT RES SHR S%CPU%MEM TIME COMMAND 当CPU负载严格控制为可管理时,是否有可能解释这些过程的行为?内存不是问题,因为缓冲区/缓存的使用率绝不会超过30%的系统容量.在搜索网络时,每个人都归咎于压倒性的系统负载,但我的服务器的行为并不表明所使用的资源应该导致这种锁定. 任何建议,将不胜感激. 编辑:我已经在答案部分发布了似乎是解决方案的内容. 解决方法
看来内核进程可能在转换到/从交换过程中窃取了CPU时间.服务器的缓存设置在不知情的情况下被重置,将swappiness设置为60.从“sar -W”的输出,挂起似乎与高负载时段一致,在此期间pswpin / s和pswpout / s很大(大于2.00左右,有时高达15.00).将swappiness设置为1之后,我没有遇到来自内核进程的相同挂起,并且sar -W始终显示接近零的值.总而言之,在大量且快速变化的资源需求期间,在高负载和大内存传输期间的积极交换似乎正在使系统陷入困境.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |