s*********y 发帖数: 6151 | 1 一个中国人写的 Nginx + LuaJit 很legit啊 大概看了下感觉相当不错 |
|
s*********y 发帖数: 6151 | 2 你用Kong的啥模块?
Kong很好 不过好像用不到那么多功能 OpenResty足够我现在的需要
很多服务根本不需要 写太多code 纠结什么Nodejs Closure 还是Exlire, 直接在
Nginx上做足够了
OpenResty甚合我心 。 直接10K个并行链接 完爆任何后端framework |
|
s*********y 发帖数: 6151 | 3 我看了Kong的模块很多都是用nodejs写的
最近很多新开源都用node写的
Clojure只闻其声 未见其形 没见到啥啊
nginx |
|
发帖数: 1 | 4 軟件設計太重要了,今天測試golang algernon http server靜態文件性能,比nginx差
了幾十倍以上。在我們硬件CPU領域,別說差幾倍,性能提升5%都叫大改進,可以更新
一代架構了。。。
世界上硬件CPU公司屈指可數,軟件互聯網公司多如牛毛。最牛的CPU公司性能比最差的
快也不到一倍,硬件設計師除非是世界頂尖,否則不可能有公司出大價錢雇用。
相反不合格的軟件工程師寫的爛程序性能可能下降上百倍,而且還有安全漏洞,所以公
司願意多花幾倍的包裹雇用,整體對公司來說還是省錢的。所以大多數互聯網公司對硬
件的要求是穩定就好,不關心性能。而他們自己的軟件開發部門不停的refactoring,
翻修輪子製造工作崗位。
對於優秀的硬件工程師,也就一兩家公司競爭offer。同樣優秀的軟件工程師會有十幾
家或更多公司競爭,包裹大幾倍就成了正常的市場現象。。。
: 要转就转彻底,我以前一起bringup的兄弟都转码了,告诉我我们这些焊板子,
设计PLL
: 的经验都是shit,干的年头越多越多shit,早点转码,机会会多很多,形势比人
强。太
: 多东西放不下... 阅读全帖 |
|
发帖数: 1 | 5 要不是因为EE工程师们的不断努力提升硬件速度,现在最流行的应该是汇编或者c.
以前编程要讲究效率,现在“快”的要求从运算速度转向成develop和维护,搞硬件的
功不可没 |
|
g****t 发帖数: 31659 | 6 Golang写起来和python一样容易。那么
只要比python快几倍就可以了。不和c plus比。 |
|
g****t 发帖数: 31659 | 7 以前程序员是硬件的奴隶。然后程序语言是C设计者的奴隶。
现在语言的设计要讨好程序员,不然出门就是死。
在这个程序员民主化进程中,唯一的例外是basic.
Basic一开始就要讨好程序员。所以bill gates是basic的粉丝,
不是没有道理的。
: 要不是因为EE工程师们的不断努力提升硬件速度,现在最流行的应该是汇编或者
c.
: 以前编程要讲究效率,现在“快”的要求从运算速度转向成develop和维护,搞
硬件的
: 功不可没
|
|
|
g****t 发帖数: 31659 | 9 参考文献
http://time.com/69316/basic/
Basic: the language that made computers personal
I would lik to say:
DNN: the algorithm that made data analysis personal
: 以前程序员是硬件的奴隶。然后程序语言是C设计者的奴隶。
: 现在语言的设计要讨好程序员,不然出门就是死。
: 在这个程序员民主化进程中,唯一的例外是basic.
: Basic一开始就要讨好程序员。所以bill gates是basic的粉丝,
: 不是没有道理的。
: c.
: 硬件的
|
|
|
T*******x 发帖数: 8565 | 11 numpy 糟蹋C的性能了吗?
:软件也是,c的性能被numpy糟蹋,numpy被pandas糟蹋,tensorflow被keras糟蹋,
:pandas和keras用的人最多。下里巴人最好找工作。 |
|
发帖数: 1 | 12 我的主要觀點是硬件設計非常謹慎,我們改幾行RTL都得層層審批,一幫大牛評估,可
有可無的都被砍掉,於是硬件CPU廠家的性能差距越來越小。而軟件互聯網領域開發要
求糙快猛,實現同樣的功能,性能差異極大,導致各種方便麵語言橫行,golang是一個
,python更差,java也不咋滴。
我認為主要原因不是golang、python、java這些語言爛,而是用這些語言的大部分程序
員普遍缺乏軟件效率和CPU架構的基本常識,寫的東西爛。但這些並不妨礙他們的
package大,福利更好。因為硬件領域狡兔死獵狗烹,做得太穩定就沒工作了。
: 你这个引申的结论就不合适了
: 搞framework,做软件工具的是要发明轮子,因为那是他们的市场,他们要创造
市场
: 但是对软件工程师的需求不是来自于这些被创造的市场,而是来源于软件能做的
事情太
: 多,可能性无限。
: 硬件也可以做很多,但做个新硬件的成本和限制太多,周期太长,开辟新市场,
产生新
: 产值这方面和软件没法比。软件从开源的开始往加东西,现成的都不需要成本,
成本只
: 有很少的硬... 阅读全帖 |
|
发帖数: 1 | 13 互聯網領域講究一個月上線,勉強完成功能,然後不斷改進提高性能,提升空間有一百
倍以上。硬件正好相反,用幾年時間設計,一旦發布,靠固件和微指令性能提升空間只
有幾個percent,如果出問題(meltdown)新固件性能下降卻很大。這就是我感嘆的地
方。 |
|
发帖数: 1 | 14 试过rust的iron或者rocket没有? 期待你的评估结果 |
|
发帖数: 1 | 15 你說的scale成本低是不準確的。我們硬件scale有兩種:scale-up和scale-out。你說
的scale成本線性增加是scale-out,但多核處理器設計必須要考慮scale-up,就是在同
樣內存地址空間上爆核心,問題很多,不容易提升。另外MPI算scale-out,OpenMP是
scale-up。互聯網基本是scale-out,傳統數據庫是scale-up。CPU設計兩個都需要考慮。
: 你这个引申的结论就不合适了
: 搞framework,做软件工具的是要发明轮子,因为那是他们的市场,他们要创造
市场
: 但是对软件工程师的需求不是来自于这些被创造的市场,而是来源于软件能做的
事情太
: 多,可能性无限。
: 硬件也可以做很多,但做个新硬件的成本和限制太多,周期太长,开辟新市场,
产生新
: 产值这方面和软件没法比。软件从开源的开始往加东西,现成的都不需要成本,
成本只
: 有很少的硬件成本,scale起来硬件成本不需要同样放大。硬件你用现成的也得
先把硬
: 件成本算上,而且这个成本是和规模一起放大... 阅读全帖 |
|
发帖数: 1 | 16 感觉magagop兄说这么多,还是因为自己挣得太少,如果把你的package和互联网换过来
,你应该很开心吧
加油吧,有空去龟版看看,里面氛转码围很好的
爱你宝贝 |
|
d***a 发帖数: 13752 | 17 ngnix快,是因为写它的人对硬件性能非常了解,对软件底层细节抠的很细。连C++都不
用,只用C, 就是为了性能最大化啊。
其实你自己不就是在做这种类型的工作吗?我的理解,你做的工作是系统软件优化,
对吧? |
|
e*******o 发帖数: 4654 | 18 看了一下algernon 一个人搞的大杂烩。
lz你比较各啥。 |
|
m**u 发帖数: 541 | 19 其实这很好理解,什么都是为着客户转的,你看看现在垃圾程序员是大多数,作为语言
的客户,你得为着他们转,搞高了他们弄不转,就不用了,所以没有客户了,语言就挂
了。所以,归根结底,是现在程序员烂货居多导致的。 |
|
发帖数: 1 | 20 其实magagop兄耿耿于怀的就是那帮傻x凭啥挣那么多了,百思不得其解
索南都不容易啊,大家一起转码拿大包不好吗? |
|
发帖数: 1 | 21 软件做这么烂?为啥还能拿大包呢?百思不得其解啊 |
|
|
发帖数: 1 | 23 但是http都这么弱,违背了当初golang的卖点:如java一样好用,类似c的性能。
其实性能比c弱多了,根本就不是类似好么。 |
|
s********k 发帖数: 6180 | 24 同学,这些语言的目的就是让人不需要了解硬件底层都可以写,要不又懂CPU,又懂多
核,NUMA架构,还懂服务器设计的人才实在太少,怎么满足的了人民群众日益增长的需
求啊 |
|
发帖数: 1 | 25 对头,一个人随便写写,就能开一个项目,拿大包裹。
algernon支持的feature一大堆,却连基本的http static file都做不好。
说明很多开源项目的功能其实是只能看看而已,别当真。
golang不吹牛说跟C效率类似,就更没有人用了 |
|
s********k 发帖数: 6180 | 26 其实你可以去把它那个改好,就也能拿大包裹了:)
话说我看到很多benchmark都没有差10倍,C肯定是要快,不过你可以贴code看看是不是
哪里测试错了 |
|
|
|
|
|
|
|
发帖数: 1 | 33 罪魁祸首找到了:obj := *(*uintptr)(unsafe.Pointer(b + i))
// scanobject scans the object starting at b, adding pointers to gcw.
// b must point to the beginning of a heap object or an oblet.
// scanobject consults the GC bitmap for the pointer mask and the
// spans for the size of the object.
//
//go:nowritebarrier
func scanobject(b uintptr, gcw *gcWork) {
// Note that arena_used may change concurrently during
// scanobject and hence scanobject may encounter a pointer to
// a new... 阅读全帖 |
|
发帖数: 1 | 34 赞啊,转码浪费了,可是不转还是没钱,唉,人生好难 |
|
|
|
T********i 发帖数: 2416 | 37 pid 29010 貌似是GC thread。否则没法解释20us醒一次。
GC overhead如果20%的话,其实是很不错的。C的内存管理overhead其实也很高。一般
比20%要大。
当然我可以用空间换时间。但是那是customize allocators。 |
|
g****t 发帖数: 31659 | 38 牛。GC你统计过longest pause什么的吗?
gc作者之一在这里
https://groups.google.com/forum/m/?fromgroups#!topic/golang-dev/Ab1sFeoZg_8
: 罪魁祸首找到了:obj := *(*uintptr)(unsafe.Pointer(b i))
: // scanobject scans the object starting at b, adding pointers to
gcw.
: // b must point to the beginning of a heap object or an oblet.
: // scanobject consults the GC bitmap for the pointer mask and
the
: // spans for the size of the object.
: //
: //go:nowritebarrier
: func scanobject(b uintptr, gc... 阅读全帖 |
|
g****t 发帖数: 31659 | 39 可预测性很重要。jvm最早时候我记得老死机吧?
c的话比较复杂,各种编译器各种优化什么的。
: pid 29010 貌似是GC thread。否则没法解释20us醒一次。
: GC overhead如果20%的话,其实是很不错的。C的内存管理overhead其实
也很高
。一般
: 比20%要大。
: 当然我可以用空间换时间。但是那是customize allocators。
|
|
s********k 发帖数: 6180 | 40 赞干货
两个问题
1,关闭GC等于内存最后一直在那然后不会回收,你做一次test可能性能更好,但是肯
定不是长久之计,GC只有20%的overhead其实还不错了,拿完全手动内存分配的C和go的
GC比肯定好,就像极致的手动挡当然比自动挡快,可以比较下JVM有GC下的overhead?
2. FUTEX, 是不是这个问题?https://github.com/golang/go/issues/23360
话说完全可以提交一个PR了
JVM
herd |
|
d***a 发帖数: 13752 | 41 我的两分钱如下: :-)
1. 我并不知道algernon是怎么实现的。从trace看,从一个打开的了socket里处理一个
http get请求,algernon用了六七个线程来做,似乎algernon滥用了goroutine。
goroutine用起来很方便,也许是这个原因?当然这是假设所有的线程都和这个请求相
关,看起来象。
2. SO_REUSEPORT和futex没有直接联系吧。goroutine多了,相互之间要同步,futex调
用就会多。SO_REUSEPORT的目的是快速重用网络端口吧,用了SO_REUSEPORT,不会减少
futex调用。
我说的不一定对。
JVM
herd |
|
d***a 发帖数: 13752 | 42 看了一下algernon源代码,好像就是用了golang的http包,在上面加了一层处理各种文
件类型...如果我的理解没错。
这样来做,不太可能有好的性能啊。:) |
|
s********k 发帖数: 6180 | 43 golfing 里面那个http package最好? |
|
发帖数: 1 | 44 内存设计得好,就不需要自动GC。内存泄露可以用工具各种测试,反而JVM GC的bug不
好弄,也不好优化。
Cassandra为了躲避GC,特地用JNI搞了offheap objects,malloc也换成jemalloc,这
不就是Cpp么?
JVM GC效率也是问题,G1比CMS慢好多,Shenandoah比G1更慢。。。
关于20%问题,对于软件工程师可能不算什么,对于硬件CPU,10%以上就可以决定跑分
输赢。 |
|
发帖数: 1 | 45 自动GC的问题就是为了增加可预测性,牺牲性能,参考G1GC。
我一直想不通,需要可预测性的程序为什么不直接上Cpp?毕竟FG和微软腾讯百度华为
都这么做了
只有亚麻和阿里是奇葩。 |
|
s********k 发帖数: 6180 | 46 这些大公司里面,CPP,java,golang都用的(当然软软加上C#),CPP是好,但是真是
顶级人才满足不了人民群众日益增长需求,要精通太难了。
做大规模项目
human is always the least scalable in your system |
|
|
发帖数: 1 | 48 謝謝,我也找到這些了,但他們都是非標準、野生的SO_REUSEPORT庫,我本身也不是搞
golang的,只能報告裡面寫,目前標準golang不支持,未來1.11有可能支持了 |
|
w**z 发帖数: 8232 | 49 绝大部分的应用对实时性的要求是可以容忍 偶尔 long gc。 一般互联网公司 SLA 99.
99% 在 large distributed system 里,别说 long paused GC, 整个机器不见了的事
情时刻在发生。客户端容错做好就行了,一个 request timeout, 下一个 request 就
去别的node
:自动GC的问题就是为了增加可预测性,牺牲性能,参考G1GC。
:我一直想不通,需要可预测性的程序为什么不直接上Cpp?毕竟FG和微软腾讯百度华为 |
|
|