暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

升级服务器后的系统性能下降问题

白鳝的洞穴 2020-09-24
1347
十多年前曾经遇到过一个案例,这个案例被收录到了《DBA的思想天空》里,客户的一套数据库系统以前用的是SUN SPARC的服务器,最近换了一台新的T系列服务器后发现很多应用模块的运行速度反而下降了。后来老白团队发现了8线程的SUN UltraSparc  CPU的主频比老的SUN SPARC芯片低,单个逻辑线程的处理性能低于原有的SPARC芯片,最后用开启并行查询的方式帮助用户解决了这个问题。
实际上这个案例后面还有一些其他的背景,当时在发现这个问题后,用户马上提出另外一套系统从一台老的IBM P5 570迁移到P7的服务器上,好像并没有出现性能下降的问题。而P5芯片的主频也是高于P7的。对于这个问题,后来项目组咨询了IBM的售前工程师,IBM的工程师说IBM的cpu可聚可分,并发量大的时候,利用多线程的优势同时处理更多的并发,并发小的时候,一个CPU独占资源,发挥单CPU的最佳性能。当时老白也觉得这个解释比较合理,也就认同了这个观点。所以在之后的多年里,老白一直以为IBM的SMT是智能动态优化的。后来一个偶然的机会在研究CPU使用率指标的时候,才真正弄懂,IBM的SMT是动态可调整的,但是绝对不是智能动态的。IBM的复苏去在某个时刻只能处于SMT1/SMT2/SMT4/SMT8中的某一个状态,管理人员可以使用smtctl动态的调整SMT模式。因此说,当时IBM的工程师的解释是带有忽悠成分的。
不过事实摆在那,类似的系统,IBM 的多线程技术并没有对应用性能造成太大的影响,而SUN UltraSparc的一个逻辑CPU线程的执行效率确实不如以前没有多线程时候高。这到底是什么原因呢?
实际上,这种差异体现了两家公司在软硬件一体化方面的技术差距。IBM从P系列小型机到AIX操作系统之间的融合走的比SUN更早,AIX系统能够更为充分的发挥出SMT的技术优势(后来SUN在SOLARIS 11上走的更为深远,甚至把Oracle数据库和OS都做了深入的绑定,优化了相关的代码,使硬件、OS、RDBMS三者能够用最佳的模式运行,这一点后来也充分的体现在了ORACLE 的EXADATA一体机上)。

AIX在进行线程调度的时候,可以充分均匀的把多个并发线程调度在不同的CPU上,从而在SMT模式下,单进程的运行也能获得最大的系统资源,从而最大限度的提高性能。而同样的四个线程并发情况下,在LINUX下,其调度方式是这样的:

因为老白没有拿到solaris 9的调度策略方面的资料,因此不好推测是不是当时的情况和这个相关。当然单核主频下降可能是一个因素,但是主频和执行效率之间并无线性关系。这个迷还有待进一步去解析了。
实际上,在很多问题方面,都有一个真相与观点的区别。真相只有一个,观点可以不同,到底哪个观点更正确这个恐怕很难界定。可能有一个观点更接近真相吧。所以在看待这些问题方面,不要太纠结哪个观点更正确,某个观点解决了当前的问题,就姑且认为它是正确的吧,也许几年后回头看,当时错的厉害,就像老白经历的这个案例一样。
最后修改时间:2020-09-25 09:17:03
文章转载自白鳝的洞穴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论