本文主要是介绍太乙峰下格纳秒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在盛格塾小程序里,曾经有一门独特的课,题目叫《低延迟设计与优化》,它的最初价格是3600。这门课上线本来是给一家企业客户的,他们年底预算剩余,预购课程。但是课程上线后,一些个人用户也下了单。因为内容还未上线,为了避免更多人下单,后来就把价格调整到了9万8(^_^)。
今年春季杭州研习班上,几位老朋友又谈起这门课,促使我下定决心在今年开这门课。
DAY 0
上周四一大早,我带着一大箱装备,从上海南站奔赴九江,就为了上这门课。
与我同一趟动车的还有三个人和我是完全相同的目的地,他们也是从上海出发,参加研习班。我们四个人,有三位在一号车厢,有一位在八号车厢。
下午三点半,火车准时到达九江站,几分钟后,我们在出站口与前来接站的寒啸会合,一共五个人,刚好一辆车。
寒啸是登山圈里的名人,曾登顶珠峰,穿越四大无人区,我与他在微信中认识多年,这一次是第一次见面。微信群里,大家喜欢称他为韩队,我也用这个称呼。
车子很快出了九江市,进入连接九江市和庐山市(原来的星子县)的庐山大道。此时左侧是鄱阳湖,右侧是五老峰,路两边的风景让人目不暇接。
为了让我们更好地领略五老峰的风采,到了白鹿镇后,韩队特别把车转到白鹿洞书院方向,过书院售票处后左转,上了新修好的绕庐山绿道。
五老峰太迷人了,我如此说,韩队也如此说。于是我们禁不住五老峰的诱惑,把车停下来,在茶园边的摄影框附近拍了些照片。
车子过了观音桥景区后,山路就变得更狭窄了,只允许6坐以下车行驶。
大约在下午五点钟,我们到了韩队的登山基地。以前我看过很多基地的照片,这一次终于到了实地。基地有1、2号两栋楼,1号楼就在太乙公路路边,靠近林场的一个进山检查站。2号楼在山坡上面,更临近太乙峰。
韩队直接把我们带到2号楼,那里有会议室,我们把东西放到会议室后,韩队还特别带我们到楼顶,向北看,太乙峰就在眼前,连山顶的石门形状巨石都看得清楚。向西看,可以遥望庐山第一高峰——大汉阳峰。东面是白鹿洞书院方向,可以看到五老峰。向南,则可以遥望鄱阳湖。
当晚,我们就住在韩队的登山基地。三位年轻的小伙伴在桂花树下聊到深夜,我考虑到第二天会很忙,十点多便睡了。
DAY 1
第二天一早6点多,我从鸟鸣中醒来,走到园中,看到他们昨晚喝茶的茶具还在石桌上。
抬头天气晴朗,周围的山峰清晰可见。
早上9点40左右,余下的同行乘坐三辆车几乎在相同时间到了基地。大家稍事休整后,课程在10点钟正式开始。
整个课程分为五篇:中枢、发微、法门、噪声和匠心,每一篇3-4章。
我介绍课程大纲后,便开始第一讲《IA大局观》。
在庐山上的每一秒时间都很宝贵,首要的任务是学习,同时又想抽时间爬山和欣赏庐山的美景,另外,还要考虑大家旅途劳顿,要休息好。
趁着课间休息时间,我为大家安排好了就寝的房间,为午睡做好准备。
在介绍了Intel CPU的大局观、Core和UnCore后,进入第二篇,大家一起深入讨论测量时间的RDTSC指令后,进入充满不确定的CPU的工作频率,我把它比喻为人的心率,不同时间不一样,不同人不一样,高低范围不一样,几乎每时每刻都在变化。
午饭后,进入第三篇:发微,记忆系统。从寄存器开始,介绍了INTEL今年夏天刚推出的APX。
吃过晚饭,第一天挑灯野战的内容是DRAM,回顾内存的发展经过,深究DRAM的原理和组织方法,目的是让大家认识到内存很愚蠢,是优化的关键目标。
DAY 2
按最初的行程安排,爬山活动安排在第二天上午。但根据韩队的建议,调整为第二天上午。
因为从基地到爬山的步行路,还有2公里多的车程,但是不允许走6坐以上车,我们一辆车不够,只好分为几批。我和翅膀决定先出发,步行一段。不想我们走了不到500米,就有一辆轿车停下来,主动要我们搭车,我们坐上去,很快就到了太乙公路的尽头。
坐车的大部队一路上看不见我们两个以为我们走错方向了。打电话信号不好,我们说我们到了,他们还不信,坚持说我们走错方向了。
韩队不愧是专业的登山家和登山向导。在上山前,先给我们培训了登山杖的用法,登山的步伐,用腿的方法,还有呼吸的技巧。大家听了受益匪浅。后来证明,韩队的方法的确好,登山一圈回来,很少有人感到腿酸。
爬到差不多半程时,大家停下来休息,在队伍最后面压阵的翅膀抓住时机,拍了下面这张照片。
我很早就听说从太乙峰有一条路上含鄱口,是最近的上山路但是一直没有机会体验。这一次实地走一次,果然很近,用了一个多小时,大家就都到了山顶。
下山午饭后,大家小睡片刻,开始下午课程。
按照讲义的顺序,第二篇有一讲:《CPU工厂的硬指标》,我故意将其延后,结合试验来讲。下午上课时,我先花了几分钟时间修复perf工具,然后便带领大家一起使用perf来测量CPI/IPC。
IPC的基本含义是每个时钟执行的指令数,是衡量CPU工厂效率的关键指标。在Intel的VTune工具里,有个类似的指标,叫CPI,Cycles Per Instruction,刚好是IPC的倒数。
在VTune关于CPI指标的提示里,说CPI的理论最好值是0.25,转换成IPC就是4。但我觉得这个描述过时了,需要更新。
上课的小伙伴使用我提供的geipc代码到他的强大机器上测试,果然测试出了IPC为5,证明了我的推测。
后来,还有同学在他的XEON系统上测出了IPC大于6的情况。进一步说明了VTune的提示信息亟待更新。
第二天晚上,我带着大家一起写代码,构造特别的跨行访问实例,然后使用perf record等工具进行各种测试。因为白天一起登山,彼此已经很熟悉,起初的陌生感消失,大家相互开玩笑,课堂上常常笑声一片。大家兴趣高昂,一直挑灯夜战到夜里十点。
10点后,大家一起下楼,到太乙公路上避开灯光,关闭手电筒,调整视觉,抬头看星星。白天大家还担心看不到,事实证明不然,仰望夜空,满天星斗,有的暗一些,有的很亮。
DAY 3
第三天一早,开讲第四篇:《噪声》,首先讲中断和异常的干扰,特别是顽固不化的TLB Shooting down中断,关于这个中断机制,大家还进行了一场小小的辩论,一方觉得硬件做好,另一方觉得硬件实现有无法克服的困难,必须由系统软件做。
考虑到有同学需要提前离开,所以我故意把第五篇进程间通信的内容提前来讲。使用烽火戏诸侯的故事建模,设计了两个小程序:一个叫uking,一个叫noble。诸侯可以运行很多个,uking发信息,看哪个诸侯先收到,用时多久。
经过不同环境的实测,双方通信的最快速度可以达到几十个时钟,有经验的同学觉得已经很快了。
下午三点,预定的课程内容刚好按计划结束,问答环节里,老朋友Horizon希望演示一下VTune。对于这个要求,我欣然答应,用Nano Display将试验机的小盒子界面显示到Windows上,然后打开终端窗口,准备启动VTune的图形界面。
起初,忙中出错,走错了目录,找不到合适的脚本文件。
后来,切换到/opt/intel/oneapi下,source setvars.sh,再vtune-gui,熟悉的界面出现了。
但是在配置优化项目时,VTune还是报了几个错。于是,先按VTune提示设置虚文件,又手工构建和加载了VTune的驱动。
终于VTune顺利开始采集数据,并分析数据,给出了结果。
VTune的演示不算顺利,但在紧张中仍然以成功的结果完成,也给三天两晚的研习班画上了句话。我宣布课程结束后,大家快速行动,准备返程。
大多数格友都乘车下山后,我独自返回教室,收拾东西,把带来的装备放在一起,拍照留念。
DAY 4
第四天上午,上午和韩队一起看了七彩瀑布和太乙村民国将领别墅群。吃过午饭又一起探访了基地附近的古万寿寺遗迹。在竹林中寻访了清代大学者顾贞观题写的“万寿”二字。
韩队把我送到九江站后,我找了个座位,写了下面这条朋友圈。
酝酿多年,延迟许久的“纳秒级优化训练营”终于完成了,非常感谢参加的小伙伴们,也感谢韩队的全力相助。与韩队一见如故,在基地的大桂花树下,我们相互激发,很快想出了一个新的活动计划。这便是将在国庆长假举行的《LINUX平台高级调试与优化》国庆特别版。在庐山太乙峰下安营扎寨,四天三晚,文武二“教头”通力合作,言传身教,与大家一起劳逸结合,修炼身心。
(写文章很辛苦,恳请各位读者点击“在看”,也欢迎转发)
*************************************************
正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生
扫描下方二维码或者在微信中搜索“盛格塾”小程序,可以文章和有声读物
也欢迎关注格友公众号
这篇关于太乙峰下格纳秒的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!