查看整体cpu和内存信息:
top
查看整体cpu信息
lscpu
查看每个核的使用情况
mpstat -P ALL 1
充分利用cpu性能必须,了解并行与并发之间的区别:
并发是指多个指令交叉执行,整体来看似乎是一起执行的。并行是指在不同核里同时执行。 比如聊着一遍微信,一遍听着歌。从整体来看是同时的,但他们可能是在cpu中交叉进行的,cpu可以区分0.25ns的指令操作,所以他们交叉进行,在用户看来像是并行,但其实是并发。
多余进程来说无法做到并行,多个进程之间只能并发,无论是否多核。
多线程是可以做到并行的,每个核可以独立处理一个线程。
查看cpu个数:
cat /proc/cpuinfo |grep 'physical id'|sort -u|wc -l
查看核数:
cat /proc/cpuinfo |grep 'core id'|sort -u|wc -l
查看支持的线程数:
cat /proc/cpuinfo |grep 'processor'|sort -u|wc -l
或者用下面的方式查看:
lscpu执行如下
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7 //注:总共几个线程
Thread(s) per core: 2 //注:每个核线程数
Core(s) per socket: 4 //注:4个核
座: 1
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 94
型号名称: Intel® Core™ i7-6700 CPU @ 3.40GHz
步进: 3
CPU MHz: 1999.865
CPU max MHz: 4000.0000
CPU min MHz: 800.0000
BogoMIPS: 6816.00
虚拟化: VT-x
L1d 缓存: 32K
L1i 缓存: 32K
L2 缓存: 256K
L3 缓存: 8192K
NUMA 节点0 CPU: 0-7
如果要进行复杂的算法,用cpu比较多,线程数=核数效率最高。
如果要进行io读写,不会过多设计cpu,因此可以分时复用cpu,线程数=2*核数效率最高