精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

云計(jì)算
事情起因于公司一位同事在內(nèi)部郵件組中post了一個(gè)問(wèn)題,一個(gè)使用了go1.8.3寫(xiě)的業(yè)務(wù)程序跑了一段時(shí)間后出現(xiàn)部分goroutine卡在等待一個(gè)鎖ForkLock的現(xiàn)象,同事認(rèn)為這是go1.8.3的bug,升級(jí)到go1.10后沒(méi)有再重現(xiàn)。

事件起因

事情起因于公司一位同事在內(nèi)部郵件組中post了一個(gè)問(wèn)題,一個(gè)使用了go1.8.3寫(xiě)的業(yè)務(wù)程序跑了一段時(shí)間后出現(xiàn)部分goroutine卡在等待一個(gè)鎖ForkLock的現(xiàn)象,同事認(rèn)為這是go1.8.3的bug,升級(jí)到go1.10后沒(méi)有再重現(xiàn)。為了搞清楚這個(gè)事情,同事在github上發(fā)了issue https://github.com/golang/go/issues/26836,期間也做了很多重現(xiàn)的嘗試,但并未重現(xiàn)。

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

我瀏覽了一下出現(xiàn)該問(wèn)題的業(yè)務(wù)代碼,大概的使用方式是父進(jìn)程調(diào)用os/exec下的Command開(kāi)子進(jìn)程執(zhí)行shell命令。Command后面會(huì)調(diào)用golang封裝的forkExec來(lái)開(kāi)子進(jìn)程并執(zhí)行命令,forkExec使用了ForkLock。

問(wèn)題分析

ForkLock 的存在是為了避免下面的情況:在有多個(gè)goroutine同時(shí)fork exec的情況下, 為了子進(jìn)程只繼承它需要的文件描述符,需要在父進(jìn)程在創(chuàng)建這些文件描述符的時(shí)候加上O_CLOEXEC標(biāo)志,這樣在子進(jìn)程中這些描述符是關(guān)閉的,子進(jìn)程按需把自己需要繼承的描述符打開(kāi)即可。

Linux在2.6.27之后,打開(kāi)文件或者管道,和設(shè)置O_CLOEXEC是一個(gè)原子操作,因此問(wèn)題不大,但golang對(duì)內(nèi)核版本的要求是2.6.23及以上,另外Unix系統(tǒng)中,open和設(shè)置O_CLOEXEC是兩個(gè)操作,如果在兩個(gè)操作之間發(fā)生fork, 子進(jìn)程就可能繼承它不需要的文件描述符,因此需要加鎖。重點(diǎn)看下forkExec時(shí)候的源代碼:

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

從問(wèn)題的現(xiàn)象看,肯定是某goroutine在forkExecPipe或者forkAndExecInChild這兩步卡住了,鎖沒(méi)釋放,因此有些goroutine一直拿不到鎖,饑餓致死。forkExecPipe***調(diào)用的是內(nèi)核pipe2, forkAndExecInChild***調(diào)用的是內(nèi)核clone和exec。

原因猜測(cè)

pipe2是一個(gè)快速系統(tǒng)調(diào)用,因此可能block的系統(tǒng)調(diào)用是clone和exec, 加上在go1.10上這個(gè)問(wèn)題沒(méi)有重現(xiàn),對(duì)比go1.8代碼和go1.9在forkAndExecInChild函數(shù)上的差異:

go1.8

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

go1.9

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

go1.9增加了CLONE_VFORK和CLONE_VM 。只帶SIGCHILD的clone可以認(rèn)為類(lèi)似于fork(***都是調(diào)用do_fork), fork的問(wèn)題是,在父進(jìn)程占用內(nèi)存越大性能越差,具體可以看這個(gè)鏈接:https://bugzilla.redhat.com/show_bug.cgi?id=682922

這個(gè)case 2011年提出,今年7月還在更新,這個(gè)case反饋的問(wèn)題是,盡管Linux kernel 引入copy-on-write機(jī)制,但fork的時(shí)候依然要拷貝頁(yè)表,進(jìn)程虛擬內(nèi)存越大,需要拷貝的頁(yè)表項(xiàng)越多,因此fork越慢。Golang的討論組有人測(cè)試過(guò),heap size在2G的情況下,fork耗時(shí)可以到毫秒級(jí)別, 正常是及幾十微秒,上千倍差距。

Go1.9加上這兩個(gè)參數(shù)是為了讓子進(jìn)程和父進(jìn)程共享內(nèi)存,相當(dāng)于調(diào)用vfork, 不需要拷貝頁(yè)表, 加快創(chuàng)建速度,從測(cè)試效果看,穩(wěn)定在幾十微妙。

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

所以一個(gè)合理的猜測(cè)是,在低于go1.9版寫(xiě)的程序中,當(dāng)程序內(nèi)存占用足夠大,而且創(chuàng)建進(jìn)程頻率足夠頻繁,會(huì)導(dǎo)致ForkLock長(zhǎng)時(shí)間等待。

實(shí)驗(yàn)論證

我用go1.8.3寫(xiě)了一個(gè)測(cè)試程序,在2核4G的虛擬機(jī)(kernel 3.10.0-693.17.1.el7.x86_64)下測(cè)試。

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

在外部每隔10秒,給這個(gè)程序發(fā)SIGUSR1信號(hào),打印運(yùn)行時(shí)堆棧,運(yùn)行一段時(shí)間后,部分goroutine獲取ForkLock的時(shí)間越來(lái)越長(zhǎng)。見(jiàn)下面兩圖:

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

而在go1.9及以上版本上并未出現(xiàn)上述情況,這個(gè)結(jié)果我覺(jué)得已經(jīng)可以說(shuō)明問(wèn)題。升級(jí)版本到go1.9及以上版本可以解決該問(wèn)題。

寫(xiě)在***

vfork是為了解決fork拷貝頁(yè)表項(xiàng)導(dǎo)致的性能問(wèn)題, 而且大部分場(chǎng)景fork之后是調(diào)用exec,exec要把所有頁(yè)表刪除重置新的頁(yè)表, 實(shí)在沒(méi)必要再拷貝頁(yè)表項(xiàng)。但由于vfork父子進(jìn)程共享內(nèi)存,所以使用要很小心,如果子進(jìn)程修改某個(gè)變量,會(huì)影響到父進(jìn)程,而且kernel會(huì)掛起父進(jìn)程,讓子進(jìn)程先執(zhí)行,這些限制基本限制vfork只適合跟exec的場(chǎng)景,不如fork通用。

正因?yàn)関fork的使用需要小心,因此go1.9準(zhǔn)備加入vfork發(fā)布之前,有人提出代碼不夠健壯,因?yàn)閞awVforkSyscall返回之后,在父進(jìn)程段還執(zhí)行指令,這樣子進(jìn)程有機(jī)會(huì)破壞雙方的共享?xiàng)#虼颂崃艘粋€(gè)commit去讓rawVforkSyscall在返回后,在父進(jìn)程段什么都不做直接return,解決這個(gè)互相影響,如圖所示:

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

如有興趣深入了解,可以看下這個(gè)commit 的review,Rob Pike等人都有發(fā)言。

https://go-review.googlesource.com/c/go/+/46173

GO語(yǔ)言性能問(wèn)題的發(fā)現(xiàn)和解決

 

責(zé)任編輯:未麗燕 來(lái)源: 51CTO.com
相關(guān)推薦

2012-11-23 13:09:38

PHP性能

2013-07-31 16:56:08

系統(tǒng)級(jí)編程語(yǔ)言語(yǔ)言性能語(yǔ)言

2017-10-10 15:14:23

BUGiOS 11蘋(píng)果

2009-02-17 14:20:01

JavaFX 1.1腳本語(yǔ)言JavaFX Mobi

2010-10-13 10:47:52

GoGoogle

2016-06-15 10:08:29

云計(jì)算

2009-06-29 09:38:50

JSF標(biāo)簽JSF

2022-03-31 10:25:20

物聯(lián)網(wǎng)工業(yè) 4.0大數(shù)據(jù)分析

2023-10-16 16:08:42

工業(yè) 4.0物聯(lián)網(wǎng)邊緣計(jì)算

2024-06-05 14:35:26

2011-03-31 16:45:39

Redhat配置nagios

2020-08-24 08:34:03

命令性能優(yōu)化

2023-12-30 18:35:37

Go識(shí)別應(yīng)用程序

2025-03-27 00:45:00

2020-03-16 14:32:08

Git工具開(kāi)發(fā)

2024-10-10 15:32:51

2010-06-09 09:39:42

Opensuse雙系統(tǒng)

2020-03-11 09:57:10

數(shù)據(jù)安全網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2015-01-21 15:40:44

GoRuby

2024-04-28 10:17:30

gnetGo語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美成免费一区二区视频| se01亚洲视频| 久久一区二区三区四区| 欧美日韩国产精品专区| 久久综合九色99| 国产精品久久久久久无人区| 激情视频一区| 国产亚洲精品美女| 黑森林av导航| 欧美成人三级| 亚洲成国产人片在线观看| 色99中文字幕| 色欲av伊人久久大香线蕉影院| 人人精品人人爱| 97香蕉超级碰碰久久免费的优势| 婷婷丁香综合网| 日韩激情网站| 欧美成人午夜电影| 一区二区三区 日韩| 国产在线看片免费视频在线观看| 中文字幕中文字幕在线一区 | 国语自产在线不卡| 国产精品精品软件男同| 欧洲专线二区三区| 亚洲成人精品av| 中文字幕 欧美日韩| 在线看的毛片| 亚洲成人自拍偷拍| 蜜臀av.com| 在线免费黄色| 久久精品一区四区| 国产精品久久久久久久小唯西川| 亚洲图片欧美在线| 毛片一区二区| 欧美一级电影久久| 日韩免费av片| 黄色日韩在线| 欧美精品电影在线| 欧美日韩成人免费观看| 欧美aaaa视频| 中文字幕av一区| 日韩精品无码一区二区三区久久久| 污视频在线免费观看网站| 国产欧美综合在线观看第十页| 精品一区二区三区免费毛片| 午夜美女福利视频| 国产精品996| 97av影视网在线观看| 国产精品99精品| 猛男gaygay欧美视频| 亚洲国产成人在线视频| 久久久男人的天堂| 国产福利一区二区精品秒拍| 欧美成人午夜电影| 无码人妻丰满熟妇啪啪网站| 亚洲视频精选| 精品国产乱码久久久久久牛牛| 一区二区在线免费观看视频| 国产午夜精品一区在线观看 | 国产精品久久久久久婷婷天堂| 国产欧美日韩另类| 99精品免费视频| 国产91精品高潮白浆喷水| 一级片免费网址| av不卡在线看| 日本久久91av| 中文字幕在线观看1| 男女男精品视频网| 91精品国产综合久久香蕉最新版 | 黄页免费在线观看视频| 国产直播在线| 91福利小视频| 色婷婷一区二区三区av免费看| 久久久久久一区二区三区四区别墅| 欧美日韩一区在线| 中日韩av在线播放| 欧美9999| 日韩成人在线免费观看| 三级网站在线免费观看| 成人嫩草影院| 久久视频精品在线| 五月天婷婷网站| 久久看片网站| 亚洲一区二区三区sesese| 黄色美女一级片| 久久影音资源网| 中文字幕中文字幕99| 色呦呦在线看| 狠狠色噜噜狠狠狠狠97| 午夜免费高清视频| 亚洲欧洲国产精品一区| 精品小视频在线| √天堂中文官网8在线| 精品动漫3d一区二区三区免费版 | 乱子伦视频在线看| 欧美色网在线| 日韩三级精品电影久久久| 国产麻豆xxxvideo实拍| 色999国产精品| 欧美精品成人91久久久久久久| 亚洲天堂男人av| 国产精品91一区二区| 久久久久久艹| 日本色护士高潮视频在线观看| 欧美日韩在线看| 手机在线视频一区| 国产日产精品_国产精品毛片| 日韩有码在线播放| 青青草成人av| 国产一区二区三区精品视频| 九色91国产| av在线麻豆| 在线一区二区视频| www.com日本| 欧美成人直播| 欧美在线性爱视频 | 九九精品免费视频| 国产麻豆精品一区二区| 日韩免费毛片| 在线看片福利| 欧美精品一区二区三区高清aⅴ| 成人免费视频入口| 销魂美女一区二区三区视频在线| 99porn视频在线| 麻豆av在线免费看| 日本韩国欧美在线| 亚洲熟女乱综合一区二区三区| 91成人精品视频| 国产精品久久久久久婷婷天堂| 少妇又色又爽又黄的视频| 一区二区三区四区蜜桃| 久久精品国产99久久99久久久| 青青草91久久久久久久久| 88xx成人精品| 天天干天天色天天| 亚洲第一精品在线| 波多野结衣三级视频| 99久久夜色精品国产亚洲1000部| 国产精品91一区| 日本亚洲欧美| 色视频成人在线观看免| 欧美性xxxx图片| 亚洲精品九九| 国产亚洲第一区| 超碰成人av| 日韩成人免费视频| 日本中文字幕第一页| 99精品偷自拍| 国产免费观看高清视频| 国产极品模特精品一二| 欧美黄色三级网站| 性做久久久久久久久久| 亚洲一区二区三区中文字幕在线| 91香蕉国产线在线观看| 亚洲色图欧美| av一本久道久久波多野结衣| 日本资源在线| 精品免费视频.| 日本在线小视频| 波多野结衣中文字幕一区二区三区| 国产精品va在线观看无码| 视频精品一区二区三区| 久久久久国产一区二区三区| 国产综合在线播放| 精品免费在线观看| 国产精品1000部啪视频| 日韩国产在线一| 亚洲国产另类久久久精品极度| 国产精品蜜月aⅴ在线| www.午夜精品| 成人免费公开视频| 欧美视频国产精品| 国产日韩精品中文字无码| 国产综合一区二区| a天堂资源在线观看| 牛牛精品成人免费视频| 国产成人中文字幕| 国产精品实拍| 亚洲电影第1页| 69视频免费看| 亚洲精品乱码久久久久久 | 久久悠悠精品综合网| 国产成人av网| 中文在线免费| 亚洲欧美日韩爽爽影院| 国产一区二区波多野结衣| 伊人开心综合网| 国产精品无码永久免费不卡| 免费在线成人网| 国产成人在线小视频| 精品视频久久| 豆国产97在线| jvid一区二区三区| 久久久久久久久91| 国产精品一二三区视频| 日韩一级黄色片| 国产精品自拍99| 国产精品成人免费| 超碰97人人干| 国产成人综合在线| av在线无限看| 亚洲经典三级| 爱爱爱视频网站| 免费视频一区三区| www.成人av.com| 国产成+人+综合+亚洲欧美| 欧美肥臀大乳一区二区免费视频| av在线之家电影网站| 亚洲国产精品高清久久久| 中文字幕永久免费视频| 精品久久久视频| 久久视频免费看| 成人欧美一区二区三区黑人麻豆 | 天堂av2020| 裸体一区二区| 无码专区aaaaaa免费视频| 亚洲午夜精品一区二区国产 | 国产女人在线视频| 日韩黄色高清视频| 亚洲经典一区二区| 欧美挠脚心视频网站| av首页在线观看| 黑丝美女久久久| 国产污视频在线看| 一区二区三区在线播放| 欧美做爰啪啪xxxⅹ性| 久久精品免费在线观看| 亚洲国产欧美视频| 99视频超级精品| 国产吃瓜黑料一区二区| 国产一区二区三区精品视频| www.久久91| 人人爽香蕉精品| 手机看片福利盒子久久| 国产精品一卡| 国产成人精品视频免费看| 激情综合久久| 岛国大片在线播放| 伊人久久综合| 僵尸世界大战2 在线播放| 欧美黄色一区二区| 欧美日韩中文字幕在线播放| 欧美疯狂party性派对| 亚欧精品在线| 成人一级毛片| 一区一区视频| 欧美激情亚洲| 中文精品无码中文字幕无码专区| 欧美精品一级| 国内精品在线观看视频| 国产精品普通话对白| 免费看一级大黄情大片| 亚洲一区不卡| 狠狠操精品视频| 日本成人在线不卡视频| 伊人影院综合在线| 国产乱妇无码大片在线观看| 成人高清在线观看视频| 国产高清精品久久久久| 成年人小视频在线观看| jvid福利写真一区二区三区| av2014天堂网| 国产欧美日韩中文久久| 农村老熟妇乱子伦视频| 亚洲天堂福利av| 久久精品一级片| 丰满岳妇乱一区二区三区| 伦av综合一区| 欧美日韩视频在线观看一区二区三区 | 不卡av一区二区| 亚洲欧洲中文| 欧美三级视频| 欧美女人性生活视频| 日韩成人一级大片| 黄色片免费网址| 9色porny自拍视频一区二区| 成人精品999| 亚洲啪啪综合av一区二区三区| 国产一级在线免费观看| 狠狠躁夜夜躁久久躁别揉| 久久久国产免费| 日韩一二三区视频| 四虎成人免费在线| 日韩三级成人av网| 国产99在线| 91精品中文在线| 亚洲精品进入| 做爰高潮hd色即是空| 一区二区福利| 欧美一级视频在线| 2021国产精品久久精品| 国精产品久拍自产在线网站| 午夜精品一区二区三区三上悠亚 | 成年男女免费视频网站不卡| 国产精品v片在线观看不卡| www.成人| 日本精品一区二区三区高清 久久| 66视频精品| 可以免费在线看黄的网站| 国产精品综合在线视频| 亚洲一级中文字幕| 一个色综合网站| 中文字幕1区2区3区| 精品福利二区三区| 国产在线激情视频| 国产福利精品视频| 久久夜色电影| 久久综合亚洲精品| 蜜乳av一区二区三区| av无码av天天av天天爽| 一区二区在线看| 一级黄色片在线播放| 亚洲欧美视频在线| xxxx视频在线| 亚洲专区在线视频| 久久久影院免费| 亚洲视频在线观看一区二区三区| 成人小视频在线| 91成人福利视频| 欧美日韩中文一区| 国产中文字幕在线| 欧洲日韩成人av| 日韩丝袜视频| 欧美一区二区激情| 国产美女精品一区二区三区| 亚洲av熟女国产一区二区性色| 欧美性猛xxx| 国产 日韩 欧美 综合| 欧美成人合集magnet| 欧美91在线|欧美| 色播亚洲视频在线观看| 老牛国产精品一区的观看方式| 久久亚洲AV成人无码国产野外| 亚洲一区二区三区在线| jlzzjlzz亚洲女人18| 欧美大码xxxx| 精品国产三级| 警花观音坐莲激情销魂小说| 久久99久久99| 国产一二三四区| 欧美一区二区三区性视频| 午夜在线视频播放| 国产日韩精品在线播放| 欧美电影免费| 日韩在线一区视频| 亚洲欧洲精品成人久久奇米网| 真实的国产乱xxxx在线91| 少妇激情综合网| 欧美午夜三级| 欧美另类videos| 国产成人免费xxxxxxxx| 国产在线视频在线观看| 精品国产91乱码一区二区三区| 色婷婷在线播放| 九九99久久| 久久免费黄色| 男人天堂资源网| 欧美人体做爰大胆视频| caoporn免费在线| 高清不卡日本v二区在线| 亚洲二区视频| 白白色免费视频| 欧美日韩成人综合在线一区二区| 日本成a人片在线观看| 一道本一区二区三区| 成人动漫在线观看视频| 国产精品久久| av黄色一级片| 日韩欧美成人区| 91高清在线| 99re在线视频上| 国产美女诱惑一区二区| 亚洲图片另类小说| 欧美日韩一区二区不卡| 日本在线观看高清完整版| 精品国产_亚洲人成在线| 天堂久久久久va久久久久| 538精品视频| 欧美成人bangbros| 69久成人做爰电影| 视频一区二区视频| 91在线云播放| 国产又粗又猛又爽| 亚洲97在线观看| 欧美r级电影| 波多野结衣影院| 91精品国产一区二区人妖| 欧产日产国产精品视频| 中文字幕一区二区三区5566| 成人免费视频视频| 中文字幕+乱码+中文| 久久久久久噜噜噜久久久精品| 国产一区二区三区四区大秀| 天天干天天曰天天操| 色婷婷综合久久久中文一区二区 | 欧美激情区在线播放| 欧美军人男男激情gay| 久久久久久久久久影视| 欧美吞精做爰啪啪高潮| 麻豆蜜桃在线观看|