服务器性能学习笔记
1、到底怎么理解平均负载?(平均活跃进程数) 运行状态、不可中断状态的的平均进程数。 使用cpu、等待cpu、等待io的进程数 。 ps -aux中R 和 D状态的进程。 grep "model name" /proc/cpuinfo |wc -l ######物理机核心数 平均负载高于逻辑cpu的70%,要考虑排查分析性能问题。 CPU密集型:cpu使用率高,负载也会高。 IO密集型:cpu使用率不高,等待io会导致负载高。 等待CPU: cpu使用率高,负载也会高。 stress --cpu 1 --timeout 600 ###一个cpu使用率跑100% watch -d uptime ###动态看负载 mpstat -P ALL 5 ###每5s输出所有cpu的使用率 pidstat -u 5 1 ###查看哪个进程导致的负载高 stress -i 1 --timeout 600 ####模拟IO压力 ,不停执行sync watch -d uptime ###动态看负载 mpstat -P ALL 5 ###每5s输出所有cpu的使用率 pidstat -u 5 1 ###查看哪个进程导致的负载高 stress -c 80 --timeout 600 ####模拟多进程80个进程 watch -d uptime ###动态看负载 mpstat -P ALL 5 ###每5s输出所有cpu的使用率 pidstat -u 5 1 ###查看哪个进程导致的负载高
1、上下文切换是什么意思? 进程竞争CPU的时候并没有运行,为什么负载还很高?上下文切换就是罪魁祸首。 CPU上下文切换:(寄存器和程序计数器PC) CPU上下文切换分为三种:1、进程上下文切换 2、线程上下文切换 3、中断 上下文切换。 用户态到内核态的转变:系统调用open()、read()、write()、close() 一次系统调用是2次cpu上下文切换。 进程上下文切换是一个进程 切换到另一个进程。 系统调用,是同一个进程。 系统调用是特权模式切换,不是上下文切换,cpu上下文切换还是无法避免的。 优先级最高和等待CPU运行时间最长的进程运行。 进程的时间片耗尽、资源不足 、sleep()将自己挂起、优先级高的先执行、硬件中断。上下文切换性能问题的幕后真凶。 线程是调度的最小单位,进程是资源拥有的最小单位。 硬件的 中断处理比进程有高的的优先级。
pidstat -w 5 自愿上下文切换: 无法获取所需资源导致的上下文切换。 非自愿上下文切换: 时间片已到,被系统强制调度,进而发生的上下文切换。 sysbench --threads=40 --max-time=300 threads run vmstat 3 pidstat -wt 2 watch -d cat /proc/interrupts
################################################## 1、CPU使用率100%,我该怎么办? 内核的节拍率: grep 'CONFIG_HZ=' /boot/config-2.6.32-573.el6.x86_64 perf top perf record perf report perf top -g -p [进程号] #查找cpu使用率高的函数 ################################################### 1、CPU使用很高,找不到高的应用。 pstree |grep stress ###runing状态,进程总是重启 pert top ###找不到cpu高的应用,可能是短时应用导致。 execsnoop 工具可以查到
1、CPU使用率100%,我该怎么办? 内核的节拍率: grep 'CONFIG_HZ=' /boot/config-2.6.32-573.el6.x86_64 perf top perf record perf report perf top -g -p [进程号] #查找cpu使用率高的函数 ################################################### 1、CPU使用很高,找不到高的应用。 pstree |grep stress ###runing状态,进程总是重启 pert top ###找不到cpu高的应用,可能是短时应用导致。 execsnoop 工具可以查到 ################################################## 1、系统出现大量不可中断进程和僵尸进程怎么办? dstat 1 10 不可中断,D状态的进程。 top ps aux pidstat -d 1 20 strace -p [进程号]