PostgreSQL DBA(88) – Linux(CPU使用率 vs 平均负载)


Linux已成为事实上企业级服务器OS的首选,PostgreSQL在Linux上的”装机量”不在少数,在对数据库的性能进行优化和调整时,同时也必须考虑到Linux的优化和调整.

本节简单介绍了Linux性能监控中的两个容易混淆的概念:CPU使用率和平均负载.
日常使用中最为常见的性能监控工是top,下面来看看top的输出:输出的第1行其中load average: 0.00, 0.01, 0.07是过去1分钟/5分钟/15分钟的load average(平均负载).

这个平均负载是什么意思呢?按大神Brendan Gregg的说法,平均负载是指系统可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用并没有直接的关系.可运行状态进程包括正在使用CPU或者正在等待CPU的进程,不可中断状态是指正处于内核态不可中断关键流程中的进程,比如硬件设备的I/O响应等,通过top或ps命令看的D状态进程就是这种状态.
输出的第3行这是CPU使用率,其中us为用户态使用占比,sy是系统态占比,ni是使用nice加权进程分配的用户态占比,id是空闲占比,wa是等待使用CPU占用,hi是硬中断占比,si是软中断占比,st(steal)是虚拟机使用占比,这些项加起来应为100%.为了更好理解平均负载和CPU使用率,以高速公路收费站来打个比喻,假设某高速收费站有8个收费口.

1.如果没有车通过,那么收费站的负载为0;

2.如果同时只有4辆车缴费通过,那么负载为4;

3.如果同时有8辆车,那么负载为8;

4.如果有8辆车在缴费,同时每个收费口又有1辆车在等待,那么负载为16,这时候其实收费站已过载;

5.如果有8辆车在缴费,同时每个收费口还有(n-1)*8(n>3)辆车在等待,那么负载将会是n*8,这时候收费站已严重过载,会出现严重拥堵;

这是平均负载,下面说说CPU使用率.

1.如果收费口和车主全部使用ETC缴费,那么使用率很高;

2.如果某些收费口使用人工收费,但支持微信或支付宝,车主只需要刷卡就走,准备缴费的时间不长,因此使用率也不低;

3.如果某些收费口使用人工收费,但只能免费云主机域名现金收费,那掏钱/找钱这些无用功占比就较高,这样使用率就变得较低.
通过这个比喻可以看出,平均负载和使用率并没有必然的关系,负载高CPU使用率不一定高,CPU使用率高负载并不见得会高.

下面是使用benchmarksql对PG进行压力下使用top的输出:
可以看出近一分钟的平均负载飙升到14.47,而CPU逻辑内核个数不过4个,已超出系统负荷.

而CPU使用率中的us部分不过30%上下,大部分CPU在idle/wait上.

参考资料

Linux Load Averages: Solving the Mystery

相关推荐: redis与jedis的区别有哪些

redis与jedis的区别有哪些?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!redis与spring的整合一般分为spring-data-redis整合和jedis整合,先…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 01/01 14:47
Next 01/01 14:47