监控的时候我们会监控cpu的负载,那么什么是负载?
编程时候有多核多线程的概念,那么cpu内部如何运作的?
搞清多少bit cpu? 有几个物理cpu?每个cpu是几核的?
之前购买内存条时候,需要关注服务器的内存条信息,是ddr3还是4,还有频率.
多CPU: 即一个机器装了多个cpu
多核CPU:即一个cpu有多个核心
- 简单粗暴的看下我共有几核cpu(2个)
$ cat /proc/cpuinfo |grep processor
processor : 0
processor : 1
- 多少bit的cpu?
$ arch
x86_64
或者: uname -a 或 file /bin/ls
参考: http://blog.csdn.net/tianlesoftware/article/details/6267115
## cat /proc/cpuinfo输出的几个字段的含义
processor: 逻辑CPU的标识
model name: 真实CPU的型号信息
physical id: 真实CPU和标识
cpu cores: 真实CPU的内核数
- 我这台vm的cpu型号
$> grep 'model name' /proc/cpuinfo |uniq
model name : Intel(R) Xeon(R) CPU E5320 @ 1.86GHz
- 我这台vm有几个物理cpu(2个)
$> grep 'physical id' /proc/cpuinfo |sort |uniq |wc -l
2
- 我这个vm每个物理cpu有几个核心(2个)
$> grep 'cpu cores' /proc/cpuinfo |uniq
2
cpu的负载是怎么回事?
总而言之,不要让超过cpu核数,简单讲,如果有一个核,负载不要让超过1.
# uptime
22:11:00 up 63 days, 5:55, 1 user, load average: 0.00, 0.03, 0.05
5min 10min 15min的负载
当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1。
"load average"的值越低,比如等于0.2或0.3,就说明电脑的工作量越小,系统负荷比较轻。
把这个CPU想象成一座大桥,桥上只有一根车道,所有车辆都必须从这根车道上通过。(很显然,这座桥只能单向通行。)
系统负荷为0,意味着大桥上一辆车也没有。
系统负荷为0.5,意味着大桥一半的路段有车。
系统负荷为1.0,意味着大桥的所有路段都有车,也就是说大桥已经"满"了。但是必须注意的是,直到此时大桥还是能顺畅通行的。
系统负荷为1.7,意味着车辆太多了,大桥已经被占满了(100%),后面等着上桥的车辆为桥面车辆的70%。以此类推,系统负荷2.0,意味着等待上桥的车辆与桥面的车辆一样多;系统负荷3.0,意味着等待上桥的车辆是桥面车辆的2倍。总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久。
CPU的系统负荷,基本上等同于上面的类比。大桥的通行能力,就是CPU的最大工作量;桥梁上的车辆,就是一个个等待CPU处理的进程(process)。
如果CPU每分钟最多处理100个进程,那么系统负荷0.2,意味着CPU在这1分钟里只处理20个进程;系统负荷1.0,意味着CPU在这1分钟里正好处理100个进程;系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。
为了电脑顺畅运行,系统负荷最好不要超过1.0,这样就没有进程需要等待了,所有进程都能第一时间得到处理。很显然,1.0是一个关键值,超过这个值,系统就不在最佳状态了,你要动手干预了。