1
msg7086 2015-12-02 04:42:36 +08:00
小学知识,数字前面的零可以省略。
所以 24 核的话拿 ruby 跑可以这样写: 24.times.map{|i| '1'+'0'*i}.join(' ') 顺便 python 里也可以用 '0'*i 这种写法,没必要开 for 循环。 |
2
lhbc 2015-12-02 06:00:08 +08:00 via Android
直接 auto 就行了, nginx 自己会处理,除非你用的是多年前的版本。
|
3
Andy1999 2015-12-02 08:06:38 +08:00 via iPhone
nginx 不是会动态分配 CPU 核心数吗。。。
不过我 128 核貌似一直分不到 3 核 |
7
lerry 2015-12-02 10:03:19 +08:00
http://tengine.taobao.org/
这个支持 自动根据 CPU 数目设置进程个数和绑定 CPU 亲缘性 |
8
dreampuf 2015-12-02 10:17:48 +08:00
In [1]: for i in xrange(0, 24):
print "{0:024b}".format(1<<i) ....: 000000000000000000000001 000000000000000000000010 000000000000000000000100 000000000000000000001000 000000000000000000010000 000000000000000000100000 000000000000000001000000 000000000000000010000000 000000000000000100000000 000000000000001000000000 000000000000010000000000 000000000000100000000000 000000000001000000000000 000000000010000000000000 000000000100000000000000 000000001000000000000000 000000010000000000000000 000000100000000000000000 000001000000000000000000 000010000000000000000000 000100000000000000000000 001000000000000000000000 010000000000000000000000 100000000000000000000000 |
9
msg7086 2015-12-02 11:14:31 +08:00
@lerry tengine 在 nginx 改动太大,不太敢用……
自动 Affinity 倒是实现了,感觉可以 back port 回去(? |
11
lhbc 2015-12-02 11:59:47 +08:00
|
12
ryd994 2015-12-02 12:44:28 +08:00
我不相信你有能让 nginx 占满核的吞吐量
affinity 打破了操作系统的 scheduling ,除非你有明确了解 affinity 的意义(而不是“高人指点”),否则你应该首先考虑这些选项: 纯静态开 sendfile 大量新连接关 accept_mutex 开 multiaccept 降低 gziplevel ,因为即使 level1 也有近半的压缩率,而计算量可以减少好几倍 用正则开 pcre_jit 适当增加系统的 send buffer ssl session cache 或者硬件加速 即使开 affinity , 24 个 worker 各自绑定 1 个 cpu 也不是个好主意。很多系统上 cpu0 地位特殊,必须处理一些硬件中断,因此用户可用的性能不如其他 CPU 。 affinity 主要是希望减少上下文切换,增加缓存命中,上面的选项基本足够。如果你有其他服务,特别是后端也在跑,那 nginx 就更不该使用所有的 cpu ,而应该尽量占满其中几个,同时把其他服务集中在其他 cpu 上。 |
13
lhbc 2015-12-02 12:48:29 +08:00
|