linux - 如何知道运行多少个进程最有效率?

 版中凌菱 发布于 2022-11-02 21:03
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
grep 'core id' /proc/cpuinfo | sort -u | wc -l
grep 'processor' /proc/cpuinfo | sort -u | wc -l

output

2
10
40

更多信息

cat /proc/cupinfo

shows

processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 62
model name    : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping    : 4
microcode    : 0x416
cpu MHz        : 2499.892
cache size    : 25600 KB
physical id    : 0
siblings    : 20
core id        : 0
cpu cores    : 10
apicid        : 0
initial apicid    : 0
fpu        : yes
fpu_exception    : yes
cpuid level    : 13

...

processor    : 39
vendor_id    : GenuineIntel
cpu family    : 6
model        : 62
model name    : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping    : 4
microcode    : 0x416
cpu MHz        : 2499.892
cache size    : 25600 KB
physical id    : 1
siblings    : 20
core id        : 12
cpu cores    : 10
apicid        : 57
initial apicid    : 57
fpu        : yes
fpu_exception    : yes
cpuid level    : 13
3 个回答
  • 这个要看所运行的进程是什么性质的。

    1. 如果是CPU密集型的,比如计算圆周率,有多少processer就分配多少就行了

    2. 如果是IO密集型,比如大多数的web应用,还每个processer只分配一个进程就太浪费了,一般可以根据具体情况而定,可以分配2~10个

    2022-11-04 23:22 回答
  • 一般来讲和机器的核数相同算是效率较高的吧,具体还要看程序场景

    2022-11-04 23:23 回答
  • 从/proc/cupinfo信息可以看出,E5-2670V2有10核心(cpu cores)20超线程(siblings),你的服务器是双路(两个CPU),总计就是20核心40超线程.
    要最大化程序的性能,就应该避免程序被网络或者文件IO阻塞,也应该避免CPU出现过多的上下文切换.
    拿Linux上的Nginx来说,Nginx利用内核epoll实现网络异步,小文件用sendfile,大文件用AIO线程池,来尽量避免工人进程被阻塞,工作进程数则设为CPU核心数来避免CPU频繁上下文切换.
    同理,运行在PHP-FPM的PHP代码,应该避免使用curl等可能会产生较长网络IO的代码,对于一些经过PHP验证身份后输出的附件,为了避免文件阻塞,可以用header("X-Accel-Redirect: $file_path");委托给Nginx返回给客户端,最后,没了网络和文件IO的阻塞,就只剩下计算,这时PHP-FPM也是计算密集型应用,所以PHP-FPM工作进程数也可以设为CPU核心数.

    可以在这台40超线程的服务器跑LAMP服务,看哪种情况下性能最佳:
    10 Nginx + 30 PHP-FPM
    15 Nginx + 25 PHP-FPM
    40 Nginx + 40 PHP-FPM

    2022-11-04 23:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有