|
用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
用Kernel来测试:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。
不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
如果多个逻辑CPU的"physical id"和"core id"均相同,说明开启了超线程 逻辑CPU个数 > 物理CPU个数 * CPU内核数 开启了超线程 逻辑CPU个数 = 物理CPU个数 * CPU内核数 没有开启超线程 |
基础扩展:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
#查看CPU内存总数
cat /proc/meminfo| grep "memtotal"
#查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
#查看各个物理CPU上面封装的逻辑处理器(即超线程后的CPU)个数
cat /proc/cpuinfo | grep siblings
#查看内存信息
# cat /proc/meminfo
shell文件一次性查询:
#!/bin/bash
physicalNumber=0
coreNumber=0
logicalNumber=0
HTNumber=0
logicalNumber=$(grep"processor"/proc/cpuinfo|sort-u|wc-l)
physicalNumber=$(grep"physical id" /proc/cpuinfo|sort-u|wc-l)
coreNumber=$(grep"cpu cores" /proc/cpuinfo|uniq|awk-F':''{print $2}'|xargs)
HTNumber=$((logicalNumber / (physicalNumber * coreNumber)))
echo"****** CPU Information ******"
echo"Logical CPU Number : ${logicalNumber}"
echo"Physical CPU Number : ${physicalNumber}"
echo"CPU Core Number : ${coreNumber}"
echo"HT Number : ${HTNumber}"