F5社区-F5技术交流中心

F5 BIG-IP系统的CPU

2020-07-07 21:38:01

欧阳晨曦

F5 BIG-IP系统的CPU

Drew Li

大家好,今天我们来聊一聊BIG-IPCPU,之后还会给大家分享一个关于CPU问题处理的用户实例,供大家参考。

相信大家在日常维护BIG-IP系统时会经常遇到CPU状态异常的问题,在这里我们主要介绍一下BIG-IP系统涉及到的关于CPU的一些知识,以便帮助大家在遇到CPU占用异常这类问题时,能够给大家问题处理带来更多的思路。

 

首先我们来回顾下与BIG-IP CPU相关的一些知识。

查询BIG-IP linux host的逻辑核,物理核,以及每个物理CPUcore

1.查询系统逻辑(processor)CPU个数:

# cat /proc/cpuinfo | grep 'processor' | wc -l

 

2.查询物理CPU个数:

# cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l

 

3.每个物理CPUCore的个数:

# cat /proc/cpuinfo | grep 'cpu cores' | wc -l

 

4.位于相同物理封装的处理器(physical id)中的逻辑处理器的数:

# cat /proc/cpuinfo | grep ' siblings ' | wc -l

以一台3900为例,分别查询3900逻辑CPU个数、物理CPU个数、core的个数以及位于相同物理封装的处理器中逻辑处理器的数量。

从上边的输出中我们可以看到39001个物理封装的CPU、逻辑CPU4个、1个物CPU上有4core1个物理封装内有逻辑处理器是4个。



5.利用如下命令查看平台所有CPU数据

# cat /proc/cpuinfo






TMMCPU使用率(K15468: Overview of BIG-IP TMM CPU usage)

由于TMM进程会直接参与流量处理,所以在这里需要花一点篇幅介绍下TMMCPU使用率。例如,可以使用如下命令查看TMMCPU使用情况(以Viprion 2100板卡为例)

# tmsh show /sys tmm-info





从图中我们能够清晰的看到每5秒、1分钟、5分钟的TMMCPU的使用情况。

在查询TMMCPU使用率的时候,大家可能注意到了,执行# tmsh show /sys tmm-info后,为什么我们只能看到偶数核的TMMCPU使用情况,却看不到奇数核TMMCPU使用情况?

想搞清楚这个问题那么我们就要从BIG-IP 11.5.0开始引入的奇偶数核,控制平面、数据平面任务分离的特性(HTsplit)讲起。

 

BIG IP系统使用Intel超线程技术CPU时,数据和控制平面任务被不同的逻辑核执行

在11.5.0版本之前,使用英特尔超线程技术(HT技术)物理CPU的系统上,每个支持HT技术的逻辑核,同时处理数据平面(TMM任务平面)和控制平面(非TMM任务,MCPDJava等)的任务。所以如果要让数据平面任务(TMM)与控制平面任务共享一个逻辑核,需要TMOSTMM和控制平面任务之间执行上下文切换。这种上下文切换,会显著影响系统性能,此外,控制平面和数据任务也可能相互阻塞。

因此BIG-IP 11.5.0之后,BIG-IP对数据平面和控制平面任务进行了拆分(K15003: Data and control plane tasks use separate logical cores when the BIG-IP system CPU uses Intel Hyper-Threading Technology),在使用HT技术的CPU上,数据和控制平面任务分离(HTsplit),数据平面任务和控制平面任务使用不同的逻辑核分别处理不同任务。数据平面、偶数核CPU处理TMM进程,即使在TMM所在偶数核CPU满载状态下,所有其他进程(非TMM进程)在控制平面逻辑核上继续执行任务。


那么奇数核的core就不能处理流量了嘛?

答案当然是否定的,偶数核超线程(024等)专用于TMM处理流量,作为数据平面任务的高优先级进程。奇数核超线程(135等)以正常优先级处理控制平面任务。

但是,当TMM利用率达到80%,奇数核超线程后会限制控制平面任务,只保留20%CPU容量,允许TMM使用剩余80%奇数核CPU资源。如果上述情况发生,在/var/log/kern.log 会有类似的log:

info kernel: ltm driver: Idle enforcer starting - tid: <pid> cpu: 1/1

info kernel: ltm driver: Idle enforcer exiting - tid: <pid> cpu: 1

 

判断硬件平台是否支持HT技术

参考K14358: Overview of Clustered Multiprocessing (11.3.0 and later),查看相关硬件平台是否支持HT技术。

或者通过如下命令# tmsh show sys tmm-info | grep Sys::TMM (K23505424: Overview of the HTSplit feature),从输出结果查看硬件平台是否支持HT技术。



通过命令查看,BIG-IP 6900不支持HT技术,而Viprion 2100支持HT技术。

 

SSL TPS(K6475: Overview of SSL TPS licensing limits)

在11.5.0之后版本,由于引入了奇偶数核,数据、控制平面任务处理分离特性(HTsplit,那么设备SSL TPS limits怎么计算呢?

以一台2000设备为例,如果在软硬件平台支持HTsplit特性的前提下,通过如下命令查询TMMSSL TPS

#tmsh show sys license detail | grep -i

perf_SSL_total_TPSperf_SSL_total_TPS [500]

查询TMM数量:

#tmsh show sys tmm-info global | grep -i 'TMM count'

TMM Count               2

那么,该设备能够处理的SSL TPS(2+2)*500=2K TPS

对于没有License控制SSL transaction TPS数量的设备,需要查询设备的datasheet确定硬件设备所支持的SSL transaction TPS

例如这台3900


需要注意Viprion和其他单框设备在计算SSL transaction TPS数量时的区别,

Viprion上执行

#tmsh show sys license detail | grep -i

命令输出为每块板卡支持的SSL transaction TPS,所以Viprion设备整框SSL transaction TPS=(#tmsh show sys license detail | grep -i perf_SSL_total_TPS)* Blade

 

CPU问题处理用户实例

下面将结合一个具体case来,应用下刚刚讲到的这些的知识点。下图取自一台BIG-IP 2000


下面我们来一起分析下导致CPU异常增高的原因。

1.确定客户所使用的LTM版本,客户使用版本是BIG-IP LTM 14.1.2,该版本支持CPU超线程(HT技术)。

 

2.确认硬件平台是否支持HTSplit特性(K23505424: Overview of the HTSplit feature)

# tmsh show sys tmm-info | grep Sys::TMM(客户是一台2000设备)

Sys::TMM: 0.0

Sys::TMM: 0.2

输出结果只看到了偶数核TMM,所以该平台支持HTSplit

 

3.确认客户软件db是否开启支持HTsplit特性

# tmsh list sys db scheduler.splitplanes.ltm

sys db scheduler.splitplanes.ltm {

value "true"

}

返回值“true”,所以客户版本支持HTsplit

 

4.观察性能统计发现奇数核CPU1/CPU3以及偶数核CPU0/CPU2CPU使用率趋近于100%


5.再来查看该设备的SSL transaction TPSLicense限制

# tmsh show sys license detail | grep -i perf_SSL_total_TPS

perf_SSL_total_TPS [500]

TMM Count               2

# tmsh show sys tmm-info global | grep -i 'TMM count'

那么,该2000设备所有TMM能够处理的SSL TPS(2+2)*500=2K TPS

 

6.观察SSL Transactions性能统计,图中显示大部分时间SSL请求数量没有达到系统硬件支持的最大SSL Transaction TPS。由于性能统计取的是系统平均值,所以不能确定系统的SSL Transactions TPS是否超限。


 

7.继续查看问题发生时间点的var/log/ltmvar/log/kern日志

var/log/ltm

Jun 12 13:12:07 err tmm1[10745]: 01260008:3: SSL transaction (TPS) rate limit reached

Jun 12 13:12:07 err tmm1[10745]: 01260008:3: SSL transaction (TPS) rate limit reached

Jun 12 13:12:07 err tmm1[10745]: 01260008:3: SSL transaction (TPS) rate limit reached

Jun 12 13:12:07 err tmm1[10745]: 01260008:3: SSL transaction (TPS) rate limit reached

Jun 12 13:12:07 err tmm1[10745]: 01260008:3: SSL transaction (TPS) rate limit reached

从该日志分析得到发生问题时间点TMM1SSL transaction TPS达到了处理上限。

 

var/log/kern

Jun 12 13:12:10 info kernel: : [19823538.874163] ltm driver: Idle enforcer exiting - tid: 5526 cpu: 1

Jun 12 13:12:10 info kernel: ltm driver: Idle enforcer exiting - tid: 5526 cpu: 1

Jun 12 13:12:10 kernel: : [19823538.945344] ltm driver: Idle enforcer starting - tid: 5527 cpu: 3/3

Jun 12 13:12:10 info kernel: ltm driver: Idle enforcer starting - tid: 5527 cpu: 3/3

从该日志分析得到发生问题时间点偶数核CPU超线程,奇数核CPU协助处理TMM流量。

 

8.case分析结论

综合以上7点,可以得出以下结论,

1).虽然该设备的的吞吐量,新建连接数等均没有达到硬件设计容量,但是,从var/log/ltm日志中我们可以看到,SSL transaction TPS已经达到或者超过了TMMSSL TPS处理上限。

2).SSL transaction TPS的超限后,TMM繁忙直接体现在了偶数核CPU使用率达到或者超过80%(统计中看已经基本达到了100%),从var/log/kern日志我们能看到TMM偶数核CPU使用率超过80%后,偶数核CPU超线程,奇数核CPU开始处理TMM流量,由于客户SSL transaction TPS并发请求太大,最终导致奇数核CPU使用率也趋近于100%

 

9.建议

因为客户的2000设备上,部署了超过100SSL业务的Virtual Server,客户端大部分访问请求都是通过VS443端口(HTTPS)转发到后端服务器,因此客户设备的SSL业务TPS请求数量会很高,当前TMM超线程后,虽然能够处理现有SSL高并发请求,但是设备已经出现了控制平面进程阻塞情况,基于此客户需要及时更换支持高SSL transaction并发请求的设备,以便减少偶数核TMM超线程发生,保证设备最佳运行状态。

 

结语

由于成文较为仓促,难免有遗漏或者错误之处,欢迎各位批评指正,谢谢。

 

本文内容涉及到如下KB,供大家参考。

 

K15003: Data and control plane tasks use separate logical cores when the BIG-IP system CPU uses Intel Hyper-Threading Technology

https://support.f5.com/csp/article/K15003

 

K23505424: Overview of the HTSplit feature

https://support.f5.com/csp/article/K23505424

 

K7747: Error Message: SSL transaction (TPS) rate limit reached

https://support.f5.com/csp/article/K7747

 

K6475: Overview of SSL TPS licensing limits

https://support.f5.com/csp/article/K6475

 

K7747: Error Message: SSL transaction (TPS) rate limit reached

https://support.f5.com/csp/article/K7747

 

 
 
欢迎转载,一起学习,共同进步,转载时请注明出处,谢谢!


发布评论 加入社群

发布评论

欧阳晨曦 2020-07-07 21:44:56 1

请参考 http://community.f5chinanetworks.com/f5network/pc/post/index?post_id=555

刘京玲 2020-07-08 09:50:06 0

感谢分享,棒棒哒~

相关文章

Scapy 实战

Zeron Wang

2020-07-06 15:19:27 2184

Login

手机号
验证码
© 2019 F5 Networks, Inc. 版权所有。京ICP备16013763号-1