存储+调优 : 调优一-CPU
从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。
分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。这样的系统无法实时响应外部异步事件。分时系统主要应用于科学计算和一般实时性要求不高的场合。实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。一台中型机(或者小型机)带着一大堆终端,然后轮流响应各终端的请求,就是一个典型的分时系统。
实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。实时系统主要用在工业控制或者订票等方面,对响应速度要求非常高的场合从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。
[root@node6 ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 4667 4664 0 75 0 - 1168 wait pts/1 00:00:00 bash
4 R 0 4696 4667 0 78 0 - 1054 - pts/1 00:00:00 ps
C CPU占用百分比
SZ 占用内存大小
ps -o "uid,pid,stat,comm" -e --sort uid | -uid(降序)
pstree -p 显示PID
[root@localhost ~]# ps -L -p 32289
PID LWP TTY TIME CMD
32289 32289 ? 00:00:21 firefox
32289 32312 ? 00:00:00 firefox
32289 32313 ? 00:00:00 firefox
32289 32324 ? 00:00:00 firefox
32289 32325 ? 00:00:00 firefox
32289 32326 ? 00:00:00 firefox
LWP轻量级线程协议
top
top - 22:14:02 up 22:06, 12 users, load average: 1.00, 0.66, 0.30
1分钟 5分钟 15分钟
[root@localhost ~]# uptime
09:05:14 up 2:21, 2 users, load average: 0.14, 0.08, 0.02
一分钟平均处在R状态的进程个数
一般推荐与CPU核数相当,但具体要看应用,例:8核CPU,每个应用跑满了50%,可以跑16个进程,但是也要考虑到突发量
按键1:查看CPU
sy>us
内核忙sy高,一般I/O(打开文件)、网络、运行的是内核态程序LVS(7层负载HAproxy Nginx,user sys都很高)。写脚本死循环,找质数,占用CPU多,不消耗系统
buffer缓冲 cache缓存 用free命令可以看到
top -d 3 -p 1
按键k :kill 进程
按键r:renice进程
按键< > :翻页上下
按键o O :排序
按键P:cpu%排序
按键M:mem%排序
top会消耗系统资源,系统很忙时,使用ps
0-99静态优先级(实时进程)
100-139 动态优先级 (非实时进程)
早期传统的UNIX优先级(PRI) 0-39
sysV的UNIX在原有0-39+60=0-99
Linux 0-39+100=0-139,但是ps是一个sysV的命令只能显示到0-99
NI 0 ------- PRI 80
75-------------85
I/O CPU
[root@node6 ~]# chrt -p 2
pid 2's current scheduling policy: SCHED_FIFO
pid 2's current scheduling priority: 99
[root@node6 ~]# chrt -m
SCHED_OTHER min/max priority : 0/0 非实时进程
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99 实时进程
SCHED_BATCH min/max priority : 0/0
chrt --fifo 10 command
chrt --fifo 10 ./a.sh
NI - 实时进程 可以指定PRI值 chrt -p PID
NI number 非实时进程 只能通过NI去影响PRI,不能对PRI直接进行设置 ps -l
内核态实时进程用户不能调整优先级,只有用户态进程用户可以以实时进程的方式运行并执行优先级
实时 非实时
RR OTHER 轮询
FIFO BATCH 先进先出
进程和线程
一个程序支持线程和进程,是线程好还是进程好?
程序并发执行,多核才能够并发么?
多核,一个核运行一个程序,可以并发
程序能不能并发和核数没有关系
单核执行一个死循环,再执行一个死循环,抢占CPU,不能并发
单核,两个程序,不是cup消耗型程序,都是I/O消耗型,可以达到所谓的并发
[root@localhost ~]# ping 172.16.1.1
[root@localhost ~]# ps -l -e | grep ping
4 S 0 22226 5479 0 75 0 - 460 396064 pts/2 00:00:00 ping
PRI 75 I/O消耗型
#!/bin/bash
for ((i=1;i<255;i++))
do
if ping -c 1 172.16.1.