他转过身,指了指跟着进来的杨伟龙,“这个不是跟我一起做实验的。”
“你?”杨伟龙瞪大了眼睛。
…
第97章 顾川的含金量(3/5)
杨伟龙最后只是被宿管骂了一顿,也没有真的被怎么样。
只是他看顾川的眼神,多少带了点别的意味。
顾川压根不在乎。
你爽不爽不要紧,我爽了就行。
他很忙,没时间在这种小人物身上浪费太多的时间。
5173要管,专利和论文的事情也不能落下,这一周,顾川的生活很规律,上午是传奇玩家们在线的低谷,他就去四牌楼做科研,下午回浦口校区,在小店里继续亏钱。
罗俊舟和杨健龙动用了一点小小的权力,把自己带的研究生拉进了课题组,美其名曰是帮顾川干活,实际上就是蹭一下论文。
顾川很识趣地没有任何意见。
整个课题组算上顾校、罗俊舟和杨健龙,现在总人数达到了惊人的二十一个人。
三位青年教师,主要负责统筹。
四位博士生,负责攻克测试脚本里的难点。
剩下的硕士生全是科研牛马,负责搭环境、插网线、跑数据和排版。
当然,还有买饭。
值得一提的是,原本没有资格参加这个课题组的于墩德,也被顾川拉了过来。
“学弟啊,你看看这个数据。”李旭是罗俊舟的首席大弟子,现在虽然还是个讲师职位,但是性格稳重,技术过硬,是罗俊舟门下,公认的最有可能冲击副教授名头的大师兄。
按道理,快三十岁的他完全可以叫顾川一句小顾,但顾川这些天展现出来的东西,让他非常服气。
在当下风气还比较纯粹的学术界,有能力,是真的能受到尊重的。
“我看看...”顾川在写最底层的核心代码,闻言把键盘推了回去接过了报告。
“按照你的理论,O(1)架构下的CPU应该很平滑,但刚才,只有一个新的网络连接进来,服务端的CPU占用率却瞬间飙升到了100%,”李旭指了指表格里的波峰,“是不是有什么问题?”
“了解了。”顾川点头,“我给你说一下吧。”
“你等等...”李旭这些天已经经历了很多次这样的事情,先抬手打断了一下他的发言,朝身后喊了一句,“先把手上的活停一停,来听一下!”
“哦哦!来了来了!”
“好嘞!”
房间内一阵嘈杂。
“小华人呢?”
“去买饭了...”
“我晕,这才几点,就去买饭了?”
李旭在这里资历最老,能力最高,他都对顾川服气,课题组自然没有人再会挑战顾川。
“先别管小华了,”李旭摆摆手,看着端着板凳围成一圈的众人,“好好听讲。”
众人立刻闭嘴,打开了本子,准备记录。
顾川总觉得这个场面很熟悉,颇有种“皇上让你们卸甲,就卸甲吧”的感觉。
他忍住笑,清了清嗓子,“其实这个问题很简单,就是数学上的完美和底层操作系统的冲突。”
“是谁写的多线程测试脚本?”
“呃,我写的...”一个女生举了举手,“很奇怪,我检查过算法公式,应该没有问题,也检查了代码,没发现内存泄露和死循环,但是每次都能复现。”
她叫乔姝,是课题组唯一一个女生,长得...很理科。
“这不怪你,”顾川调了一下代码看了一眼,“这是Linux的问题。”
“你这么写的话,当一个客户端的TCP连接到达网卡,Linux内核就会唤醒所有正在等待的线程。”
“这在操作系统里叫做上下文切换,极其消耗CPU资源。”
李旭皱眉听完,这段分析有理有据,没什么问题,“那要怎么做呢?”
总不能去改Linux的参数吧?
“我提供两套思路。”顾川站起身,立刻有眼尖的学生把一块白板推了过来。
“第一套叫惊群锁,你们看啊。”他在白板上写写画画,“不要让所有的线程都去直接监听端口,而是先抢这把锁,只有拿到这把锁的唯一一个线程,才有资格去等待网络请求。”
嗯,这个好像也能申请个专利。
顾川边写边想。
实际上这个方案,就是后世大名鼎鼎的Nginx服务器用来称霸互联网、解决惊群效应的经典底层逻辑。
“这个好哎。”乔姝感觉今天又学到了。
“是吧,”顾川微笑。
他挺喜欢给这群学生上课的。
要不然,以后弄个名誉教授的头衔?
“当然,这只是应用层的代码,大家都是研究生,我教大家一点更深的东西。”顾川看到人群里于墩德有些尴尬的挠了挠头,笑意更浓了点,“既然是操作系统的问题,那就给操作系统动个小小的手术。”
“给...操作系统动手术?”李旭张了张嘴。
你还真准备给系统调参数?!
“你等等...我打个电话给罗导...”他慌慌张张摸出手机。
这也太吓人了!
“行,”顾川放下笔,随意说道,“正好也等等华哥。”
罗俊舟接到电话的那一刻,就知道顾川想要干嘛,拉着顾校和杨健龙一起,三个人急匆匆的从办公室赶了过来。
整个课题组刷的一下全都站了起来。
“都坐,都坐。”顾校笑着压手,“我就是来听听,不要这么大排场。”
“小顾啊。”他看向顾川,“你继续。”
“哎,你们的饭菜来咯!”门口突然莽莽撞撞地跑过来一个男生,正是小华,结果看到顾校,脸色顿时一僵,“呃...”
“...还不赶快进来。”杨健龙黑着脸,觉得很丢人,“把饭放桌上,找个位置。”
顾川憋着笑,等小华入了座,才继续往下说。
“其实我们刚刚的方法,虽然解决了CPU飙升的问题,但几十个线程去抢一把锁,本身还是会有损耗,跑出来的数据还是会比理论要高。”
“所以说,我们应该这样...”
他在白板上写下了一行代码。
WQ_FLAG_EXCLUSIVE。
“这是一个排他性唤醒标注,”顾川解释道,“当加上这个标注后,内核在队列里会按照顺序,只叫醒排在第一个的线程,绝不打扰后面的。”
“嘶...”李旭看向自家导师。
这玩意儿写错哪怕一个指针,一整台服务器就会瞬间内核崩溃,直接蓝屏死机。
E4500太贵了,他做不了这个主。
罗俊舟也没想到刚来就听到这种事情,踌躇了一下,看向了身旁的顾校。
全场都在看他。
顾校置若罔闻,目光灼灼地看着白板上这行简单的C语言代码。
他看的不是一行代码,而是其背后所代表的东西。
能写出优秀算法的人虽然少,但是名校里好歹还有几个,但是,敢去动Linux内核源码,全中国都可能找不出几个。
哪怕是极其优秀的资深工程师,也做不到。
这得是操作系统祖师爷才敢做的事。
顾校扪心自问。
他自然敢,但绝不会像现在顾川这样云淡风轻。
顾川这是无知者无畏,还是真的胸有成竹?
顾校倾向于后者。
一台sun e4500虽然贵,但服务器本身就有损耗,还在可以承受的范围内。
他下定了决心。
“实践是检验真理的唯一标准。”顾校轻声说道,“去做。”
“我...”李旭喉咙有点干。
“我来吧。”顾川拍了拍他的肩膀,“代码是我写的,责任也由我承担,别怕。”
他看向顾校。
“可以。”顾校微微点了点头,眼中满满的全是期待。
...
第98章 通天咯(4/5)
随着系统重启,服务器顺利开机。
在场的学生甚至杨健龙都松了口气。
只有顾校和罗俊舟盯着顾川看了很久很久。
“老师…”罗俊舟侧身,轻声询问。
“先看结果。”顾校脸色示意他先别说话。
压测脚本再次拉满。
这一次,监控屏幕上的CPU曲线不再是15%,而是极为稳定地处在3%~4%这条线,无论怎么调用接口建立连接,数据都没有大的波动。
机房里一片欢呼。