由买买提看人间百态

topics

全部话题 - 话题: golang
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)

发帖数: 1
1
你的觀點不就正好證明了我的結論麼,你再看看我的標題。
第一,性能:
golang根本沒法跟cpp比性能,差一個數量級,golang僅僅是跟java相似,比python快
而已。
Cpp可以說跟assembly差不多,因為性能只有XX%的差異,不會超過一倍。
但是golang跟cpp根本不是某些人宣傳的那樣,接近cpp,其實是接近java。
golang也不可能取代對性能有要求的cpp領域,所以golang差不多10年了普及率也不高。
第二,社區:
不是因為有幾個人、幾個公司的語言就是一流語言,臉家還有項目用php、hhvm,你認
為php是一流語言麼?
golang相比java、cpp,除了狗家,還有誰大規模用?開源項目除了docker、k8s、juju
還有幾個?普及率能跟java、cpp比麼?
第三,嚴肅項目的根據地:
搞android必須搞java,搞deep learning和HPC必須搞cpp,搞windows必須搞csharp
你說說哪個行業、哪個項目必須用golang,沒有golang玩不了的?
感覺golang在這方面還不如javascript的用戶群牢固。

Gola... 阅读全帖
s********k
发帖数: 6180
2
不知道三倍这个benchmark哪里来的,每个人实现不一样,我没有做过C# 对golang的对
比,不过网上有很多,随便找一个https://hackernoon.com/go-vs-net-core-in-terms
-of-http-performance-7535a61b67b8,可以试一下,
我觉得其实你可以改变mindset,你对底层了解,为啥不想着去提升golang性能,这样
impact会大得多,如果你假设别家都是不知道golang比CPP性能不如,误入golang,恐
怕也太低估这么多上golang公司的技术能力和项目判断了。相反,如果golang性能不如
CPP下还这么收欢迎,岂不是Golang性能提升之后更大有可图,所以做这个的话,
impact比你只是比较CPP和golang大多了。
当然项目选择语言,各家各个项目组,历史现实都不一样,不好判断

发帖数: 1
3
我上一個貼提到了golang兩大問題:GOGC和goroutine調度,今天開會同事又發現很多
其他性能問題。
1. encryption(對稱或非對稱):golang非常慢,比openssl慢10倍不止,因為openssl
寫了很多assembly,尤其在非x86上面特別明顯。
2. string vectorization:libc有很多手寫SSE/AVX優化,對應的golang根本全靠編譯
器,在x86和非x86上表現都很差,也是10倍不止。
3. 沒有標準threadlocal,這個Cpp14也有很多優化,多核性能差距明顯。
4. golang周邊庫不如cpp穩健,尤其和folly、abseil比較
5. golang不支持硬件加速,因為目前很多硬件廠商都倒向LLVM,它彌補了部分GCC、
ICC的弊病,留給golang的市場空間變小了
結論:
a. 嚴肅項目(尤其跟性能相關的後台項目)還是cpp天下
b. 深度學習應該使用python和cpp
c. 刷題最好用cpp或java,未來cpp/java都會有fiber,比goroutine強
總之golang看起來很好,但是實際性... 阅读全帖

发帖数: 1
4
我上一個貼提到了golang兩大問題:GOGC和goroutine調度,今天開會同事又發現很多
其他性能問題。
1. encryption(對稱或非對稱):golang非常慢,比openssl慢10倍不止,因為openssl
寫了很多assembly,尤其在非x86上面特別明顯。
2. string vectorization:libc有很多手寫SSE/AVX優化,對應的golang根本全靠編譯
器,在x86和非x86上表現都很差,也是10倍不止。
3. 沒有標準threadlocal,這個Cpp14也有很多優化,多核性能差距明顯。
4. golang周邊庫不如cpp穩健,尤其和folly、abseil比較
5. golang不支持硬件加速,因為目前很多硬件廠商都倒向LLVM,它彌補了部分GCC、
ICC的弊病,留給golang的市場空間變小了
結論:
a. 嚴肅項目(尤其跟性能相關的後台項目)還是cpp天下
b. 深度學習應該使用python和cpp
c. 刷題最好用cpp或java,未來cpp/java都會有fiber,比goroutine強
總之golang看起來很好,但是實際性... 阅读全帖
c******n
发帖数: 24
5
【 以下文字转载自 Programming 讨论区 】
发信人: TeacherWei (TW), 信区: Programming
标 题: 我可以铁口直断,golang是近20年编程语言最大的突破!
发信站: BBS 未名空间站 (Wed Feb 20 14:37:25 2019, 美东)
说啥golang是语法糖的不客观。golang关键字才几个?能糖到哪里去?
golang根本上,是系统语言。专注解决的是I/O问题。内存管理的效率和java和.net比
较有所降低。但是降低的不多,我个人认为是完美平衡。纯科学计算没有必要使用
golang。
至于稳定性。我个人的信心强于其他任何语言。毕竟用户需要的不仅仅是编译器,而是
加上各种用户库一整套。golang代码量在那里摆着。多快好省是硬道理。
至于功能其他的语言有没有?天生的和后天的区别大了。你再努力,能跑马拉松世界冠
军么?

发帖数: 1
6
所以我前面提到的golang性能的第二個問題不是algernon獨有,也是golang區別於c的
最大特點:goroutine。目前golang最多能有一千萬併發goroutines,換成內存也就是
幾十GB,對於AWS上的只有幾十GB的VM小系統估計夠用了,但是對於多路1TB共享內存大
系統,golang目前沒有NUMA調度架構顯然不行。
測試golang http,其實變成了測試Linux sys_futex(),唉。。。

发帖数: 1
7
所以我前面提到的golang性能的第二個問題不是algernon獨有,也是golang區別於c的
最大特點:goroutine。目前golang最多能有一千萬併發goroutines,換成內存也就是
幾十GB,對於AWS上的只有幾十GB的VM小系統估計夠用了,但是對於多路1TB共享內存大
系統,golang目前沒有NUMA調度架構顯然不行。
測試golang http,其實變成了測試Linux sys_futex(),唉。。。

发帖数: 1
8
我沒有說要用python這個二流語言啊,我的結論是:刷題練手、嚴肅項目最好用cpp或
java或csharp。
你說的那是嵌入式,那一定是c和cpp啦,golang編譯出來動輒xxxMB,不支持動態連結
,跟cpp沒法比。
如果做互聯網,那一定是java後台啦,框架多得很,為什麼不能用第三方庫?
如果做桌面應用,那一定是csharp啦,golang能很好的搞桌面麼?
這三種語言(cpp、java、csharp)語法越來越接近,而且java和csharp編譯器本身就
是cpp寫得,是一個非常好和成熟的路線,為什麼要搞另類的golang?
未來golang可以做的,他們(cpp20、java10、csharp8)都可以做,還有豐富的第三方
庫,為啥不用?
我個人感覺把這三種語言的新特性弄清楚比新學golang更重要,而且他們之間感念相近
,觸類旁通。

golang。

发帖数: 1
9
我沒有說要用python這個二流語言啊,我的結論是:刷題練手、嚴肅項目最好用cpp或
java或csharp。
你說的那是嵌入式,那一定是c和cpp啦,golang編譯出來動輒xxxMB,不支持動態連結
,跟cpp沒法比。
如果做互聯網,那一定是java後台啦,框架多得很,為什麼不能用第三方庫?
如果做桌面應用,那一定是csharp啦,golang能很好的搞桌面麼?
這三種語言(cpp、java、csharp)語法越來越接近,而且java和csharp編譯器本身就
是cpp寫得,是一個非常好和成熟的路線,為什麼要搞另類的golang?
未來golang可以做的,他們(cpp20、java10、csharp8)都可以做,還有豐富的第三方
庫,為啥不用?
我個人感覺把這三種語言的新特性弄清楚比新學golang更重要,而且他們之間感念相近
,觸類旁通。

golang。

发帖数: 1
10
我昨天突然想到可以用一個國家來形容golang:澳大利亞
袋鼠國是怎樣一個奇葩的國家,不是G7卻令人嚮往,就跟golang一樣,10歲了也不是程
序語言前五名,相比之下,10歲的java已經快要奪冠了。袋鼠國也是,立國幾十年,人
均收入爆高,卻不是G7成員。
想移民澳大利亞(golang)的人請注意:
袋鼠國科技不如美帝(cpp)、人氣不如中帝(java)、文化不如西歐英國(csharp)
,完全不是第一梯隊國家(語言)。袋鼠國只適合本身技能低無法移民美帝、又被西歐
(MS)拒之門外、還不想跟土共(java)為伍的轉行人士開發“短平快、糙快猛”的新
項目。
我從來沒說golang絕對不好,我是說golang跟主流語言相比“不夠好”,就像澳大利亞
現在的尷尬定位一樣。
為什麼不能用第三方庫?美帝、英帝、中帝都有自己的一幫簇擁,澳大利亞有什麼?人
均GDP麼(日均代碼量)麼?
對於不是科班出身的普通移民,澳大利亞確實有一些吸引力,但前提是想好自己未來要
放棄:技術(美帝)、錢途(中帝)、文化逼格(西歐)
golang從來就不是silver bullet
j********x
发帖数: 2330
11
你这话前后矛盾 搬起石头砸自己的脚
做东西 要有用:要知道rob是个极端厌恶无用特性的人 他学物理出身 本就没什么新潮
思想 所以golang出了极为有用的特性 几乎是个裸体语言 golang甚至要求格式统一 免
除了为了缩进打口水仗
而且据著名id peking2表示 golang是个“逆潮流而动的语言”言外之意就是这东西都
没新潮特性 一意孤行
听着挺好 就是这也做不了 那也做不了:抱歉 g内部golang趋势很好 谈不上这也做不
了 那也做不了
看了一下golang。org 我必须说 典型马工作品
笑了 rob学物理出生 搞了个实用主义语言 这也叫纯马工作品
而且纯马工作品不是向来是好东西代名词么
c就是俩马工
java还不是一个马工看c++不爽
最后 送你一句
别装b 装b等着被草

发帖数: 1
12
刚刚用了golang official的http benchmark,得到跟algernon同样的结果,说明还是
golang的问题,即使用124个线程,性能也无法达到nginx在48核上98%的占用率,
golang http benchmark只有30%占用率。
https://github.com/golang/benchmarks/blob/master/http/http.go

发帖数: 1
13
刚刚用了golang official的http benchmark,得到跟algernon同样的结果,说明还是
golang的问题,即使用124个线程,性能也无法达到nginx在48核上98%的占用率,
golang http benchmark只有30%占用率。
https://github.com/golang/benchmarks/blob/master/http/http.go
g****t
发帖数: 31659
14
你非要无视事实。
说golang做不了严肃项目。
Python二流语言。
那又有什么意思呢?
我觉得你对two language dilemma 经历的不够。
不知道 两种语言 实际上会有多少麻烦。
谁要是觉得python 加c开发算法产品容易。
那他多半没做过足够多的项目。


: 我沒有說要用python這個二流語言啊,我的結論是:刷題練手、嚴肅項目
最好用
cpp或

: java或csharp。

: 你說的那是嵌入式,那一定是c和cpp啦,golang編譯出來動輒xxxMB,不
支持動
態連結

: ,跟cpp沒法比。

: 如果做互聯網,那一定是java後台啦,框架多得很,為什麼不能用第三方
庫?

: 如果做桌面應用,那一定是csharp啦,golang能很好的搞桌面麼?

: 這三種語言(cpp、java、csharp)語法越來越接近,而且java和csharp
編譯器
本身就

: 是cpp寫得,是一個非常好和成熟的路線,為什麼要搞另類的golang?

: 未來golang可以做的,他們(cpp20、java10... 阅读全帖
g****t
发帖数: 31659
15
你非要无视事实。
说golang做不了严肃项目。
Python二流语言。
那又有什么意思呢?
我觉得你对two language dilemma 经历的不够。
不知道 两种语言 实际上会有多少麻烦。
谁要是觉得python 加c开发算法产品容易。
那他多半没做过足够多的项目。


: 我沒有說要用python這個二流語言啊,我的結論是:刷題練手、嚴肅項目
最好用
cpp或

: java或csharp。

: 你說的那是嵌入式,那一定是c和cpp啦,golang編譯出來動輒xxxMB,不
支持動
態連結

: ,跟cpp沒法比。

: 如果做互聯網,那一定是java後台啦,框架多得很,為什麼不能用第三方
庫?

: 如果做桌面應用,那一定是csharp啦,golang能很好的搞桌面麼?

: 這三種語言(cpp、java、csharp)語法越來越接近,而且java和csharp
編譯器
本身就

: 是cpp寫得,是一個非常好和成熟的路線,為什麼要搞另類的golang?

: 未來golang可以做的,他們(cpp20、java10... 阅读全帖

发帖数: 1
16
cpp有很多魔法可以提高性能,golang基本不行,java和golang一個檔次。
我的意思是多路多核服務器,cpp可以比java和golang快很多,根本不是這篇知乎裡面
cpp僅僅比golang快一點的結論。
If local disk: unbuffered IO, SPDK, memory-mapped file
If remote disk: RDMA, DPDK
If using accelerator: TCAM, hardware regex engine, FPGA memory comparison
If not using accelerator: x86 SSE STTNI and AVX
cpp能把golang打出屎來
g****t
发帖数: 31659
17
你可能需要清醒下脑子。用ssh上站。shift-f 什么的查一下本版13年到今日的Golang
帖子。把基本事实弄对。
第一个要点,golang对标的是java,python
不是cpp。rust 对标的是cpp
你批评的东西完全牛头不对马嘴。Rob Pik什么的怎么可能去和C系列比性能?
第二个要点,golang在外面发展起来之前。google内部已经有很多项目在跑了。你查查
就知道了
。Ken Thompson 这些人你觉得不是科班出身的?不是严肃项目?
你讲的话偏离常识太远了。


: golang適合搞“前景不明朗”的小團隊實驗工程,這不屬於我
講的“嚴肅”項目。

: 公司也分:一流大公司、一般大公司、二流公司、小公司、創業公司,不
是每個
公司都

: 要golang才能解決問題。

: 沒人敢碰說明你們公司或項目缺骨幹。


发帖数: 1
18
軟件設計太重要了,今天測試golang algernon http server靜態文件性能,比nginx差
了幾十倍以上。在我們硬件CPU領域,別說差幾倍,性能提升5%都叫大改進,可以更新
一代架構了。
這使我對golang寫的多核應用程序性能產生懷疑:一個http server在48核處理器上居
然搞出124個threads,而且沒有pin to core,不識別numa,簡單靜態文件性能還沒有
nginx的零頭多,75% CPU都是idle,有失golang的水準。
這讓我想到了EE工程師的悲哀:世界上硬件CPU公司屈指可數,最牛的CPU公司性能比最
差的快也不到一倍。而不合格的軟件工程師寫的爛程序糟蹋多核CPU,性能可能下降上
百倍,而且還有安全漏洞。所以軟件公司願意多花幾倍的包裹雇用優秀軟件工程師還是
省錢的。大多數互聯網公司對硬件的要求是穩定就好,不關心性能。而他們自己的軟件
開發部門不停的refactoring,翻修輪子製造工作崗位,才能保證軟件質量和性能。這
樣對於優秀的硬件工程師,跳槽也就一兩家公司競爭offer,而同樣優秀的軟件工程師
會有十幾家或更多公司競爭,包裹... 阅读全帖

发帖数: 1
19
golang的http microbenchmark结果跟algernon一样,说明不是algernon问题,要不就
是golang需要额外调优,跟jvm一样https://github.com/golang/benchmarks/blob/
master/http/http.go

..

发帖数: 1
20
golang到目前为止也不支持SO_REUSEPORT,这个至少比NGINX慢5倍。
垃圾GC估计比NGINX慢1倍。多余的goroutine调度再慢上1倍。
algernon建立在golang上,golang在性能设计上有问题,algernon也没办法。
d***a
发帖数: 13752
21
如果用golang的syscall包,可以用SO_REUSEPORT吧。OS要支持SO_REUSEPORT。
这个比较对golang不太公平。golang可以做很多事情,nginx专长做web server。

发帖数: 1
22
感覺golang的默認goroutine設計模式有問題,下面是golang http microbenchmark的
perf report:
60.24% [kernel] [k] arch_cpu_idle
6.43% [kernel] [k] _raw_spin_lock
4.40% http [.] runtime.runqgrab
2.19% http [.] runtime.findrunnable
感覺golang如果有很多goroutine和thread,大部分時間都會用在runtime.runqgrab上
,然後runtime.futex會過載,導致系統60% CPU都是idle

发帖数: 1
23
軟件設計太重要了,今天測試golang algernon http server靜態文件性能,比nginx差
了幾十倍以上。在我們硬件CPU領域,別說差幾倍,性能提升5%都叫大改進,可以更新
一代架構了。
這使我對golang寫的多核應用程序性能產生懷疑:一個http server在48核處理器上居
然搞出124個threads,而且沒有pin to core,不識別numa,簡單靜態文件性能還沒有
nginx的零頭多,75% CPU都是idle,有失golang的水準。
這讓我想到了EE工程師的悲哀:世界上硬件CPU公司屈指可數,最牛的CPU公司性能比最
差的快也不到一倍。而不合格的軟件工程師寫的爛程序糟蹋多核CPU,性能可能下降上
百倍,而且還有安全漏洞。所以軟件公司願意多花幾倍的包裹雇用優秀軟件工程師還是
省錢的。大多數互聯網公司對硬件的要求是穩定就好,不關心性能。而他們自己的軟件
開發部門不停的refactoring,翻修輪子製造工作崗位,才能保證軟件質量和性能。這
樣對於優秀的硬件工程師,跳槽也就一兩家公司競爭offer,而同樣優秀的軟件工程師
會有十幾家或更多公司競爭,包裹... 阅读全帖

发帖数: 1
24
golang的http microbenchmark结果跟algernon一样,说明不是algernon问题,要不就
是golang需要额外调优,跟jvm一样https://github.com/golang/benchmarks/blob/
master/http/http.go

..

发帖数: 1
25
golang到目前为止也不支持SO_REUSEPORT,这个至少比NGINX慢5倍。
垃圾GC估计比NGINX慢1倍。多余的goroutine调度再慢上1倍。
algernon建立在golang上,golang在性能设计上有问题,algernon也没办法。
d***a
发帖数: 13752
26
如果用golang的syscall包,可以用SO_REUSEPORT吧。OS要支持SO_REUSEPORT。
这个比较对golang不太公平。golang可以做很多事情,nginx专长做web server。

发帖数: 1
27
感覺golang的默認goroutine設計模式有問題,下面是golang http microbenchmark的
perf report:
60.24% [kernel] [k] arch_cpu_idle
6.43% [kernel] [k] _raw_spin_lock
4.40% http [.] runtime.runqgrab
2.19% http [.] runtime.findrunnable
感覺golang如果有很多goroutine和thread,大部分時間都會用在runtime.runqgrab上
,然後runtime.futex會過載,導致系統60% CPU都是idle

发帖数: 1
28
所以結論還是我前面提出的:
科班嚴肅大項目還是會用java、cpp、csharp,只有自己單幹的門外漢才首選golang。
golang能幹的java、cpp、csharp都能幹,golang只不過是在這三個裡面取捨折中一下
:平庸的性能,平庸的功能,平庸的第三方支持。
單個方向上都不是第一選擇:比甜比不過csharp,比快比不過cpp,比廣比不過java,
golang目前還不是一流語言。

go,
g****t
发帖数: 31659
29
我想问一句。你做过的软件项目最多多少用户?严肃的大项目不是凭空想象可以得到的。
Golang本身在goog内部就有很多应用了。而且什么时候有谁拿golang和c比性能了吗


: 對於嚴肅的後台大項目:

: 1. dependency可以用container解決

: 2. java/cpp有jenkins cmake apt dpkg不比go get差

: 3. github上面的項目都是upstream,需要os廠商或中間商根據CVE改造,
直接
git

: clone有很大安全風險

: 4. cpp/java也可以有coroutine或者actor模式,不是golang獨有

: 5. golang沒有一個除了google的大公司背書,比javascript都差

: github

c*******v
发帖数: 2599
30
试着回答一下brainless,netghost的帖子。
(1)
区块链我不熟悉。但是目测300-500行写一个区块链后台没问题。
这里的要点是,假如有一个internet service新领域,我怀疑java是干不过go的。
因为go只有25个关键字。自带batteries够做很多东西。
简单说,go大幅度降低了并发的门槛,和internet service后台开发的门槛。
一个新领域对第三方库依赖不大的情况下,人民群众的力量是可能把一个方向
慢慢做好做精的。
目前现状似乎确实是各种区块链项目用go的挺多。我猜不会比java少吧。
我觉得就是原来web server用python的同一批屌丝...
(2)
我是做算法研发的。简单说就是开发新算法的。但是开发新算法和算法的生产实现
到最后是分不开的。算法到最后是无法和实现办法,语言,机器分开的。
那么我需要一个语言介于c python之间的办法。来平衡开发速度和运行速度。以及
deploy的难度。并且最好还有和新的应用领域结合的社区。而且我需要并行程序。
golang再怎么样毛病多。开发速度,运行速度,deploy难度,社区进展,各项综... 阅读全帖
n******7
发帖数: 12463
31
来自主题: Programming版 - 业余说说Golang的问题
我的理解是
golang就是个带GC,concurrncy很容易的C
另外编译快,deploy方便
据说golang吸引了很多python programmer, 我也算是一个吧
不过大部分好处都是有代价的,很多缺点要实际用才能感受
作为只写过golang hello world的人,看了下面一个总结决定不值得学习
最关键的是前两条:
Hard to abstract even the simplest notions
Designed to make the programmer expendable
第二条对java之类的可能也适用,但是java的抽象级别还是高了很多,也就是说经验技
巧还是很有用的
Con
Hard to abstract even the simplest notions
Go is famously regarded as very simple. However, this simplicity becomes
problematic in time. Programmers who use Go find themselves over and over
... 阅读全帖
s********k
发帖数: 6180
32
不要只看表面语言性质,Golang提供多了苦逼EE等做C底层转向马工做web的好机会,原
本只能走python一条路,现在发现golang原来这么像C还能直接上prod不用担心性能问
题,多好
另外一方面也是行业大趋势在web之外多了很多data pipeline中间件的要求,或者
streaming这样service的服务,尤其是和k8s这样的管理部署工具结合之后用起来方便
,搭轮子快多了
另外一方面其实golang被rob pike称道的concurrency,感觉这个并不是核心竞争优势
g****t
发帖数: 31659
33
说的不错,很有道理。


: 不要只看表面语言性质,Golang提供多了苦逼EE等做C底层转向马工做web的好机
会,原

: 本只能走python一条路,现在发现golang原来这么像C还能直接上prod不用担心
性能问

: 题,多好

: 另外一方面也是行业大趋势在web之外多了很多data pipeline中间件的要求,或者

: streaming这样service的服务,尤其是和k8s这样的管理部署工具结合之后用起
来方便

: ,搭轮子快多了

: 另外一方面其实golang被rob pike称道的concurrency,感觉这个并不是核心竞
争优势


发帖数: 1
34
就是這種簡單到不行的功能,golang algernon都沒做好,我不是做互聯網的,老闆要
求用各種語言給CPU做benchmark,在golang上就選了algernon,結果性能弱爆了。這個
就像drystone測試,一般都選最簡單的應用。


: 静态文件下载 这种cdn业界早就做烂了 百分之90以上的cdn服务后端都是
nginx改吧

: 改吧 你提这种问题没意思的很


发帖数: 1
35
我的主要觀點是硬件設計非常謹慎,我們改幾行RTL都得層層審批,一幫大牛評估,可
有可無的都被砍掉,於是硬件CPU廠家的性能差距越來越小。而軟件互聯網領域開發要
求糙快猛,實現同樣的功能,性能差異極大,導致各種方便麵語言橫行,golang是一個
,python更差,java也不咋滴。
我認為主要原因不是golang、python、java這些語言爛,而是用這些語言的大部分程序
員普遍缺乏軟件效率和CPU架構的基本常識,寫的東西爛。但這些並不妨礙他們的
package大,福利更好。因為硬件領域狡兔死獵狗烹,做得太穩定就沒工作了。


: 你这个引申的结论就不合适了

: 搞framework,做软件工具的是要发明轮子,因为那是他们的市场,他们要创造
市场

: 但是对软件工程师的需求不是来自于这些被创造的市场,而是来源于软件能做的
事情太

: 多,可能性无限。

: 硬件也可以做很多,但做个新硬件的成本和限制太多,周期太长,开辟新市场,
产生新

: 产值这方面和软件没法比。软件从开源的开始往加东西,现成的都不需要成本,
成本只

: 有很少的硬... 阅读全帖

发帖数: 1
36
目前发现两大问题:
1. GOGC,关闭Garbage Collection,性能提高20%,无语了,golang不是吹牛GC比JVM
G1强很多么?NGINX不用GC不是照样可以写程序么?
2. 滥用FUTEX,从strace上看,一个HTTP GET引发众多threads拼抢,thundering herd
problem,跟NGINX的SO_REUSEPORT设计完全不同。GO runtime调度需要用futex,众多
goroutines给本来就很脆弱的futex加重负担。
各位大侠,我没学过golang,只花了几天测测http性能,就发现这两个问题,这应该是
设计失误吧?
[pid 29063] <... epoll_wait resumed> [{EPOLLIN|EPOLLOUT, {u32=4228357504,
u64=140170486062464}}], 128, -1) = 1
[pid 29063] futex(0x147c010, FUTEX_WAKE, 1) = 1
[pid 29063] read(6,
[pid 290... 阅读全帖

发帖数: 1
37
SO_REUSEPORT是Linux Kernel 3.9里面新加的,可以让多个process共享socket,减少
socket accept上的瓶颈。
golang不支持这个我挺吃惊的。NGINX 1.9就有了。对于业务繁重的HTTP服务器,或者
压力测试,SO_REUSEPORT必不可少。
感觉默认的goroutine blocking工作模式效率比non-blocking event poll低很多,虽
然编程更容易。
难道后端不应该都是non-blocking模式么?还有goroutine概念,给硬件加速带来负担
。不知道各种网卡traffic steering技术对golang有没有效果。

发帖数: 1
38
謝謝,我也找到這些了,但他們都是非標準、野生的SO_REUSEPORT庫,我本身也不是搞
golang的,只能報告裡面寫,目前標準golang不支持,未來1.11有可能支持了
s********k
发帖数: 6180
39
赞资料
现在golang运行环境大部分其实更复杂,很多事在cloud上的VM做的,VM针对bare
linux的调度就是多了一层,如果用container(绝大部分golang都用k8s或者其他
container的部署技术)比如k8s,那么一个VM只是一个node,上面还有很多pod,又加
了一层隔离,其中的网络配置方式也可以有多种。所以这个性能优化还真是一个大课题
。搞定这个绝对大包不愁啊
magagop 你底层系统经验这么好,绝对应该搞搞这个

发帖数: 1
40
關於golang的NUMA,我找到文檔了,2014年設計,至今(2018年)沒有人實現,說明不
容易。老毛子就是有人才啊,Dmitry Vyukov
https://docs.google.com/document/u/0/d/1d3iI2QWURgDIsSR6G2275vMeQ_X7w-
qxM2Vp7iGwwuM/pub
https://groups.google.com/forum/#!topic/golang-dev/Hjj3fPBLXlk
s********k
发帖数: 6180
41
我觉得你是不是可以换个方法实验
你目前的实验室基于一个200+核心直接run bare golang的http server?但是实际上很
多golang打包container的都是基于pod的,可以试一下k8s,比如你开# of core 个VM
?然后pin每个VM到一个core成为一个node,再每个node上再开2个pod?
所以你原来的测试是1个http server 开N个goroutine,现在变成每个pod上开一个http
server,就应该是1个http server开N/200/2个goroutine
这样的scheduler问题就完全变了。不知道效果如何

miss

发帖数: 1
42
Nginx下降更多,都用VM結果是nginx和golang的差距比裸機小,從原來的10倍或100倍
下降到一半或幾倍,可能這就是網上說的golang和c差距不大的原因。去VM性能提高很
多,這也是亞馬遜買CPU公司做硬件的原因。

降.
呢?

发帖数: 1
43
http的goroutine和gogc不是特殊應用,是golang做web後台的基礎好麼,回去先看看什
麼是goroutine和gogc再來回復。這兩個問題非常不好workaround,是golang區別於cpp
語言的根子。

发帖数: 1
44
就是這種簡單到不行的功能,golang algernon都沒做好,我不是做互聯網的,老闆要
求用各種語言給CPU做benchmark,在golang上就選了algernon,結果性能弱爆了。這個
就像drystone測試,一般都選最簡單的應用。


: 静态文件下载 这种cdn业界早就做烂了 百分之90以上的cdn服务后端都是
nginx改吧

: 改吧 你提这种问题没意思的很


发帖数: 1
45
我的主要觀點是硬件設計非常謹慎,我們改幾行RTL都得層層審批,一幫大牛評估,可
有可無的都被砍掉,於是硬件CPU廠家的性能差距越來越小。而軟件互聯網領域開發要
求糙快猛,實現同樣的功能,性能差異極大,導致各種方便麵語言橫行,golang是一個
,python更差,java也不咋滴。
我認為主要原因不是golang、python、java這些語言爛,而是用這些語言的大部分程序
員普遍缺乏軟件效率和CPU架構的基本常識,寫的東西爛。但這些並不妨礙他們的
package大,福利更好。因為硬件領域狡兔死獵狗烹,做得太穩定就沒工作了。


: 你这个引申的结论就不合适了

: 搞framework,做软件工具的是要发明轮子,因为那是他们的市场,他们要创造
市场

: 但是对软件工程师的需求不是来自于这些被创造的市场,而是来源于软件能做的
事情太

: 多,可能性无限。

: 硬件也可以做很多,但做个新硬件的成本和限制太多,周期太长,开辟新市场,
产生新

: 产值这方面和软件没法比。软件从开源的开始往加东西,现成的都不需要成本,
成本只

: 有很少的硬... 阅读全帖

发帖数: 1
46
目前发现两大问题:
1. GOGC,关闭Garbage Collection,性能提高20%,无语了,golang不是吹牛GC比JVM
G1强很多么?NGINX不用GC不是照样可以写程序么?
2. 滥用FUTEX,从strace上看,一个HTTP GET引发众多threads拼抢,thundering herd
problem,跟NGINX的SO_REUSEPORT设计完全不同。GO runtime调度需要用futex,众多
goroutines给本来就很脆弱的futex加重负担。
各位大侠,我没学过golang,只花了几天测测http性能,就发现这两个问题,这应该是
设计失误吧?
[pid 29063] <... epoll_wait resumed> [{EPOLLIN|EPOLLOUT, {u32=4228357504,
u64=140170486062464}}], 128, -1) = 1
[pid 29063] futex(0x147c010, FUTEX_WAKE, 1) = 1
[pid 29063] read(6,
[pid 290... 阅读全帖

发帖数: 1
47
SO_REUSEPORT是Linux Kernel 3.9里面新加的,可以让多个process共享socket,减少
socket accept上的瓶颈。
golang不支持这个我挺吃惊的。NGINX 1.9就有了。对于业务繁重的HTTP服务器,或者
压力测试,SO_REUSEPORT必不可少。
感觉默认的goroutine blocking工作模式效率比non-blocking event poll低很多,虽
然编程更容易。
难道后端不应该都是non-blocking模式么?还有goroutine概念,给硬件加速带来负担
。不知道各种网卡traffic steering技术对golang有没有效果。

发帖数: 1
48
謝謝,我也找到這些了,但他們都是非標準、野生的SO_REUSEPORT庫,我本身也不是搞
golang的,只能報告裡面寫,目前標準golang不支持,未來1.11有可能支持了
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)